《计算机组织与设计软硬体介面ppt课件》由会员分享,可在线阅读,更多相关《计算机组织与设计软硬体介面ppt课件(23页珍藏版)》请在金锄头文库上搜索。
1、第 二 章 效能的角色,效能 (Performance),測量、報告、與結論 做出明智的抉擇 看穿市場銷售的伎倆 各個會影響效能的因素: 對於不同的程式,為何有些硬體的效能比其他的好? 不同程式會有不同的效能 硬體如何影響系統的效能? 我們是否需要一個新的機器或新的作業系統 指令集如何影響效能,哪一架飛機有最好的效能?,飛機 載客量 續航力 (mi) 速度 (mph) 波音 737-100101630598 波音 7474704150610 BAC/Sud Concorde13240001350 道格拉斯 DC-8-501468720544,Concorde 比 747 快多少? =反應時間(
2、response time)的問題 747的載客量 比 道格拉斯DC-8 多多少? = 生產量(throughput)的問題,電腦效能:時間、時間、時間,反應時間(response time) 等待多久才執行我的工作? 等待多久才執行一個工作? 在查詢資料庫時,我要等多久? 生產量(throughput) 機器一次可以執行多少工作 什麼是平均執行率(average execution rate)? 一次完成多少工作? 如果換上一個新的處理器來升級電腦,有什麼增進呢? 生產量呢? 如果實驗室多買一台新的電腦,又是如何呢?,執行時間,Elapsed time(實耗時間) 完成一件工作所花的全部時間
3、(包含:磁碟、記憶體存取、I/O.等) 使用者親身體驗到的是elapsed time,但它並不適合用來做比較 CPU time(CPU時間) 不包括I/O時間和執行其他程式的時間 CPU time可在分為系統時間(system time)和使用者時間(user time) 重點:CPU時間 真正執行程式中一行一行指令所花的時間,效能的定義,對於在機器 X上面執行某些程式: 效能 X = 1 / 執行時間 X 機器X 比 Y 快 n 倍 : 效能 X / 效能 Y = n 問題 : 機器A執行程式花了20秒 機器B執行相同的程式花了25秒,時脈週期,以時脈週期為單位來表示執行時間: 時脈“tic
4、k”指示硬體何時該開始動作: 時脈週期時間(clock time) = 一個完整的時脈週期(如2ns) = 每個時脈週期花費幾秒 時脈率或時脈速率(clock rate或frequency) = (1 Hz. = 1 cycle/sec) 時脈率200 Mhz. 為 時脈週期時間,如何改進效能,所以為了改善效能,你能做的有:,_ 程式需要的時脈週期數, 或_ 時脈週期時間 , 或另一種說法 _ 時脈率,一個程式需要多少時脈週期?,可以假設時脈週期的數目 常數 * 指令數目? 這個假設是錯誤的, 不同的指令在不同的電腦上有不同的時脈週期數目 為什麼? 暗示:還記得這些機器指令嗎,這不是C語言的程
5、式碼,time,不同的指令有不同的時脈週期數目,乘法比加法花費更多的時間 浮點運算比整數運算耗時 存取記憶體比存取暫存器耗時 重點:改變時脈週期時間,通常會改變不同指令所需的時脈週期數目,time,範例,現在我們有一個程式在電腦A上執行需要10秒,電腦A的時脈率為400MHZ。我們試著幫助一個電腦設計者去建構一台新的機器B,好讓執行我們的程式只需6秒。這個設計者可以使用新的(也許更貴的)技術來改善時脈率,但是他告訴我們這項改變卻會影響CPU中的其他部分的設計,而導致機器B對於想同的程式需要1.2倍於機器A的時脈週期數目。所以我們應該告訴設計者時脈率應提升到多少才能達成我們的目標? 別緊張,這利
6、用一些基本的原理就可以算出來了。,現在我們對於時脈的瞭解,給定一個程式需要: 一些指令數目 一些時脈週期數目 一些秒數 下面這些字彙我們已講解過他們的意義: 時脈週期時間(cycle time):seconds per cycle 時脈率(clock rate):cycles per second CPI: cycles per instruction MIPS (millions of instructions per second)每秒的百萬指令數目,效能,執行時間決定效能好壞 有任何變數和效能意義相同嗎? # 執行一個程式花費多少時脈? # 一個程式有多少指令? # 一秒有幾個時脈? 平
7、均一個指令多少時脈? 平均一秒有幾個指令? 陷阱:想想看這些能象徵效能的變數中的其中一個是否就真的能代表效能。,CPI範例,假設我們要製作兩個相同指令集的架構instruction set architecture (ISA) 對於一些程式來說 機器A的時脈週期時間為10ns,CPI為2.0 機器B的時脈週期時間為20ns,CPI為1.2 哪一台機器比較快,快多少? 如果兩台機器有相同的ISA,那麼下列那一項永遠相等? 時脈率、CPI、執行時間、指令的數目、MIPS,關於指令的範例,編譯程式設計人員想要在兩套程式碼之間作選擇,根據硬體的製作,總共有三種不同型態的指令:種類A、種類B、種類C,分
8、別各需要1、2、3的時脈週期數。 第一段程式碼有:2個種類A的指令、1個種類B的指令、2個種類 C的指令 第二段程式碼有:4個種類A的指令、1個種類B的指令、1個種類 C的指令。 哪一段程式碼比較快,快多少? 他們的CPI值又各為多少?,關於MIPS的範例,現有兩個編譯器其時脈速率為100MHZ,給定一台機器,和上例類似此機器一樣有三種型態的指令:種類A、種類B、種類C ,分別各需要1、2、3的時脈週期數。這兩個編譯器被用來製作軟體。 第一個編譯器製作出的程式碼:使用5百萬個種類A的指令、1百萬個種類B的指令、1百萬個種類C的指令。 第二個編譯器製作出的程式碼:使用1千萬個種類A的指令、1百萬
9、個種類B的指令、1百萬個種類C的指令。 根據MIPS ,哪一段程式碼比較快,快多少? 根據執行時間,哪一段程式碼比較快,快多少?,效能評估程式(benchmark),作為評效效能最好的工具,就是真正的應用軟體。 工作量(workload) 各種應用軟體:編譯器/編輯器、科學計算軟體、圖形軟體等 小的評估程式 對於設計者比較好用 比較容易標準化 可能會被誤用 SPEC (System Performance Evaluation Cooperative) 外面公司認同這些程式及輸入。 仍然可能被誤用 評定效能的指標,SPEC 89,兩種編譯器的效能比,其中一種為增強型,SPEC 95,SPEC
10、95,將時脈速率加倍是否能將效能提升兩倍 一個時脈速率較低的機器能獲得較高的效能嗎?,Amdahl定律,改進後的執行時間 範例: 假設一個程式在某台機器上要執行100秒,而乘法運算就佔了80秒,假設我們想讓程式變成現在的4倍快,試問乘法部分需改善多少才能達到要求? 那如果要到達5倍快,要如何做? 原則:讓常出現的部分加快,範例,假設我們加速一台機器,使得其浮點運算變成5倍快。如果在加速前一些效能評估程式測試此程式的執行時間為10秒,那麼若只花5秒來執行浮點運算程式,則加速(speedup)為多少? 假如我們希望達到3倍的加速,那麼浮點運算的執行時間應該為多少?,記住,不同的程式可能會得到不同的效能 執行時間是評估效能最牢靠的方式 從下面的方法來提升某個架構的效能: 提升時脈速率 改善處理器架構,如:低的CPI 加強編譯器以產生較低的CPI或較少的指令數目。 陷阱:藉由改善機器某方面的特性,就預期可以在整體效能方面得到相同比例的提升。 記得,不要永遠相信你從書上所讀到的東西。,