目錄
第1章 什麼是流水線pipeline技術
1.1 工業流水線的思路
1.2 CPU執行指令的流水線技術
第2章 流水線與軟體開發流程
2.1 軟體開發過程的劃分
2.2 傳統的非流水線的軟體開發模式:瀑布式開發
2.3 靈活開發模式:流水線開發
第3章 流水線與項目管理
第1章 什麼是流水線pipeline技術
1.1 工業流水線的思路
先以汽車裝配為例來解釋流水線的工作方式。假設裝配一輛汽車需要4個步驟:
1.沖壓:制作車身外殼和底盤等部件;
2.焊接:将沖壓成形後的各部件焊接成車身;
3.塗裝:将車身等主要部件清洗、化學處理、打磨、噴漆和烘幹;
4.總裝:将各部件(包括發動機和向外采購的零部件)組裝成車;
同時對應地需要沖壓、焊接、塗裝和總裝四個勞工。
如果不采用流水線,那麼第一輛汽車依次經過上述四個步驟裝配完成之後,下一輛汽車才開始進行裝配,最早期的工業制造就是采用的這種原始的方式。未采用流水線的原始制造方式,同一時刻隻有一輛汽車在裝配。不久之後就發現,某個時段中一輛汽車在進行裝配時,其它三個勞工處于閑置狀态,顯然這是對資源的極大浪費。
于是開始思考能有效利用資源的方法:在第一輛汽車經過沖壓進入焊接工序的時候,立刻開始進行第二輛汽車的沖壓,而不是等到第一輛汽車經過全部四個工序後才開始。之後的每一輛汽車都是在前一輛沖壓完畢後立刻進入沖壓工序,這樣在後續生産中就能夠保證四個勞工一直處于運作狀态,不會造成人員的閑置。這樣的生産方式就好似流水川流不息,是以被稱為流水線。
采用流水線的制造方式,同一時刻四輛汽車在裝配。
1.2 CPU執行指令的流水線技術

多條指令重疊進行操作的一種準并行處理實作技術。
流水線是Intel首次在486晶片中開始使用的。
在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後将一條指令分成5—6步後再由這些電路單元分别執行,這樣就能實作在一個CPU時鐘周期完成一條指令,是以提高CPU的運算速度。
經典奔騰每條整數流水線都分為四級流水,即取指令、譯碼、執行、寫回結果。浮點流水又分為八級流水。
如果沒有流水線,則必須操作完一個完整的指令後,才能操作下一條指令,在取指令時,其他單元是空閑的,同理,在執行指令時,譯碼和回寫單元是空閑的,這就是資源的浪費。
采用流水線技術,可以把執行指令分成n道流水線步驟,這樣可以并行地操作多條指令,在執行A指令時,就可以譯碼B指令,同時取C指令,這樣可以提升CPU執行指令的效率。
CPU的工作也可以大緻分為指令的擷取、解碼、運算和結果的寫入四個步驟,采用流水線設計之後,指令(好比待裝配的汽車)就可以連續不斷地進行處理。在同一個較長的時間段内,顯然擁有流水線設計的CPU能夠處理更多的指令。
第2章 流水線與軟體開發流程
2.1 軟體開發過程的劃分
把軟體的開發過程分如下的一些步驟:
- 可行性調研
- 需求調研
- 競品分析
- 産品設計
- 需求評審
- 用例設計
- 原型評審
- 設計評審
- 研發需求确認
- TC評審
- 研發排期(表結構設計、開發接口、合并代碼、自測、聯調、部署)
- 功能驗收
- 産品推廣
- 部署傳遞
軟體的功能特征的開發步驟,類似于CPU執行指令的步驟,類似安裝汽車的步驟。
軟體的功能特征,類似與CPU執行的一個個指令,類似與産線上的一台台汽車。
每個環境的功能和開發人員,相當于執行單元:取指令單元、解碼指令單元、執行指令單元等等。
如何進行軟體功能的開發就存在兩種思路:
(1)傳統的串行模式
(2)最新的靈活模式
2.2 傳統的非流水線的軟體開發模式:瀑布式開發
在瀑布開發模式下,軟體開發過程是串行的。
在計劃階段,為所有N個功能統一計劃。
在需求分析階段,為所有N個功能進行需求分析,之後全部完成,才能進入下一個階段。
在設計階段也是如此,最後,所有的N個功能都通過測試,才能進入運作維護。
2.3 靈活開發模式:流水線開發
靈活開發模式,把個複雜的功能需求,分解成一個個獨立的子功能需求,每個隻功能需求獨立開發。且子功能需求之間,各種獨立,且并行開發。類似與CPU的流水線。
這樣,軟體的功能生産就是按照流水線的方式進行,每天都有新的小的功能增量。如下圖所示。
疊代任務:就是一個個 獨立的指令,就是一個個小的、可執行的功能。
開發、測試、釋出,就是一個個CPU内部的功能單元。
可工作軟體,就是一個個CPU執行指令的結果。
在上圖中,疊代周期是一周,也就是說,每一周,都有一部分輸出。
這樣,就持續不斷的有新的功能産生,如下圖所示。

并行執行(開發)任務/功能特征的個數取決于如下幾個因素:
(1)開發流程被切分的步驟:
在每個步驟處理能力一定的情況下,子步驟越多,并行執行的子任務就越多。
(2)每個步驟的處理能力:
在子步驟數量确定的情況下,每個步驟處理的子任務越多(開發團隊的數量),并行執行的任務越多。
第3章 流水線與項目管理
在流水線軟體開發過程的基礎之上,再進一步對項目管理的其他活動進行流水線劃分。
這就是流水線項目管理。流水線項目管理中,涉及到如下的因素
(1)把軟體開發過程按照時間或邏輯的先後順序分成一個個可以獨立實施步驟。
(2)把大型的軟體功能,拆分成一個個在2周内可以完成的task
(3)把軟體項目管理過程按照時間或邏輯的先後順序分成一個個可以獨立實施步驟。
(4)複雜的項目管理活動,拆分成一個個在2周内可以完成的task。
(5)無論是拆分這個動作、還是最終的軟體功能活動,還是項目管理活動,都需要人來完成,就相當于CPU某個執行單元。
- “人”在項目中的可用性,并不是項目所決定的,而是有職能部門所決定的。
- ”人“同時為多個項目提供支援,是以,一個項目必須提前N個疊代周期與職能部門對所需要的人力資源進行預約。如果在期望的時間内,無法提供可用的人力資源(包括項目管理人員和軟體開發人員),進入流水線管道的task就會受阻。
- 提前預約,提取申請人力資源,管道式項目管理必須正視的因素,這是影響項目流水線執行的最重要的因素。
- 隻有預先配置設定資源,項目流水線才能暢通無阻的運作起來。
- 隻有有了人,才能執行項目管理活動,才能對複雜軟體的功能呢進行切分,隻有有了人,才能持續不斷的釋出的子功能。沒有人,整個流水線都會停止。