計算機概論 第二版 - 國立高雄應用科技大學

Download Report

Transcript 計算機概論 第二版 - 國立高雄應用科技大學

LOGO
計算機概論
第二版
Foundations of Computer Science
Chapter 6 電腦網路
歐亞書局
6.1 簡介
網路(network)是由硬體和軟體所組成,而網路將資料從本
地端送到另一端。
網路必須要滿足一些準則。其中最重要的是效能、可靠性和
安全。
測量效能(performance),包含傳送時間和回覆時間。傳送
時間是從一端傳送訊息至另一端的時間總和。回覆時間是一
個詢問和反應之間所經過的時間。網路效能依賴著一些因素,
包含使用者的數量、傳輸媒介的種類、連結硬體的能力和軟
體的效率。
網路的可靠性(reliability)是以失敗的頻率、從失敗重新恢復
的時間以及災難中網路的強健性來評估。
網路安全(security)問題包含保護資料免於未經許可的存取、
損害與改變,以及實現從資料遺失和破壞中恢復的原則和程
序。
歐亞書局
p.138
圖 6.1 連接的方式:點對點和多點
歐亞書局
p.138
點對點連接(point-to-point connection)提供兩台裝置一條專
用的鏈結,整個鏈結的容量都保留給兩台裝置之間的傳輸使
用。多點連接(multipoint connection)也稱為多分支連接
(multidrop connection)是兩個以上的裝置共用一條鏈結。在
多點連接的環境,通訊管道的容量在空間上或者時間上是共
用的。
實體拓樸(physical topology)是指網路以何種方式佈局,有
四個基本的拓樸:網狀、星狀、匯流排和環形。
歐亞書局
p.139
圖 6.2 四種實體拓樸
歐亞書局
p.139
在網狀拓樸(mesh topology)上,每個節點都有一條專屬的
點對點鏈結連至每個節點。
在星狀拓樸(star topology)上,每個節點有一條專屬的點對
點鏈結連至唯一的中央控制器,通常也稱為集線器(hub)。
今日在高速網路最普遍的拓樸是星狀。
在匯流排拓樸(bus topology)使用多點鏈結,一條長的電纜
又稱作匯流排,扮演著像骨幹(backbone)的角色,連接在網
路上所有的節點。
環狀拓樸(ring topology)上,每個節點都有一條專屬的點對
點鏈結連接至它兩邊的節點。
歐亞書局
p.139
網路的種類
今日的網路可以被分為三大類:區域網路、廣域網路和大都
會網路。這是依照它的規模大小所劃分。
區域網路(local area network;LAN)通常是私有的且連結一
間辦公室、一棟建築物或者是校園的節點。目前區域網路的
大小限制為幾公里的範圍。區域網路的設計是為了讓個人電
腦和工作站共享資源。
歐亞書局
p.140
圖 6.3 一個被孤立的區域網路(八台電腦連至一台集線器)
歐亞書局
p.140
廣域網路(wide area network;WAN)提供長途的資料、圖片、
影像、聲音傳送,所傳送範圍可能穿越國家、大陸甚至是全
世界。
點對點廣域網路通常是一條線(像是電話線或是纜線)連接
兩個節點。骨幹廣域網路是一個由服務提供者所操作的複雜
網路,通常連接著網際網路服務提供者(ISPs)。
歐亞書局
p.141
圖 6.4 點對點廣域網路和骨幹廣域網路
歐亞書局
p.141
大都會網路(metropolitan area network;MAN)是介於區域網
路和廣域網路之間的網路。大都會網路的範圍通常是一個城
鎮或是一個城市的大小。它專門設計給需要高速網路連接,
以及終端延伸至另一個城市或是城市的其他地方的顧客。
網路是彼此連接的,當兩個或多個網路相連接時,它們變成
一個互聯網路〔internetwork 或 internet(小寫的 i)〕。路由
器(routers)是用來安排封包(訊息)在互聯網路上行走路線
的裝置。最著名的互聯網路是網際網路(Internet;大寫的 I),
協同著數十萬個彼此相連的節點。
歐亞書局
p.141
圖 6.5 互聯網路是由廣域網路、區域網路和路由器所組成
歐亞書局
p.142
大部分的終端使用者想要連上網際網路都會使用網際網路服
務提供者(Internet service providers;ISPs)的服務。ISP 是一
個組織,具有一部或多部伺服器(高效能的電腦)透過高速
網路線連接上網際網路,個別的網路使用者或小型電腦可以
透過訂定一個服務契約和付款方式連接到本地 ISP 的伺服器。
ISP 有國際服務提供者、國家服務提供者、地區服務提供者和
本地服務提供者。
歐亞書局
p.142
圖 6.6 網際網路的階級組織
歐亞書局
p.143
6.2 TCP/IP 協定組合
為了分割工作所需的服務, 網際網路已經產生一套規則稱為
協定(protocol)。操縱著今日網際網路的協定稱為 TCP/IP
協定組合(TCP/IP protocol suite)。
原先的 TCP/IP 協定組合被定義成四層:主機到網路(或鏈
結)、網際網路(網路)、傳輸和應用。不過,今日的
TCP/IP 協定組合為五階層的模型。
歐亞書局
p.143
圖 6.7 TCP/IP 協定組合
歐亞書局
p.144
圖 6.8 TCP/IP 協定組合的彼此關係
歐亞書局
p.144
6.3 階層
應用層
應用層(application layer)讓使用者,無論是人或軟體,都可
以去使用網路。應用層是網際網路的大多數使用者唯一可見
的一層。
客戶─伺服器架構(client-server architecture)是比較普遍的。
另一個架構是點對點架構(peer-to-peer architecture),則是變
得流行。
在客戶─伺服器架構中,每個應用是由兩個分離但相關程式所
組成:一個是客戶程式,另一個是伺服器程式。伺服器程式
必須一直執行;客戶程式可以只在需要的時候執行。
客戶程式和伺服器程式之間的通訊是行程對行程的通訊
(process-to-process communication)。
歐亞書局
p.144
圖 6.9 應用層的溝通
歐亞書局
p.145
應用層位址
當客戶端對伺服器送一個請求時,客戶端必須事先知道伺服
器應用層的位址。為了識別一個特定的 HTTP 網站,客戶端
使用一個通用資源定位器(Uniform Resource Locator;URL)。
伺服器的應用層位址不是為了傳遞訊息,它只是用來找出伺
服器的真正位址。
應用層位址可以幫客戶端找到在網際網路上伺服器的實體位
址。每台電腦在網際網路上都有一個位址,我們稱為邏輯位
址或 IP 位址。
伺服器應用層位址可以幫客戶端找到伺服器電腦上的 IP 位址
(IP address)。客戶端行程應當事先已經知道網域名稱伺服
器(domain name server;DNS)。
歐亞書局
p.146
圖 6.10 在應用層的位址
歐亞書局
p.146
傳輸層
傳輸層(transport layer)需負責所有訊息的行程對行程傳遞
(process-to-process delivery):邏輯的通訊是由客戶端和伺
服器的傳輸層所建立。
傳輸層負責為客戶和伺服器之間的訊息進行邏輯性傳輸。
伺服器電腦可能同時間執行好幾個行程,當訊息到達伺服器,
訊息就會被指派到正確的行程。為了讓伺服器行程得以確定,
就需要用另一個位址,稱為埠號(port number)。
歐亞書局
p.146
圖 6.11 傳輸層的通訊
歐亞書局
p.147
傳輸層的責任之一就是多工(multiplexing)與解多工
(demultiplexing)。
傳輸層透過擁塞控制(congestion control)解決在實際傳輸封
包的底層網路可能會變成擁塞,這將造成網路丟棄或遺失某
些封包。
傳輸層也實現流量控制,發送站的傳輸層可以監控接收站的
傳輸層以檢查接收者沒被收到的封包淹沒。
在訊息的傳輸過程中,它會錯誤、遺失、複製或接收順序錯
亂,傳送的傳輸層負責保證目的傳輸層收到的訊息是正確的。
前面所討論的回應系統也提供錯誤控制。
歐亞書局
p.148
圖 6.12 在傳輸層的位址
歐亞書局
p.148
在 TCP/IP 通訊協定組合裡,傳輸層的通訊協定有三個設計:
UDP、TCP、SCTP。
UDP
使用者資料封包通訊協定(User Datagram Protocol;UDP)是
三個協定中最簡單的一個。UDP 採用多工與解多工方式,也
採用在封包增加檢查和的錯誤控制類型。簡單快速正是 UDP
的優點:它攜帶的額外資訊較其他協定少。一些應用程式喜
歡使用 UDP,DNS 伺服器就是個例子。
UDP 被視為是非連接式協定(connectionless protocol),因為
它不提供在單一訊息之封包間的邏輯連接。
歐亞書局
p.149
TCP
傳輸控制通訊協定(Transmission Control Protocol;TCP)是
一個支援傳輸層全部責任的協定,然而它的效率不像 UDP 那
麼快。TCP 使用序號、回應編號及檢查和,它也在傳輸者這
端使用緩衝記憶體。這些措施的結合提供了多工、解多工、
流程控制、擁塞控制和錯誤控制。
TCP 被視為連接式協定(connection-oriented protocol),因為
它提供在兩個傳輸層之間的邏輯連接。
TCP 對於資料傳輸是完美的傳輸層協定,它卻不適合用在即
時的音訊或視訊傳輸。
歐亞書局
p.149
SCTP
串流控制傳輸協定(Stream Control Transmission Protocol;
SCTP)是一個新網路服務協定。
網路層
網路層(network layer)負責來源端至目的端的封包傳遞,網
路層保證每個封包從它的起始點到達它最終的目的地。
網路層負責將個別封包從來源主機傳送到目的地主機。
網路層有一個特殊的責任:選擇路徑(routing)。選擇路徑的
意思是決定封包的部分路徑或全部路徑。選擇路徑是每個路
由器決定的。
路由器是如何更新它的路由表呢?這是由其他協定完成的,
即路由協定。路由協定送出它們擁有的訊息給網際網路上全
部的路由器來更新它們的路徑。
歐亞書局
p.150
圖 6.13 在網路層的位址
歐亞書局
p.150
網路層協定
在 TCP/IP 協定組合裡,網路層的主要協定是網際網路協定
(Internet Protocol;IP)。世界上的每部電腦和路由器將由 32
位元的 IP 位址來識別,此 IP 位址以點十進位記法(dotted
decimal notation)表示。這個表示法將 32 位元的位址劃分為
四個 8 位元的區塊,每個區塊以十進制 0 到 255 表示,並以
三個點來分隔區塊。
IP 提供盡力的服務(best-effort service)。它不保證封包抵達
時沒有錯誤或依寄送者想要的順序到達,甚至不保證任何封
包被傳遞:封包可能永遠遺失。
歐亞書局
p.151
圖 6.14 在網路層的選擇路徑
歐亞書局
p.152
網際網路控制訊息協定(Internet Control Message Protocol;
ICMP)可以回報來源電腦一些錯誤資訊。
資料鏈結層
從一個節點傳送到另一個節點(節點可以是一部電腦或路由
器)是由資料鏈結層(data link layer)負責。
資料鏈結層是負責點對點的資料框傳送。
歐亞書局
p.153
圖 6.15 在資料鏈結層的連接
歐亞書局
p.154
圖 6.16 在資料鏈結層的位址
歐亞書局
p.154
和 IP 位址不同,在資料鏈結層裡位址不能被通用,每個資料
鏈結層可能有不同的位址格式和大小。乙太協定(Ethernet
protocol)是現今最普遍使用的區域網路,使用 48 位元的位址,
通常寫成十六進位格式。
資料鏈結層位址通常稱作實體位址(physical addresses)或媒
體存取控制層位址(media access control (MAC) addresses)位
址。
歐亞書局
p.154
實體層
實體層(physical layer)協調著在實體媒介傳送位元串流中所
需要的函式。注意,在實體層不需要位址,其以廣播方式傳
播。只要訊號不濾除,一個裝置所送出的訊號會被與其連接
的其他裝置所接收。
圖 6.17 實體層的責任
歐亞書局
p.155
圖 6.18 在網際網路裡處理的四個層次
歐亞書局
p.156
在應用層裡,行程交換訊息;在傳輸層裡,資料的單位為一
個區段(segment;TCP)、一個使用者資料片(user datagram;
UDP)或是一個封包(packet;SCTP);在網路層裡,資料
單位是資料片(data gram);在資料鏈結層裡,資料單位是
資料框(frame);最後,在實體層裡,資料單位是位元。
圖 6.19 呈現各層的另一種觀點:封裝(encapsulation)。在每
層中,標頭(header)或是尾部(trailer)可加到資料單位裡。
歐亞書局
p.156
圖 6.19 使用 TCP/IP 模型交換
歐亞書局
p.156
6.4 網際網路的應用
電子郵件
要送一封電子郵件(electronic mail;e-mail)時,會執行使用
者代理器(user agent;UA)來準備郵件訊息,然後使用一個
訊息傳送代理器(message transfer agent;MTA)將郵件送到
電子郵件伺服器上;要領取郵件時會執行另一個稱為訊息存
取代理器程式(message access agent;MAA)。
歐亞書局
p.157
圖 6.20 電子郵件架構
歐亞書局
p.158
有兩個經常被使用的電子郵件協定:一個是網路郵局協定第
三版(POP3)、另一個是網際網路郵件存取協定(IMAP)。
POP
網路郵局協定(Post Office Protocol;POP)很簡單但是功能
有限。網路郵局協定的客戶軟體安裝在接收者的電腦上,而
伺服器軟體則是安裝在電子郵件伺服器上。
IMAP
網際網路郵件存取協定(Internet Mail Access Protocol;IMAP)
具有更多的特性且能力也更複雜。
歐亞書局
p.159
一個電子郵件系統需要有唯一的定址系統來傳遞郵件,簡單
郵件傳送協定所使用的定址系統包含兩個部分:區域部分和
網域名稱,兩者之間用@符號做為區隔。
區域部分定義使用者信箱的名稱,亦即用來存放使用者郵件
的地方。
位址的第二部分是對應某個網址的名稱。一個組織經常有多
個主機來送收電子郵件,指定給每個郵件伺服器的網域名稱
(domain name)是來自一個通用的命名系統稱為網域命名系
統。
歐亞書局
p.160
圖 6.21 電子郵件位址的組成
歐亞書局
p.160
多功能網際網路郵件擴展
多功能網際網路郵件擴展(Multipurpose Internet Mail
Extension;MIME)是一個增補的協定,讓非 ASCII 字元資料
能夠透過 SMTP 來傳輸。MIME 並不是一個協定,因此不能
取代 SMTP,它只是 SMTP 的延伸。
可將 MIME 視為一套可將非 ASCII 資料轉為 ASCII 資料以及
反轉的軟體。
歐亞書局
p.160
圖 6.22 多功能網際網路郵件擴展
歐亞書局
p.160
檔案傳輸協定
檔案傳輸協定(File Transfer Protocol;FTP)是一種標準機制,
用來執行網際網路上最普遍的工作之一,即從一部電腦拷貝
一個檔案至另一部電腦。
FTP 不同於其他客戶─伺服器應用程式的地方在於它需要建立
兩條連線。一條用來傳輸資料,另一條用來傳輸控制資訊
(命令與回應)。
檔案傳輸協定的基本模型。客戶有三個組成單元:使用者介
面、客戶控制行程和客戶資料傳輸行程。伺服器則有兩個組
成單元:伺服器行程和伺服器資料傳輸行程。控制連線是建
立在兩邊的控制行程之間,而資料連線則是建立於兩邊的資
料傳輸行程之間。
歐亞書局
p.161
圖 6.23 檔案傳輸協定
歐亞書局
p.161
關閉和開啟 FTP
執行 FTP 伺服器程式以允許使用者存取檔案的機器會採用兩
種不同的策略:對大眾關閉或者開啟。一個關閉的 FTP 伺服
器只允許特定的使用者存取檔案。檔案的存取則是以帳號和
密碼來控制,而一般人則是不允許存取該機器的檔案。
一個開啟的 FTP 伺服器則允許任何人存取檔案,此機器通常
提供匿名的 FTP(anonymous FTP)。使用者用 anonymous 為
帳號名稱及以 guest 為密碼。
歐亞書局
p.162
使用者登入至本地端的分時共享系統,稱為本地登入(local
login)。
遠地登入(remote login)的機制不像本地登入一樣簡單,作
業系統可能對於特殊字元賦予特別的意義,因為終端機模擬
程式或驅動程式知道每一個字元和組合的真正意義,但是在
遠地登入下可能會產生問題。例如:哪一個行程應該負責解
釋這些特殊的字元?是客戶還是伺服器?
歐亞書局
p.162
圖 6.24 本地登入
歐亞書局
p.163
圖 6.25 遠地登入
歐亞書局
p.163
全球資訊網
全球資訊網(World Wide Web)或者 the Web 是一個儲藏全球
連結資訊的地方。
全球資訊網使用了超文件(hypertext)與超媒體(hypermedia)
的概念。在超文件的環境中,資訊是一個文件的集合,這些
文件以連結的方式結合在一起,一個項目可以連結關聯到另
一個文件。
在全球資訊網上,一個超文件或超媒體的單元被稱為網頁
(page)。一個組織或個人的主要網頁或根網頁被稱為首頁
(home page)。
歐亞書局
p.164
圖 6.26 超文件
歐亞書局
p.164
為了要使用全球資訊網,我們需要三個單元:瀏覽器、網站
伺服器以及超文件傳輸協定(HTTP)。
通常一個瀏覽器包含三個單元:控制器、客戶程式以及多個
解譯器。
伺服器存放屬於該網站的所有網頁。
超文件傳輸協定(Hypertext Transfer Protocol;HTTP)是用來
在全球資訊網上存取資料的協定。這個協定以純文字的方式
來傳輸資料、超文件、聲音、影像等。
歐亞書局
p.165
圖 6.27 瀏覽器架構
歐亞書局
p.165
圖 6.28 HTTP 交易
歐亞書局
p.166
位址
客戶要求存取檔案必須知道檔案所在的位址,為了讓存取分
散於世界的檔案變得容易,HTTP 使用定址器(locators)的觀
念。通用資源定址器(uniform resource locator;URL)是網際
網路上用來指定任何種類資訊的標準,通用資源定址器定義
了四件事:方法、主機、埠號和路徑。
方法是指用來擷取文件的協定,例如:HTTP。
歐亞書局
p.166
圖 6.29 通用資源定址器的結構
歐亞書局
p.166
在全球資訊網上的文件可以分為三類:靜態、動態和主動,
這樣的分類是基於決定文件內容的時機。靜態文件(static
documents)是內容固定的文件,一旦產生以及存放在伺服器
就不會改變。
超文件標記語言(Hypertext Markup Language;HTML)是用
來產生網頁的語言。
一個網頁是由標頭和正文兩部分組成,標頭是網頁的第一個
部分,包含有網頁的標題以及瀏覽器使用的參數。網頁的內
容則是在正文裡面,其中包含本文和標籤。另一個有趣的標
籤分類是圖片標籤。第三類標籤為連結文件的超連結標籤。
歐亞書局
p.167
歐亞書局
圖 6.30 HTML 範例
p.168
超文件標記語言增加了對文件格式化的能力,但是沒有定義
資料型態的能力。可擴充標示語言(Extensible Markup
Language;XML)則是一種程式語言,其標籤可用來定義兩
個標籤間的項目型態。為何我們需要在網頁裡定義資料的型
態?其中一個原因是讓搜尋容易一點。
XML 允許不同組織去定義屬於它們自己的應用。
歐亞書局
p.168
圖 6.31 HTML 和 XML 的比較
歐亞書局
p.169
一個動態文件(dynamic documents)則是當瀏覽器要求文件
時由網頁伺服器所產生。
共用閘道介面(Common Gateway Interface;CGI)是一種用
來產生和處理動態文件的技術。CGI 是一種標準,用來定義
如何撰寫動態文件、如何輸入資料給程式與如何使用程式的
輸出。
能夠在客戶端執行一個程式或描述,稱為主動式文件(active
documents)。當瀏覽器要求一個主動式文件時,伺服器會傳
送一份文件或描述的拷貝給客戶,然後該文件則在客戶端的
瀏覽器控制下執行。
歐亞書局
p.169
其他網際網路應用
視訊會議(videoconferencing;有時稱為桌上視訊會議)藉由
提供兩組或多組參與者之間的通訊,可以減少旅行的開銷以
及節省時間和精力。
郵遞論壇伺服器(listservs),允許一組使用者討論感興趣的
話題。
聊天(chat)是一個即時的應用,如同視訊會議一樣,兩個或
者多個人參與文字(或者選擇聲音與影像)的交換。
歐亞書局
p.171
5.5 程式之執行
在今日,通用型計算機使用一組指令稱為程式來處理資料。
計算機執行程式以便從輸入的資料產生出輸出的資料,程式
與資料兩者均儲存在記憶體之中。
CPU 使用重複的機器週期(machine cycles)來執行程式中的
指令,一個接一個地從開始到結束。一個簡化的週期由三個
階段所組成:擷取、解碼和執行。
在擷取(fetch)的階段中,控制單元命令系統複製下一個指
令到 CPU 的指令暫存器中,要被複製指令的位址是存在程式
計數器中。在複製之後,程式計數器會遞增以便指到記憶體
中的下一個指令。
歐亞書局
p.117
CPU 的運作必須以某種方法與輸入∕輸出設備達到同步。已經
有三種方法被設計來達成同步:程式化 I/O、中斷驅動 I/O 及
直接記憶存取(DMA)。
程式化 I/O
在程式化 I/O(programmed I/O)的方法中,同步是非常簡單
的。I/O 設備與 CPU 之間的資料傳送是由程式中的指令所完
成,當 CPU 執行一個 I/O 指令,直到資料傳送完成之前 CPU
不作任何動作。CPU 經常地檢查 I/O 設備的狀態:如果設備
已經準備好傳送,則資料就傳送到 CPU。
歐亞書局
p.118
圖 5.20 程式化 I/O
歐亞書局
p.118
中斷驅動 I/O
在中斷驅動 I/O(interrupt-driven I/O)的方法中,CPU 通知
I/O 設備即將發生資料傳送,當 I/O 設備已準備好時會通知
(中斷)CPU。
在此方法之中,CPU 時間未被浪費掉──當慢速 I/O 設備正在
完成工作期間,CPU 能夠執行其他工作。
歐亞書局
p.118
圖 5.21 中斷驅動 I/O
歐亞書局
p.119
直接記憶體存取
第三個傳輸資料的方法是直接記憶體存取(direct memory
access;DMA)。此方法直接傳輸一大區塊的資料於高速 I/O
設備,例如磁碟和記憶體之間,而且資料傳輸不經過 CPU,
這需要一個 DMA 控制器來減輕 CPU的某些功能。DMA 控制
器具有暫存器,以便在記憶體傳輸之前與之後保存一個區塊
的資料。
使用此方法做一個 I/O 動作,CPU 要傳送一個信息給 DMA。
此信息包含有傳輸類型(輸入或輸出)、記憶體位置之起始
位址,和要傳輸的位元組數目,然後 CPU 可以做其他工作。
歐亞書局
p.119
圖 5.22 DMA 連接到一般匯流排
歐亞書局
p.120
圖 5.23 DMA 輸入∕輸出
歐亞書局
p.120
5.6 兩種不同的架構
CISC
CISC(發音 sisk)表示複雜指令集電腦(complex instruction
set computer;CISC)。CISC 具有一個大的指令集,包括複雜
的指令。在 CISC 電腦上撰寫程式比在其他設計的電腦要容易
得多,因為對於簡單或複雜的工作都只要一個指令即可。
指令集的複雜度造成了 CPU 的電路及控制單元非常複雜。
CISC 架構的設計者已經找出解決方法來降低其複雜度:程式
規劃分兩個階段完成。
歐亞書局
p.121
CPU 只執行簡單的微運算(microoperation),一個複雜指令
先轉換成一組簡單的微運算,再由 CPU 加以執行。因此需要
增加一個特殊記憶體稱為微記憶體(micromemory),以保存
指令集中每一個複雜指令的一組微運算。這種使用微運算的
程式規劃的形式稱為微程式規劃(microprogramming)。
CISC 架構的缺點之一是微程式規劃所需的額外時間與存取微
記憶體的時間。
歐亞書局
p.121
RISC
RISC(發音 risk)表示精簡指令集電腦(reduced instruction
set computer;RISC)。RISC 背後的策略是要具有一個小的指
令集以便執行最少數目的簡單運算,而複雜指令是用簡單指
令的子集合加以模擬。
在 RISC 電腦上撰寫程式比在另一種設計的電腦要更加困難以
及更加耗時,因為大部分的複雜指令是用簡單指令模擬得到
的。
歐亞書局
p.121
管線處理
現代的計算機使用一種稱為管線處理(pipelining)的技術來
增進其產量(throughput;單位時間內所執行指令的總數量)。
這個想法是基於如果控制單元能夠同時執行二或三個階段,
則下一指令可以在前一指令完成之前就開始執行。
圖 5.24b 顯示管線處理如何能夠增進計算機的產量,第一個計
算機在特定期間內平均要執行 9 個階段,而管線化的計算機
在相同的時間內可以執行 24 個階段。如果假設每個階段使用
相同的時間量,則第一個計算機完成了 9/3 = 3 個指令,而第
二個計算機完成了 24/3 = 8 個指令,產量因而增加了 8/3 或
266%。
歐亞書局
p.121
圖 5.24 管線處理
歐亞書局
p.122
管線處理存在有一些問題,例如遇到跳躍指令時。在這個情
況,管線中的指令應該要丟棄,但是,新的計算機設計已經
克服大部分的缺點,有些新的 CPU 設計甚至能夠同時做數個
擷取週期。
平行處理
一部計算機具有多重控制單元、多重算術邏輯單元和多重記
憶體單元,這個想法稱為平行處理(parallel processing)。
平行處理的概觀是由 M. J. Flynn 所提出的分類。根據 Flynn
的觀點,平行處理可能發生在資料流、指令流或兩者皆是。
歐亞書局
p.122
圖 5.25 計算機組織之分類
歐亞書局
p.122
SISD 組織
單一指令流,單一資料流(single instruction-stream, single
data-stream;SISD)組織表示計算機只有一個控制單元、一個
算術邏輯單元和一個記憶體單元。指令依序地執行而且每個
指令可以存取資料流中一個或多個資料項。
SIMD 組織
單一指令流,多重資料流(single instruction-stream, multiple
data-stream;SIMD)組織表示計算機有一個控制單元、多重
處理單元和一個記憶體單元。所有的處理單元接受來自控制
單元的相同指令,但是對不同的資料項做運算,同時對一個
陣列的資料做運算之陣列處理器就是屬於此類。
歐亞書局
p.123
圖 5.26 SISD 組織
歐亞書局
p.123
圖 5.27 SIMD 組織
歐亞書局
p.123
MISD 組織
多重指令流,單一資料流(multiple instruction-stream, single
data-stream;MISD)組織是有多個指令分別屬於多個不同的
指令流,同時對同一個資料流做運算。MISD 的概念從未曾被
實作過。
MIMD 組織
多重指令流, 多重資料流(multiple instruction-stream,
multiple data-stream;MIMD)組織表示有多個指令分別屬於
不同的多個指令流,同時對多個資料流做運算(一個指令對
一個資料流)。在此結構中數項工作可同時被執行,此結構
可使用單一共享記憶體或是多重記憶體區。
歐亞書局
p.123
圖 5.28 MISD 組織
歐亞書局
p.124
圖 5.29 MIMD 組織
歐亞書局
p.124
5.7 簡單的計算機
要解釋計算機的結構和它們的指令處理,我們介紹一個簡單
(非實際存在)的計算機,如圖 5.30 所示。此簡單計算機有
三個組成元件:CPU、記憶體和輸入∕輸出子系統。
CPU
CPU 本身被區分成三部分:資料暫存器、算術邏輯單元
(ALU)和控制單元。
資料暫存器
有 16 個具有十六進位位址 (0, 1, 2, ⋯, F)16 的 16 位元資料暫存
器,稱為 R0 至 R15。
歐亞書局
p.124
圖 5.30 簡單計算機的組成元件
歐亞書局
p.125
控制單元
控制單元有控制 ALU 運算、存取記憶體和存取 I/O 子系統的
電路。它還有兩個專屬的暫存器:程式計數器和指令暫存器。
程式計數器(program counter;PC)只能保存 8 個位元,負責
追蹤下一個要執行的是哪個指令。在每一個機器週期之後,
程式計數器會遞增 1 以指到下一個程式指令。指令暫存器
(instruction register;IR)保存一個 16 位元的值,其為目前
週期之編碼過的指令。
歐亞書局
p.125
主記憶體
主記憶體有 256 個 16 位元的記憶體位置,其二進位位址為
(00000000 到 11111101)2 或十六進位位址 (00 到 FD)16,主記
憶體保存資料與程式指令,前 64 個位置 (00 到 3F)16 是專屬於
程式指令,記憶體位置 (40 到 FD)16 是用於儲存資料。
輸入∕輸出子系統
此子系統由一個鍵盤和螢幕所組成,但該子系統仍像是部分
的記憶體位址。鍵盤(輸入設備)和螢幕(唯一輸出設備)
運作就像分別的記憶體位置 (FE)16 和 (FF)16。
歐亞書局
p.126
指令集
簡單計算機擁有 16 個指令的集合,每個計算機指令由兩個部
分組成:運算碼(opcode)與運算元(operand)。運算碼指
明要執行於運算元之運算類型,每個指令由 16 個位元區分成
四個 4 位元的欄位所組成。最左邊欄位包含運算碼而其他三
個欄位包含運算元或運算元的位址。
並非所有的指令都需要三個運算元,任何不需要的運算元欄
位填入 (0)16。暫停指令的三個運算元欄位,和移動指令及
NOT 指令的最後欄位,都填 (0)16。
歐亞書局
p.126
圖 5.31 格式與不同指令類型
歐亞書局
p.126
表 5.4 簡單計算機指令之列表
歐亞書局
p.127
有兩個加法指令: 一個是整數加法(ADDI) 與一個是浮點
數加法(ADDF)。
ROTATE 指令的第三個欄位為 0,則此指令將暫存器 R 中的
位元樣式向右旋轉 n 個位置;如果第三個欄位為 1,則向左旋
轉。指令中也包含了遞增(INC)和遞減(DEC)指令。
歐亞書局
p.127
處理指令
簡單計算機也使用機器週期的概念。一個週期由三個階段組
成:擷取、解碼和執行。在擷取階段期間,由 PC 決定位址的
指令從記憶體中取得並且載入到 IR 中,然後 PC 遞增以指到
下一個指令。
在解碼階段期間,IR 中的指令被解碼並且從暫存器或記憶體
中擷取所需要的運算元。在執行階段期間,指令被執行並且
結果被放到適當的記憶體位置或暫存器中。一旦第三個階段
完成後,控制單元會再度開始此一週期,但此時 PC 指在下一
個指令。此一過程會持續直到 CPU 遇到 HALT 指令為止。
歐亞書局
p.127
一個範例
簡單計算機如何將兩個整數 A 和 B 相加並且產生結果 C。假
設整數為 2 補數格式,此運算為:
要完成這簡單加法的簡單程式需要五個指令,如下所示:
1. 載入 M40 的內容到暫存器 R0(R0 ← M40)。
2. 載入 M41 的內容到暫存器 R1(R1 ← M41)。
3. R0 和 R1 的內容相加且結果放到 R2(R2 ← R0 + R1)。
4. 儲存 R2 的內容到 M42(M42 ← R2)。
5. 停止。
歐亞書局
p.128
在簡單計算機的語言中,這五個指令可編碼為:
歐亞書局
p.128
週期 1
在第一週期的開始,PC 指到程式的第一個指令,其位於記憶
體位置 (00)16。控制單元經過三個步驟:
1. 控制單元擷取儲存於記憶體位置 (00)16 的指令,並放置於
IR 中。此步驟之後,PC 值遞增。
2. 控制單元解碼指令 (1040)16 為 R0 ← M40。
3. 控制單元執行指令。
歐亞書局
p.129
圖 5.32 週期 1 之狀態
歐亞書局
p.129
週期 2
在第二週期的開始控制單元經過三個步驟:
1. 控制單元擷取儲存於記憶體位置 (01)16 的指令,並放置於
IR 中。此步驟之後,PC 值遞增。
2. 控制單元解碼指令 (1141)16 為 R1 ← M41。
3. 控制單元執行指令。
歐亞書局
p.129
圖 5.33 週期 2 之狀態
歐亞書局
p.130
週期 3
在第三週期的開始控制單元經過三個步驟:
1. 控制單元擷取儲存於記憶體位置 (02)16 的指令,並放置於
IR 中。此步驟之後,PC 值遞增。
2. 控制單元解碼指令 (3201)16 為 R2 ← R0 + R1。
3. 控制單元執行指令。
歐亞書局
p.130
圖 5.34 週期 3 之狀態
歐亞書局
p.131
週期 4
控制單元經過三個步驟:
1. 控制單元擷取儲存於記憶體位置 (03)16 的指令,並放置於
IR 中。此步驟之後,PC 值遞增。
2. 控制單元解碼指令 (2422)16 為 M42 ← R2。
3. 控制單元執行指令。
歐亞書局
p.130
圖 5.35 週期 4 之狀態
歐亞書局
p.131
週期 5
控制單元經過三個步驟:
1. 控制單元擷取儲存於記憶體位置 (04)16 的指令,並放置於
IR 中。此步驟之後,PC 值遞增。
2. 控制單元解碼指令 (0000)16 為 Halt。
3. 控制單元執行指令,這表示計算機停止。
歐亞書局
p.132
圖 5.36 週期 5 之狀態
歐亞書局
p.132
另一個範例
在實際的情況中,使用輸入設備例如鍵盤將前兩個整數鍵入
記憶體中;而透過輸出設備例如螢幕來顯示第三個整數。藉
由輸入設備來取得資料通常稱為讀取(read)運算;而將資料
送至輸出設備通常稱為寫出(write)運算。欲使之前的程式
更為實際,則需修改如下:
1. 讀取一個整數到 M40。
2. R0 ← M40。
3. 讀取一個整數到 M41。
4. R1 ← M41。
歐亞書局
p.132
5. R2 ← R0 + R1。
6. M42 ← R2。
7. 從 M42 將整數寫出。
8. 停止。
在此計算機中可以使用 LOAD 和 STORE 指令來模擬讀取和
寫出運算。讀取運算為:
R ← MFE
M←R
因為鍵盤假設為記憶體位置 (FE)16
寫出運算為:
R←M
MFF ← R 因為螢幕假設為記憶體位置 (FF)16
歐亞書局
p.133