Hardware Design Patterns Notes Lecture #2 3 Sept 2009 Note: Scribing will be assigned a head of time. terminology: "transaction" -> atomic action/unit of work (like an instruction in a processor, though if you remove interrupts you can define bigger instruction windows as a single transaction) call it "transaction streams", instead of control streams? (how transactions are strung together) "network" implies shared resources, point to point isn't a network. controller types: single-cycle controllers vs. threaded controllers vs. pipelined controllers (these are exclusive) multiple rationales behind each controller include things like power, but also quality of design tools can affect which type to choose too! classic VLIW -> microcoded controller practical VLIW -> in-order pipeline controller size of "transactions" can affect pattern/implmentation threaded pipeline -> talk about different grains of threading? threaded pipeline involves multiplexing different streams onto a execution pipeline, and arbitrating transactions and checking for hazards combine other lower-level controllers into a threaded pipeline, so a threaded controller is like an arbiter of other controllers where do transaction streams come from? program counters (keep doing it until told to do something else) wait on input/queue (don't do anything unless told to) multiple queues -> arbitration -> single transaction (state-ful arbitration? not necessarily easy to decompose) where does data-flow machine fit? spatial data-flow good solution when pretty big transactions and tend to do successive transactions that are similar (otherwise waves create structural hazards) to create high throughput processor type -> split to control/data path More terminology: "memory"-> something that is indexed. store buffer: inside memory path data connector. "connectors"-> how to connect components (ie, how controller is connected to the data path). connector is separate from network connector is interactions between components, perhaps network is more general case? connector is dependent on the components and implicitly point to point (a link), but a network could be switched out. exampe: Control-(<-Connector->)-Network-(<-Connector->)-Control For Next Time: Show & Tell. Some diagram of some design and put onto a single slide. then use whiteboard to say how you think it fits. No programmable general purpose processors. perhaps a whole dedicated chip (e.g., H.264 decoder).