Transactors - University of California, Berkeley
Download
Report
Transcript Transactors - University of California, Berkeley
A Shared Memory Microblaze
Manycore Multiprocessor
Murali Vijayaraghavan
[email protected]
MIT Computer Science and Artificial Intelligence
Laboratory
RAMP Retreat, UC Berkeley,
January 11, 2007
Why? A Hardware Emulator for InfiniCore
InfiniCore is a homogeneous manycore research
processor under development at MIT
Designed to support both general-purpose computation
and high-performance embedded apps
Lots of small cores on one chip
– Target is 1K 64-bit cores at 32nm technology node (2012?)
InfiniCore has completely new software stack (new OS,
new parallel virtual machines)
=> Essential to have fast platform for software
development
But also, want to help develop more RAMP infrastructure
components in the memory system
Goals for First Version
Design a distributed uncached shared memory system
containing Microblaze cores
– Microblaze OK to get going and has high density, but will
eventually migrate cores to new InfiniCore ISA
– An RTL model but timing doesn’t necessarily match target
No support for caches: An on-chip network connecting
on-chip scratchpad memories and off-chip DRAM.
Support parallel synchronization primitives.
Map & run MIT bthreads (a stripped down version of
pthreads sufficient to run many parallel applications)
Suitable for experiments in embedded manycore
application mapping
Caveats
This is very preliminary work
Not everything is worked out
Implements small fraction of Infinicore’s functionality
– This is not InfiniCore…
One Tile
LMB Inst Bus
To DRAM
LMB Data Bus
mblaze
core
To Router
Memory Interface
From DRAM
From Router
Local Data Local Inst
Scratchpad Scratchpad
(in BRAM) (in BRAM)
2-D Array of Tiles on one BEE2 FPGA
DRAM
Tile
DRAM
DRAM
DRAM
Network
Load-Store network, fixed size (header + 32 bits)
messages
Separate Request and Reply networks
Static dimension-ordered routing
– Route in one dimension first, then route in the other
Flow control in the routers
Design tools
Xilinx IP cores for Microblaze core
BEE2 DDR2 controller core for DRAM controller
Rest of the code in Bluespec
Current status
Designed Memory interface and Router
Stubs written in Bluespec to encapsulate interfaces
– LMB buses
– DDR2 controller interfaces
– BRAM
Finished interconnecting components
In Progress – Hardware synchronization
Atomic read-modify-write instructions using PUT and GET
instructions in Microblaze ISA and design custom FSL core (in
bluespec)
Rest of the design is almost the same
put
mBlaze
core
Atomic
operation core
(FSL core)
Local
Memory
Interface
Remote
Memory
Interface
get
Lock for
Read-Modify
-Write
Memory
Future version plans:
Load, store buffers & caches
Interaction of load/stores with synchronization
instructions
– Fences before atomic memory operation
Caches
– Microblaze core’s caches with InfiniCore hardware/software
coherence protocol