電子計算機系統

電子計算機是一種完全模仿人類的資料處理程序的計算工具
由於完成資料處理必須提供:輸入功能,儲存功能,處理功能,輸出功能
因此電子計算機的硬體組織被設計成五大部門,提供資料處理的四種基本功能,同時使用匯流排連接五大部門

計算機硬體組織五大部門
input unit(輸入單元):將輸入資料轉換成二進制形式後再儲存到主記體單元
main memory unit(主記憶體單元):所有立即要執行的程式與資料都須先儲存在此
control unit(控制單元):根據程式所描述的計算步驟,依序發出適當的control signal(控制信號)以完成資料處理
 計算步驟包括指令抓取,指令解碼,資料抓取,指令執行,回寫結果…等
arithmetic logical unit(算術邏輯運算單元):提供計算功能與register(暫存器)
計算功能能執行算術運算,ex:加減乘除…等;與邏輯運算,ex:AND,OR,NOT,大於等於小於…等
register負責提供中間結果儲存的功能
output unit(輸出單元):將二進制形式轉換成人類可接收形式並輸出
ps:
五大部門可在簡化為以下三個
中央處理器單元=control unit+arithmetic logical unit
輸入/輸出單元=input unit+ouput unit
主記憶體單元

bus(匯流排)
提供五大部門之間互相傳遞訊息功能的電子線路,分為三種:
data bus(資料匯流排):傳送資料與指令
信號是雙向性的,可由CPU傳給ram或i/o,也可從ram或i/o傳回CPU
資料線數量代表每次能同時傳送資料的Byte數,又稱為Word(字語)
ex:32bit CPU就有32條data bus,亦即每次可傳送32bit的資料
address bus(位址匯流排):傳送位址
信號是單向性,只可由CPU傳給ram或i/o
位址線的多寡決定記憶體所能設定的容量大小,n條位址線可支援2^n記憶體容量
ex:位址線每條可以傳送0或1的信號
20條就有2^20=1MB的記憶體容量
30條就有2^30=1GB的記憶體容量
control bus(控制匯流排):傳送控制信號
信號是單向性,只可由cpu傳給ram或i/o

多重bus hierarchy結構
local bus:連接cpu與cache
system bus:連接cache,memory,也有可能連接expansion bus
high-speed bus:通常連接scsi,firewire,圖像設備,網路卡
expansion bus:通常連接serial port,modem,早期會連接scsi,網路卡,…等 


電子資料處理過程
1 先將外界的資料與程式透過input unit傳送到main memory unit
2 中央處理器再開始執行程式,也就是重覆進行instruction cycle
3 最後把運算結果透過output unit顯示到外界

instruction cycle指令週期
一道指令的完整的執行過程,通常包括這5階段:
指令抓取,指令解碼,資料抓取,指令執行,回寫結果
主要是對主記體單元中的資料加以運算,並將運算結果存放在主記憶體單元中


計算機系統演進
機械式計算機
1642 加法機
1823 difference engine差分機
1834 analytical engine分析機
1890 打孔卡片閱讀機

電子機械計算器
1944 mark I(馬克1號)
使用部份機械構造與3千個relay(電磁繼電器),每秒可完成3個算術計算,採用十進位方式製作

電子計算機發展
完全使用電子零件,採用二進制方式製作,分別代表電壓值是high或low的狀態
1940年代,第一代電子計算機:
1946 ENIAC(electronic numerical integrator and calculator電子數值積分計算機)
使用1萬8千個vacuum tube(真空管),每秒可完成5千個加法計算,計算速度使用ms(毫秒)
新增特性:
使用stored program(內儲程式)的觀念
增加index register(索引暫存器)的設計

1950年代,第二代電子計算機:
1958 IBM1401
使用transistor(電晶體)為元件,計算速度使用us(微秒)
新增特性:
浮點算術硬體電路:專門用來處理實數的計算
特殊處理器:專門處理input/output unit

1960年代,第三代電子計算機:
1946 IBM360
使用IC(integrated circuit積體電路),計算速度使用ns(奈秒)
新增特性:
使用microprogram controlled(微程式控制)技術:簡化中央處理器設計的複雜度
管線作業:提昇計算效能的平行處理技術
快取記憶體:減少主記憶體存取次數

1970年代,第四代電子計算機:
1976 apple2,1981 IBM PC,…
使用VLSI(very large scale integration超大型積體電路),計算速度使用ns(奈秒)
新增特性:
使用microprocessor(微處理器)的技術:將中央處理器設計在一個矽晶片中
採用RISC(reduced instruction set computer精簡指令集架構):只提供少數常用簡單的指令當成指令集

1980年代,第五代電子計算機:
新增特性:
平行處理技術
人工智慧


