This document provides an overview of the Jupiter EBOX (Execution Box) and IBOX (Instruction Box), focusing on how the IBOX handles the PDP-10 instruction set to enable efficient prefetching.
Key points:
PDP-10 Instruction Set Regularity: The PDP-10 instruction set is highly regular, comprising over 400 user-mode instructions categorized into a small number of logical classes. Instructions are further divided into six categories based on their memory operand requirements: immediate, single memory operand (fetch), single memory store, double memory operand (fetch), double memory store, and complex instructions.
Jump and Skip Instructions:
- Jump instructions (unconditional and conditional) modify the Program Counter (PC). Most conditional jumps are "data-directed," meaning they decide whether to jump based on the value in an AC register, often testing for proximity to zero.
- Skip instructions (unconditional and conditional) change the PC to +2. Conditional skips are more complex than jumps, involving comparisons or tests.
The IBOX's Role and Challenges:
- Primary Function: The IBOX is responsible for prefetching instructions and operands for the EBOX or FPA (Floating Point Accelerator) to execute.
- Main Challenge: The presence of conditional jump and skip instructions makes prefetching difficult, as the IBOX needs to predict the program flow.
- Jupiter IBOX's Approach: Instead of traditional branch prediction or pausing, the Jupiter IBOX aims to determine what the EBOX will do with conditional instructions by performing the necessary jump/skip tests itself. While not 100% accurate (due to potential EBOX modifications to AC/C(EA)), this approach aims to improve pipeline performance.
- Other IBOX Functions:
- Performing all Effective Address (EA) calculations, including indirect address chains.
- Fetching instruction operands and performing writability tests.
- Setting up specific "complex" instructions.
- Servicing requests from the EBOX (e.g., loading a new PC).
Operand Setup for Instructions:
- Simple Instructions: For most instructions, the IBOX computes the effective address (EA), fetches operands, and performs write-tests based on the instruction's memory operand class.
- Complex Instructions: A specific set of "complex" instructions (e.g., LUUO, EXTEND, BLT, various stack operations, privileged I/O) require specialized handling by the IBOX. Many of these necessitate the IBOX to stop prefetching and wait for the EBOX to complete execution due to potential multiple memory writes or non-standard address interpretation.
In essence, the document details the design considerations for the Jupiter IBOX, particularly its strategy for managing the complexities of the PDP-10 instruction set, especially conditional branches and memory operations, to ensure efficient instruction and operand prefetching for a pipelined processor.