学习Digital Design and Computer Architecture一书有段时间了,终于到了最核心的环节,微架构的学习。书中罗列了3种微架构,有点混乱,网上搜了下,进一步整理。希望大家也能参考下。数字设计的精髓部分还有待掌握。
下面是3种微架构的执行timing关系图。
- Single cycle:Basicly one instruction one Cycle, and critical path more long.
- Multi cycle:one instruction many Cycle, buf critical path shorter then Single cycle.Using FSM to implement one instruction.
- Break instruction execution into multiple cycles
- One clock cycle for each major task
- Instruction Fetch
- Instruction Decode and Register Fetch
- Execution, memory address computation, or branch computation
- Memory access / R-type instruction completion
- Memory read completion
- Share hardware to simplify datapath。
- pipeline:Instruction to go through a several clock. A clock to complete an Instruction, but exception of some special exceptions Instruction.
Single Cycle
假設有一台全功能洗衣機,4項功能可以全自動做完
(1)洗衣服(20分鐘)
(2)脫水(20分鐘)
(3)烘乾(30分鐘)
(4)燙衣服(20分鐘)
這個"洗衣服的工作"必需從頭做到尾才行。
所以要收衣服,必须要等待最后流程做完。就算是只想烫下衣服,也必须4个流程走完。
Multiple Cycle
也是同樣的一台全功能洗衣機,也是一樣4個步驟。
但它會變成不是全自動的,而是你必需每隔30分鐘去看一次,
洗衣服的工作是否要進入下一個步驟
洗衣服->脫水->烘乾->燙衣服
這樣子的好處是如果有衣服不能烘或不能燙,那就可以跳過該步驟以節省時間。
但還是一樣有浪費掉的時間,因為每個步驟所花的時間也是必需一樣的。
Multiple Cycle with Pipeline
把原本的一台全功能洗衣機,變4台專職的機器
(1)專門洗衣服的機器
(2)專門脫水的機器
(3)專門烘乾的機器
(4)專門燙衣服的機器
這樣子一來,當第一批衣服一洗完拿去脫水後,第二批衣服就可以開始洗了,可以加速洗衣服的速度。
總結一下:
Single Cycle主要目的是希望所有的指令皆在一個Cycle執行完畢,所以呢,最快的指令必需等待最慢的指令。
Multi Cycle就是為了解決Single Cycle效率不夠好的情況,讓最快的指令不必去等待最慢的指令。但是通过波形图可以看到,Multi Cycle在该方面的作用适得其反,其执行速度比Single Cycle还要慢。因为虽然有时候能省一两个流程,但是把任务拆分后,每个子任务的时间是要相等的(因为是同步时序)。这样累加起来就比Single效率更低了。Multi Cycle主要是解决了分时复用昂贵资源ALU mem等。代价是要额外增加状态变量。
Pipeline主要的目的是希望在同一個時間內能執行多道指令,增加效能。转载自网络,原文链接http://stenlyho.blogspot.com/2008/07/single-cyclemulti-cycle-vs-pipeline.html