計算機架構
四種電子計算機架構
也稱flynn電腦架構分類
只適用傳統的電腦系統分類
共有四大類
SISD(single instruction single data,單一指令流單一資料流)
一次執行一道指令,各指令一次處理一個資料
ps:可以使用管線作業將指令的各階段重疊
ex:范諾曼電腦
SIMD(single instruction multiple data,單一指令流多個資料流)
一次執行一道指令,各指令一次處理多個資料
ex:陳列處理器電腦,向量處理器電腦
MISD(multiple instruction single data,多個指令流單一資料流)
一次執行多道指令,各指令一次處理一個資料
電腦具多個cpu,各cpu執行不同的指令,但各cpu一次只能存取一個資料
ex:VLIW(very long instruction word,超長指令字組電腦)
MIMD(multiple instuction multiple data,多個指令流多個資料流)
一次執行多道指令,各指令一次處理多個資料
電腦具多個cpu,各cpu執行不同的指令,但各cpu一次可存取多個資料
ex:多處理器電腦,叢集

用計算模式分類
計算模式:控制機置與資料機置的組合
控制機置:計算單元執行順序的方式
資料機置:計算單元間互相交換資料的方式
計算單元:一個抽像化的功能單元,可對輸入的參數進行計算,就像指令

控制機置有
control driven(控制驅動)
根據目前執行的計算單元來指定
ex:范諾曼電腦
data driven(資料驅動),也稱availability driven(備妥驅動)
根據所需資料是否備妥,計算單元的執行順序只受限於data dependency(資料相依)
屬於平行的執行方法
ex:data flow computer
demand driven(需求驅動),也稱lazy evaluation(懶散求值)
根據計算單元所產生的結果是否需要
ex:專家系統的推論引擊
pattern driven(樣式驅動)
根據計算單元所設定的啟動模式或啟動條件是否符合
ex:類神經網路

資料機置有
shared data(共用資料)
message passing(訊息傳遞)

von neumann computer(范諾曼電腦)
此架構主要具有四個特徵
1stored program(內儲程式)的觀念:可彈性控制計算機執行,而不必在用接線方式來控制
2指令採取sequential execution(循序執行)的方式:讓硬體電路的設計較簡單,只需能夠順利執行一邊指令即可
3internal memory(內部記憶體)的設置
4採用binary system(二進制系統)的資料表示方法
屬於SISD架構

ps:
1最早由美國普林斯頓大學高等研究所的john von neumann(范諾曼)教授提出
2之後也採用此架構發展,因此第1-4代電子計算機稱為von neumann computer
3也稱為stored program machine(內儲程式電腦),sequential machine(循序電腦),control-flow machine(控制流程電腦)
parallel machine(平行電腦)
也稱為第五代電子計算機
常見的有:
array processor(陣列處理器電腦)
VLIW(very long instructionword machine超長指令字組電腦)
multiprocessor(多處理器電腦)
pipelined computer(管線式電腦)
super scalar machine(超純量電腦)
data-flow machine(資料流程電腦)

效能評估
中央處理器時間
程式執行時真正使用中央處理器的時間,也就是excution time(執行時間),越短表示效能越好
公式:中央處理器時間=IC*CPI*CT
CT(clock cycle time計時週期時間):由處理器時脈換算得來,也就是一個時序信號(計時週期個數)會使用的時間
ex:500Mhz表示每秒計時週期個數=500*10^6,CT=(1/500)us=(2/1000)us=2ns
ex:頻率1MHz=每秒產生1百萬(10^6)個時序信號,也就是1個時序信號只要花10^-6秒=1us(微秒),則CT=1us=10^-6sec
ex:clock rate of 1Ghz就等同於,1個時序信號使用10^-9sec=1ns(奈秒),則CT=1ns=10^-9sec
ex:200Mhz,就表示1秒產生200*10^6個信號,也就表示1個信號會花1/(200*10^6)sec=(1/200)us=5ns,CT=5ns=(1/200)*10^-6sec
 與computer organization和實作技術有關
IC(instruction count程式的指令個數)
 與ISA和翻譯器技術有關
CPI(clock cycle per instruction指令平均計時週期個數):每個指令執行時所需要的計時週期個數
 1此值越小表示執行時間越短效能越好,2依指令執行的狀況,此值會增加或減少
 與ISA和computer organization有關
ex:a指令CPI=4,b指令CPI=6,c指令CPI=8;且compilers只使用a指令30%,b指令50%,c指令20%
則CPI=(4*30%)+(6*50%)(8*20%)=5.8
CPI*IC=clock cycle count(計時週期個數)
CPI*CT=指令平均執行時間(秒)
ex1:如果IC=10,000,000 ,CT=10^-8sec ,中央處理器時間=0.25sec
則CPI=中央處理器時間/(IC*CT)=0.25/(10,000,000*10^-8)=2.5
ex2:如果IC=5 ,clock cycle count=10
則CPI=clock cycle count/IC=10/5=2
ex3:如果a的IC=4和CPI=1,b的IC=1和CPI=2,C的IC=1和CPI=3,而code由a,b,c組成
則code的IC=a的IC+b的IC+c的IC=4+1+1=6
code的clock cycle count=(a的IC*a的CPI)+(b的IC*b的CPI)+(c的IC*c的CPI)=(4*1)+(1*2)+(1*3)=9
code的CPI=clock cycle count/IC=9/6=1.5
ex4:如果CPI=4,IC=10^6,CT=5ns
中央處理器時間=4*10^6*5ns=4*5*10^-9*10^6=20*10^-3=20ms

