September 22, 2009http://csg.csail.mit.edu/koreaL07-1 Asynchronous Pipelines: Concurrency Issues Arvind Computer Science & Artificial Intelligence Lab.

Slides:



Advertisements
Similar presentations
BSV execution model and concurrent rule scheduling Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology February.
Advertisements

Elastic Pipelines and Basics of Multi-rule Systems Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology February.
An EHR based methodology for Concurrency management Arvind (with Asif Khan) Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology.
Constructive Computer Architecture: Multirule systems and Concurrent Execution of Rules Arvind Computer Science & Artificial Intelligence Lab. Massachusetts.
March 2007http://csg.csail.mit.edu/arvindSemantics-1 Scheduling Primitives for Bluespec Arvind Computer Science & Artificial Intelligence Lab Massachusetts.
EHRs: Designing modules with concurrent methods Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology February 27,
Computer Architecture: A Constructive Approach EHRs: Designing modules with concurrent methods Teacher: Yoav Etsion Taken (with permission) from Arvind.
Stmt FSM Richard S. Uhler Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology (based on a lecture prepared by Arvind)
Asynchronous Pipelines: Concurrency Issues Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology October 13, 2009http://csg.csail.mit.edu/koreaL12-1.
February 21, 2007http://csg.csail.mit.edu/6.375/L07-1 Bluespec-4: Architectural exploration using IP lookup Arvind Computer Science & Artificial Intelligence.
March, 2007http://csg.csail.mit.edu/arvindIPlookup-1 IP Lookup Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology.
September 24, L08-1 IP Lookup: Some subtle concurrency issues Arvind Computer Science & Artificial Intelligence Lab.
IP Lookup: Some subtle concurrency issues Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology February 22, 2011L06-1.
December 10, 2009 L29-1 The Semantics of Bluespec Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute.
December 12, 2006http://csg.csail.mit.edu/6.827/L24-1 Scheduling Primitives for Bluespec Arvind Computer Science & Artificial Intelligence Lab Massachusetts.
Pipelining combinational circuits Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology February 20, 2013http://csg.csail.mit.edu/6.375L05-1.
Constructive Computer Architecture: Guards Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology September 24, 2014.
Constructive Computer Architecture Sequential Circuits Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology
Elastic Pipelines: Concurrency Issues Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology February 28, 2011L08-1http://csg.csail.mit.edu/6.375.
Constructive Computer Architecture Sequential Circuits - 2 Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology.
Constructive Computer Architecture: Control Hazards Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology October.
February 20, 2009http://csg.csail.mit.edu/6.375L08-1 Asynchronous Pipelines: Concurrency Issues Arvind Computer Science & Artificial Intelligence Lab Massachusetts.
Modular Refinement Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology March 8,
Simple Inelastic and Folded Pipelines Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology February 14, 2011L04-1.
Computer Architecture: A Constructive Approach Pipelining combinational circuits Teacher: Yoav Etsion Taken (with permission) from Arvind et al.*, Massachusetts.
Computer Architecture: A Constructive Approach Bluespec execution model and concurrent rule scheduling Teacher: Yoav Etsion Taken (with permission) from.
October 20, 2009L14-1http://csg.csail.mit.edu/korea Concurrency and Modularity Issues in Processor pipelines Arvind Computer Science & Artificial Intelligence.
Elastic Pipelines: Concurrency Issues
EHRs: Designing modules with concurrent methods
EHRs: Designing modules with concurrent methods
Bluespec-3: A non-pipelined processor Arvind
Concurrency properties of BSV methods and rules
Bluespec-6: Modeling Processors
Folded “Combinational” circuits
Scheduling Constraints on Interface methods
Blusepc-5: Dead cycles, bubbles and Forwarding in Pipelines Arvind
Sequential Circuits Constructive Computer Architecture Arvind
Sequential Circuits: Constructive Computer Architecture
Performance Specifications
Pipelining combinational circuits
Multirule Systems and Concurrent Execution of Rules
Constructive Computer Architecture: Guards
Sequential Circuits Constructive Computer Architecture Arvind
Pipelining combinational circuits
EHR: Ephemeral History Register
Bluespec-4: Architectural exploration using IP lookup Arvind
Constructive Computer Architecture: Well formed BSV programs
Blusepc-5: Dead cycles, bubbles and Forwarding in Pipelines Arvind
Bluespec-7: Scheduling & Rule Composition
Modeling Processors: Concurrency Issues
Modules with Guarded Interfaces
Pipelining combinational circuits
Sequential Circuits - 2 Constructive Computer Architecture Arvind
Elastic Pipelines: Concurrency Issues
Bluespec-3: A non-pipelined processor Arvind
Multirule systems and Concurrent Execution of Rules
Modular Refinement - 2 Arvind
IP Lookup Arvind Computer Science & Artificial Intelligence Lab
IP Lookup: Some subtle concurrency issues
Computer Science & Artificial Intelligence Lab.
Elastic Pipelines: Concurrency Issues
Elastic Pipelines and Basics of Multi-rule Systems
Constructive Computer Architecture: Guards
Elastic Pipelines and Basics of Multi-rule Systems
Bluespec-7: Scheduling & Rule Composition
Multirule systems and Concurrent Execution of Rules
IP Lookup: Some subtle concurrency issues
Bluespec-5: Scheduling & Rule Composition
Implementing for Correct Concurrency
Constructive Computer Architecture: Well formed BSV programs
Presentation transcript:

September 22, 2009http://csg.csail.mit.edu/koreaL07-1 Asynchronous Pipelines: Concurrency Issues Arvind Computer Science & Artificial Intelligence Lab Massachusetts Institute of Technology

September 22, 2009 L Synchronous vs Asynchronous Pipelines In a synchronous pipeline: typically only one rule; the designer controls precisely which activities go on in parallel downside: The rule can get too complicated -- easy to make a mistake; difficult to make changes In an asynchronous pipeline: several smaller rules, each easy to write, easier to make changes downside: sometimes rules do not fire concurrently when they should

September 17, 2009 L Synchronous Pipeline rule sync-pipeline (True); if (inQ.notEmpty()) begin sReg1 <= Valid f1(inQ.first()); inQ.deq(); end else sReg1 <= Invalid; case (sReg1) matches tagged Valid.sx1: sReg2 <= Valid f2(sx1); tagged Invalid: sReg2 <= Invalid; case (sReg2) matches tagged Valid.sx2: outQ.enq(f3(sx2)); endrule x sReg1inQ f1f2f3 sReg2outQ

September 17, 2009 L Asynchronous pipeline Use FIFOs instead of pipeline registers x fifo1inQ f1f2f3 fifo2outQ rule stage1 (True); fifo1.enq(f1(inQ.first()); inQ.deq();endrule rule stage2 (True); fifo2.enq(f2(fifo1.first()); fifo1.deq();endrule rule stage3 (True); outQ.enq(f3(fifo2.first()); fifo2.deq();endrule Consider rules stage1 and stage2: -No conflict around inQ or fifo2. -What can we assume about enq, deq and first methods of fifo1? -What do we want? Can all three rules fire concurrently? we want the system to behave as if first < deq < enq

What behavior do we want? If inQ, fifo1 and fifo2 are not empty and fifo1, fifo2 and outQ are not full then we want all three rules to fire If inQ is empty, fifo1 and fifo2 are not empty and fifo2 and outQ are not full then we want rules stage2 and stage3 to fire … September 22, 2009 L x fifo1inQ f1f2f3 fifo2outQ

September 22, 2009 L The tension If multiple rules never fire in the same cycle then the machine can hardly be called a pipelined machine If all rules fire in parallel every cycle when they are enabled, then wrong results can be produced

September 22, 2009 L some insight into Concurrent rule firing Rules HW RiRjRk clocks rule steps Ri Rj Rk There are more intermediate states in the rule semantics (a state after each rule step) In the HW, states change only at clock edges

September 22, 2009 L Parallel execution reorders reads and writes Rules HW clocks rule steps In the rule semantics, each rule sees (reads) the effects (writes) of previous rules In the HW, rules only see the effects from previous clocks, and only affect subsequent clocks readswritesreadswritesreadswritesreadswritesreadswrites readswritesreadswrites

September 22, 2009 L Correctness Rules HW RiRjRk clocks rule steps Ri Rj Rk Rules are allowed to fire in parallel only if the net state change is equivalent to sequential rule execution Consequence: the HW can never reach a state unexpected in the rule semantics

September 22, 2009 L The compiler issue Can the compiler detect all the conflicting conditions? Important for correctness Does the compiler detect conflicts that do not exist in reality? False positives lower the performance The main reason is that sometimes the compiler cannot detect under what conditions the two rules are mutually exclusive or conflict free What can the user specify easily? Rule priorities to resolve nondeterministic choice yes In many situations the correctness of the design is not enough; the design is not done unless the performance goals are met

Implementing FIFOs September 22, 2009http://csg.csail.mit.edu/koreaL07-11

February 17, 2009 L module mkFIFO1 (FIFO#(t)); Reg#(t) data <- mkRegU(); Reg#(Bool) full <- mkReg(False); method Action enq(t x) if (!full); full <= True; data <= x; endmethod method Action deq() if (full); full <= False; endmethod method t first() if (full); return (data); endmethod method Action clear(); full <= False; endmethod endmodule One-Element FIFO enq and deq cannot even be enabled together much less fire concurrently! n not empty not full rdy enab rdy enab enq deq FIFO module The functionality we want is as if deq “happens” before enq; if deq does not happen then enq behaves normally Can we build a FIFO with appropriate concurrency

February 17, 2009 L module mkFIFO (FIFO#(t)); Reg#(t) d0 <- mkRegU(); Reg#(Bool) v0 <- mkReg(False); Reg#(t) d1 <- mkRegU(); Reg#(Bool) v1 <- mkReg(False); method Action enq(t x) if (!v1); if v0 then begin d1 <= x; v1 <= True; end else begin d0 <= x; v0 <= True; end endmethod method Action deq() if (v0); if v1 then begin d0 <= d1; v1 <= False; end else begin v0 <= False; end endmethod method t first() if (v0); return d0; endmethod method Action clear(); v0<= False; v1 <= False; endmethod endmodule Two-Element FIFO Assume, if there is only one element in the FIFO it resides in d0 d1 d0 enq and deq can be enabled together and they do not conflict A compiler may not succeed in doing such analysis

February 17, 2009 L module mkFIFO (FIFO#(t)); Reg#(t) d0 <- mkRegU(); Reg#(Bool) v0 <- mkReg(False); Reg#(t) d1 <- mkRegU(); Reg#(Bool) v1 <- mkReg(False); method Action enq(t x) if (!v1); v0 <= True; v1 <= v0; if v0 then d1 <= x; else d0 <= x; endmethod method Action deq() if (v0); v1 <= False; v0 <= v1; d0 <= d1; endmethod method t first() if (v0); return d0; endmethod method Action clear(); v0<= False; v1 <= False; endmethod endmodule Two-Element FIFO another version Assume, if there is only one element in the FIFO it resides in d0 d1 d0 enq and deq can be enabled together but apparently conflict Compiler has no chance to be able to deduce the concurrency of enq and deq

February 17, 2009 L RWire to rescue interface RWire#(type t); method Action wset(t x); method Maybe#(t) wget(); endinterface Like a register in that you can read and write it but unlike a register - read happens after write - data disappears in the next cycle RWires can break the atomicity of a rule if not used properly

February 17, 2009 L module mkLFIFO1 (FIFO#(t)); Reg#(t) data <- mkRegU(); Reg#(Bool) full <- mkReg(False); RWire#(void) deqEN <- mkRWire(); Bool deqp = isValid (deqEN.wget())); method Action enq(t x) if (!full || deqp); full <= True; data <= x; endmethod method Action deq() if (full); full <= False; deqEN.wset(?); endmethod method t first() if (full); return (data); endmethod method Action clear(); full <= False; endmethod endmodule One-Element Pipeline FIFO not empty not full rdy enab rdy enab enq deq FIFO module or !full This works correctly in both cases (fifo full and fifo empty). first < enq deq < enq enq < clear deq < clear

September 22, 2009 L FIFOs Ordinary one element FIFO deq & enq conflict – won’t do Pipeline FIFO first < deq < enq < clear Bypass FIFO enq < first < deq < clear

Takeaway FIFOs with concurrent operations are quite difficult to design, though the amount of hardware involved is small FIFOs with appropriate properties are in the BSV library Various FIFOs affect performance but not correctness For performance, concentrate on high-level design and then search for modules with appropriate properties September 22, 2009 L

IP lookup next time September 22, 2009http://csg.csail.mit.edu/koreaL07-19