configurable, reconfigurable, and run-time reconfigurable computing
DESCRIPTION
Configurable, reconfigurable, and run-time reconfigurable computing. Outline. Introduction Configurable Reconfigurable Run-time reconfigurable Motivating example Tools Software compilers for configurable/reconfigurable systems Multiprocessor complications. Introduction. - PowerPoint PPT PresentationTRANSCRIPT
Configurable, reconfigurable, and run-
time reconfigurable computing
Outline
1. Introduction– Configurable– Reconfigurable– Run-time reconfigurable
2. Motivating example
3. Tools
4. Software compilers for configurable/reconfigurable systems
5. Multiprocessor complications
Modular Design of Configurable Multiprocessor Systems
Introduction
Modular Design of Configurable Multiprocessor Systems
http://en.wikipedia.org/wiki/Knapsack_problem
Which boxes should be chosen to maximize the amount of money while still keeping the overall weight under 15 kg? A multi dimensional problem could consider the density or dimensions of the boxes, the latter a typical packing problem.
(The solution in this case is to choose all of the boxes besides the green one.)
Example of a one-dimensional (constraint) knapsack problem:
Configuration
• Configurable solution:
1. Investigate the best set of boxes to take
2. Take them
3. No more thinking about boxes
• REconfigurable solution:
1. Investigate the best set of boxes to take
2. Take them for a long time
3. Stop what I’m doing and change everything in my backpack
• RUN TIME reconfigurable solution:
1. While walking, take the boxes I need and switch for the boxes I don’t need right now. This cost me some time to reconfigure the items in my backpack while walking.
Modular Design of Configurable Multiprocessor Systems
Typical system design flowPower? Area?
Speed?
How can I quickly explore the design architecture and validate it early?
Which CPU?
Which device?Functionality?
Cost?
What are the partition trade off’s & how do I
verify them?
HW
SW
Spec
Project Specification
HDLsHW
ready
C/ C++
Codesign environment
Software-compiled system design flowPower? Area?
Speed?
Which CPU?
Which device?Functionality?
Cost?
What are the partition trade off’s & how do I
verify them?
Project Specification
Design & VerifySpecify & Verify
DS
M
Spec
HW
Compile & Verify
SystemC, Handel-C
C/ C++SWP
AL
DS
M
DS
M
DS
M
DS
M
How can I quickly explore the design architecture and validate it early?
What is the essential design question?
• MAIN QUESTION: How do we make practical systems (large) and meet time-to-market window (small)?
• ANSWER: Comprehensive co-design tools
Modular Design of Configurable Multiprocessor Systems
Motivating Example
Motivating Example
• Congratulations! You are making a cellular phone.• There are many design constraints:
– Finite chip area– Finite power consumption– Finite memory (registers, cache, RAM, disk)– Real-time requirements for tasks
• There are many features:– Camera– Phonebook– Encryption/decryption– DSP– …
Modular Design of Configurable Multiprocessor Systems
How do we do co-design for this project?
• We must make software and hardware for our beloved phone.• Which software segments should be implemented in hardware?• Do we add one more processor and bus connection, or dedicate
that area to a custom instruction?• We are OPTIMIZING• This is decision problem is also known as the “Knapsack
problem” and sometime the “assignment algorithm”, and computers can solve this faster than humans, given a complete and formal problem specification.
Modular Design of Configurable Multiprocessor Systems
Tools
Real Configurable System Tools
• System level co-design fromspecification to direct implementation
– Profiling– Partitioning & trade-off analysis– Co-verification & co-simulation– Higher-level language (HLL) synthesis
direct to EDIF or RTL
• Software-compiled system design– Best time-to-market– Fastest simulation times … VERY FAST– HW/ SW partitioning solution– Seamless HW & SW verification– Reduces cost, risk & time of design– Best QoR & Quality of Design
Celoxica
Real Configurable System Tools
Modular Design of Configurable Multiprocessor Systems
Dimond 2004
Real Configurable System Tools
Modular Design of Configurable Multiprocessor Systems
CoWare Processor Designer
Real Configurable System Tools
Modular Design of Configurable Multiprocessor Systems
Tensilica
Tradeoffs
Modular Design of Configurable Multiprocessor Systems
Tensilica
Tradeoffs
Modular Design of Configurable Multiprocessor Systems
Configurable processors
Modular Design of Configurable Multiprocessor Systems
Configurable processors
Modular Design of Configurable Multiprocessor Systems
From register file to configurable block
Configurable processors
Modular Design of Configurable Multiprocessor Systems
Stall for reconfigurationOr maybestall during execution
Configurable processors
Modular Design of Configurable Multiprocessor Systems
Not realistic
Techniques
• Many techniques for finding what to implement as hardware:– Atasu et al. (DAC 03, CODES 05)– Biswas et al. (DATE 05), Cong et al. (FPGA 04)– Clark et al. (MICRO 03, HOT CHIPS 04)– Goodwin and Petkov (CASES 03)– Sun et al. (ICCAD 03), Yu et al. (CASES 04)– Many more…
• This is an NP-hard problem equivalent to the “largest common sub-graph identification” problem
Modular Design of Configurable Multiprocessor Systems
Software compilers for configurable/reconfigurable
systems
What do we want from our compiler?
• Make it easy to:– Add instructions to my processor model– Check if my model will meet my requirements (simulation/
profiling)– Optimize the generated code for small size and fast speed– Compile code on my PC to run on my phone (retargetable)
• Hide the details of anything I don’t care about:– Break the compiler into frond end, middle part, and a
backend
Modular Design of Configurable Multiprocessor Systems
What toys do we need?
• Compiler (front-middle-backend), debugger, simulator, profiler, assembler, linker, operating system, FPGA
Modular Design of Configurable Multiprocessor Systems
What are some common compilers?
• GCC (Java, Ada, C, C++, has open-MP, popular, optimizing)• LCC (Small code size)• Trimaran• MIMOLA• RECORD• CoSy• LLVM
Modular Design of Configurable Multiprocessor Systems
Multiprocessor complications
Modular Design of Configurable Multiprocessor Systems
Configurable Interconnect Design Flow
Graphical User Interface
GenerateSave
API
UserrequirementsM
SSystem
Generator
System CreatorInterconnection
system
VHDL Docs
Modular Design of Configurable Multiprocessor Systems
WISHBONE Datasheet
• WISHBONE specification requires that each component has a datasheet
Modular Design of Configurable Multiprocessor Systems
Example from WISHBONE B.3
Network Specification
Modular Design of Configurable Multiprocessor Systems
Shared Bus
PE1Add 010
PE2Add 011
Mem AAdd 111
Mem BAdd 001
Shared Bus
PE3Add 010
PE4Add 011
Mem CAdd 111
Mem DAdd 001
1 0 1 0
DataFlow2DataFlow1
PE5
DataFlow1 DataFlow2DataFlow2DataFlow1
LED 13
PE1 Load A, invert on cycle 1PE2 load BPE1 send APE2 add A+BPE2 send A+B to PE5
PE3 Load C, invert on cycle 1PE4 load DPE3 send CPE4 add C+DPE4 send C+D to PE5
PE5 compare A+B & C+D
If A+B < C+D à LEDG0If A+B = C+D à LEDG1If A+B > C+D à LEDG2
Example Interconnect
Modular Design of Configurable Multiprocessor Systems
P3P6P4 P5
M0 M0 M0
P7
M0
P8
M0
Shared Bus Crossbar
M3M2M1M0
S1S0
S0
MEM9
S1
MEM11
S0 S0
MEM10
S1S0
M0 M1
First;Add 1 to M9
Second;Add 1 to M9
Third;Add 1 to M9
Fourth;Add 1 to M9;
Saves number in M11
Checking when data in M11 not equal to Zero;
When data != 0 then adds 1 to it and saves number
in M10
Checking when data in M10 not equal to Zero;
When data != 0 then adds 1 to it and saves number
in M10
1 2
Life looks simple at first
Modular Design of Configurable Multiprocessor Systems
But life is complicated
Modular Design of Configurable Multiprocessor Systems
Questions?
Thank You