the dispatch interface - iowa state universitywikis.ece.iastate.edu/cpre584/images/1/10/cyc05... ·...
TRANSCRIPT
The Dispatch Interface
Team Cyc05
Week - 1
Convey Platform Overview HC-1 Architecture
7/12/2010 8
“Commodity” Intel Server Convey FPGA-based coprocessor
Intel 5138 Dual Core Processor
Intel 5400 MCH
Memory Intel IO
Subsystem
Application Engine Hub
Application Engines
Memory
FPGA based Shared cache-coherent memory
Intel x86-64 Server x86-64 Linux
Direct Data Port
Convey Coprocessor
Convey PDK Reference Manual v5.2 2
2 Coprocessor Architecture
The Convey Coprocessor is made up of three major sets of components: The Application Engine Hub (AEH), the Memory Controllers (MCs) and the Application Engines (AEs). This document focuses on the Application Engine FPGAs and how they interface to the system. For a high-level system overview of coprocessor architecture, refer to the Convey Reference Manual.
Custom instructions developed for the Convey coprocessor are implemented in the Application Engines FPGAs, and the AEs are the only FPGAs that are reconfigured for different personalities. The AEs contain 4 major interfaces to the rest of the system: the dispatch interface, memory controller interface, CSR/debug interface and AE-to-AE interface. Those interfaces are described in detail later in this document.
Figure 1 – Convey HC Coprocessor Block Diagram
Application Engine Diagram
Convey PDK Reference Manual v5.2 27
Application Engine FPGAAE[n]
ScalarProcessor
MCMCMCMCMCMCMCMC(x8)
AE-AEI/F
AE[n-1]
AE[n+1]MGMT
I/FMgmt.
Processor
AE Personality
MC I/F
DispI/F
Custom Functionality
Required Convey Supplied Functionality
Optional Convey Supplied Functionality
Figure 8 – Application Engine (AE) FPGA Block Diagram
9.3.2 Dispatch Interface The dispatch interface is the hardware interface through which a host application sends coprocessor instructions to be executed by the AE. The dispatch interface receives instructions from the Application Engine Hub (AEH). Some instructions, such as MOV to and from AE registers, are handled directly in the dispatch module. Instructions intended for the custom Application Engine personality are passed to the custom personality through the signals described below. The dispatch interface also ensures that scalar data is returned to the AEH when required by the instruction.
The diagram below shows the data flow through the dispatch interface:
Convey PDK Reference Manual v5.2 28
Dispatch Interface AE Personality
inst queue
AECAES
data queuedata
ScalarProcessor
return data
inst crack
instructionCAE data
CAE inst
CAE return data
AEEM
AEGcnt
CAE inst vld
Figure 9 – Dispatch Interface Diagram
9.3.2.1 Registers The dispatch module implements both the AEC (Application Engine Control) and AES (Application Engine Status) registers defined in section 5.1.
Because the AEC register has exception masks that must be stable during the execution of custom instructions, writes to the AEC register will stall the dispatch of instructions and pend until the cae_idle signal is asserted. Likewise, since the AES register contains exception status that can be modified by the custom personality, reads of the AES register will stall dispatch and pend until cae_idle is asserted high.
9.3.2.2 Signal Interface to Custom Personality The diagram below shows the signal interface between the dispatch block and the custom AE personality. Detailed signal definitions are in section 9.3.2.10.
The Dispatch Interface
Dispatch Interface Signals
Convey PDK Reference Manual v5.2 29
Application Engine FPGA
IAS
DispatchI/F
AE Personalitycae_instr<31:0>
cae_inst_vld
cae_idle
cae_data<63:0>cae_stall
cae_exception[15:0]cae_aeg_cnt[17:0]
cae_ret_data[63:0]cae_ret_data_vld
AECAES
AEGcnt
AEG[0]...
AEG[n-1]
AEEM
Figure 10 – Dispatch Interface Signals
9.3.2.3 Instruction decode Instructions intended for the Custom Application Engine (CAE) personality are presented on the cae_inst<31:0> bus and are valid when cae_inst_vld is high. The dispatch interface asserts cae_inst_vld when the following are true:
the instruction is intended for the AE
the AE is enabled in the AEEM register
the instruction is an AEG read or write, a custom instruction or an inband fence
Data associated with the instruction is driven on the cae_data<63:0> bus and is valid on the same cycle. The personality can stall instruction dispatch by asserting cae_stall.
The dispatch module handles all reads and writes to the AEC and AES registers, as well as reads of AEGCnt. In addition, the dispatch module has an unimplemented instruction filter that drops all instructions that cannot be decoded.
The custom personality must decode AEG reads and writes, and custom instructions. In addition, the custom personality should generate an unimplemented instruction exception, by asserting cae_exception<0>, to cover all CAEP space that it does not use.
A verilog instruction decode module (instdec.v) is available in the Vadd sample program included in the PDK.
See appendix A for detailed instruction definitions.
9.3.2.3.1 Directed Instructions
Dispatch Interface Overhead
Thank You! Questions?