2008年8月1日 星期五

Single Cycle,Multi Cycle vs Pipeline



  1. Single cycle:Basicly one instruction one Cycle, and critical path more long.

  2. Multi cycle:one instruction many Cycle, buf critical path shorter then Single cycle.Using FSM to implement one instruction.


    1. Break instruction execution into multiple cycles

    2. One clock cycle for each major task


      1. Instruction Fetch

      2. Instruction Decode and Register Fetch

      3. Execution, memory address computation, or branch computation

      4. Memory access / R-type instruction completion

      5. Memory read completion

    3. Share hardware to simplify datapath。

  3. 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分鐘)

    但是在Single Cycle缺點是,每一個功能所花的時間必需一樣,所以需取最大值30分鐘,
    而且這個"洗衣服的工作"必需從頭做到尾才行。
    所以要收衣服,就是一定要30+30+30+30=120分鐘後,去收衣服才行。

  • Multiple Cycle

  • 也是同樣的一台全功能洗衣機,也是一樣4個步驟。
    但它會變成不是全自動的,而是你必需每隔30分鐘去看一次,
    洗衣服的工作是否要進入下一個步驟
    洗衣服->脫水->烘乾->燙衣服
    這樣子的好處是如果有衣服不能烘或不能燙,那就可以跳過該步驟以節省時間。
    但還是一樣有浪費掉的時間,因為每個步驟所花的時間也是必需一樣的。

  • Multiple Cycle with Pipeline

  • 把原本的一台全功能洗衣機,變4台專職的機器
    (1)專門洗衣服的機器
    (2)專門脫水的機器
    (3)專門烘乾的機器
    (4)專門燙衣服的機器
    這樣子一來,當第一批衣服一洗完拿去脫水後,第二批衣服就可以開始洗了,可以加速洗衣服的速度。


    總結一下
    Single Cycle主要目的是希望所有的指令皆在一個Cycle執行完畢,所以呢,最快的指令必需等待最慢的指令。
    Multi Cycle就是為了解決Single Cycle效率不夠好的情況,讓最快的指令不必去等待最慢的指令。
    Pipeline主要的目的是希望在同一個時間內能執行多道指令,增加效能。

    Enhancing Performance with Pipelining
    Lab2

    底下這個網頁不錯唷,有用Java做成的Single Cycle Datapath及Pipeline Datapath
    Computer Architecture Pipelined CPU Tutorial

    3 則留言:

    Create Lessons Together 提到...

    文章寫得不錯 淺顯易懂 可惜網址已經找不到了

    史丹利 提到...

    欵!對耶..不見了@@只好刪掉好了^^

    ChocoTT 提到...

    寫的很清楚!
    感謝您~