影響IC,CPI,CT的三個不同層次
由上而下分別是:
ISA(instruction set architecture指令集架構)
computer organization(計算機組織)
implementation circuit(實作電路)

MIPS(million instructions per second每秒百萬個指令)
越高代表每秒可執行的指令越多,若CPI*CT越小則MIPS越高
公式:MIPS=IC/(中央處理器時間*10^6)=IC/(IC*CPI*CT*10^6)=1sec/(CPI*CT*10^6)=每秒計時週期個數/(CPI*10^6)
缺點:不是一個適當的評估標準,因為沒有考慮到IC這個因素
優點:直接易懂
ex:CPI=4,CT=5ns
則MIPS=1sec/CPI*CT*10^6=10^9ns/4*5ns*10^6=50
ex:CPI=1.94 ,CPU是200Mhz
則MIPS=每秒計時週期個數/(CPI*10^6)=200*10^6/1.94*10^6

MFLOPS(million floating-point operations per second每秒百萬個浮點運算)
每秒可以執行幾百萬個浮點運算,若機器有較高的MFLOPS則在浮點運算方面有較佳效率
公式:MFLOPS=浮點運算個數/執行時間(秒)*10^6
缺點:不是一個適當的評估標準,因為不是每個工作都要使用浮點運算
優點:可評估浮點運算工作的效能

定律
amdahl’s law(亞當斯定律)
原則1:針對工作的臨界部份(佔用整體時間較長的部份)進行改善
原則2:越接近整體的效能提昇上限,則報酬減少的情況越顯著
公式:b機器比a機器快n%=(b效能效能-a機器效能)/a機器效能*100
ex:b機器MIPS=172.41,a機器MIPS=156.25
則b機器比a機器快10.34%,因為(172.41-156.25)/156.25*100%=10.34%
公式:b機器比a機器快幾倍:1+n/100=a機器的執行時間/b機器的執行時間
ex:電腦a的CT=10ns,CPI=2;電腦b的CT=20ns,CPI=1.2
則電腦a比電腦b快1.2倍,因為1+n/100=電腦b的執行時間/電腦a的執行時間=((IC)*1.2*(20ns))/((IC)*1.2*(20ns))=1+20/100=1.2
公式:speedup(效能提升)=未改善前的執行時間/改善後的執行時間
  =未改善前的執行時間/(己改善部份的執行時間+未改善部份的執行時間)
  =1/(改善部分佔的執行時間比例+未改善部分佔的執行時間比例)
ex1:program執行時間100sec,20%用在multiplication,50%用在memory access,30%用在other task
假設方案1是讓multiplication比之前快4倍,則speedup=100sec/((20sec/4)+50sec+30sec)=1/((0.2/4)+0.5+0.3)=1.18
假設方案2是讓memory access比之前快2倍,則speedup=1/((0.5/2)+0.2+0.3)=1.33
假設方案1和方案2一起做,則speedup=1/((0.5/2)+(0.2/4)+0.3)=1.67
ex2:pc1的divides佔10%執行時間,而pc2將divides改良後快2倍
則pc2的speedup=1/((0.1/2)+0.9)=1.05
ex3:pc1的85%效能是記憶體負責,15%是其他負責,若使用新技術讓記憶體快10倍
則speedup=10T/((8.5T/10)+1.5T)=4.25
公式:speedup提升上限=1/未改善部份的執行時間
ex:改善部份佔的執行時間比例=R
則未改善部份佔的執行時間比例=1-R
而且speedup上限=1/(1-R)

moore’s law(摩爾定律)
對微處理器或memory chip(記憶體晶片)而言,每隔大約十八個月的週期,新的半導體製造技術,就能夠讓晶片內部的電晶體個數增加一倍,計算速度也相對提昇
用途:正視其進步速度,避免開發效能更快的技術耗時太長,導致最後完成的技術效能無法比當時的技術更佔有優勢
ps:1965年由gordon moore(高登 摩爾)提出的半導體製造技術的發展趨勢

ps:
速度時間單位
ms(millisecond毫秒)=10^-3sec=1/1000sec
us(microsecond微秒)=10^-6sec=1/1000,000sec
ns(nanosecond奈秒)=10^-9sec=1/1000,000,000sec
ps(picosecond微微秒)=10^-12sec=1/1000,000,000,000sec