計(jì)算機(jī)基礎(chǔ)知識(shí)第6章 計(jì)算機(jī)系統(tǒng)的發(fā)展課件_第1頁
計(jì)算機(jī)基礎(chǔ)知識(shí)第6章 計(jì)算機(jī)系統(tǒng)的發(fā)展課件_第2頁
計(jì)算機(jī)基礎(chǔ)知識(shí)第6章 計(jì)算機(jī)系統(tǒng)的發(fā)展課件_第3頁
計(jì)算機(jī)基礎(chǔ)知識(shí)第6章 計(jì)算機(jī)系統(tǒng)的發(fā)展課件_第4頁
計(jì)算機(jī)基礎(chǔ)知識(shí)第6章 計(jì)算機(jī)系統(tǒng)的發(fā)展課件_第5頁
已閱讀5頁,還剩99頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章

計(jì)算機(jī)系統(tǒng)的發(fā)展

6.1計(jì)算機(jī)并行技術(shù)概述

6.2指令級(jí)并行技術(shù)

6.3

線程級(jí)并行技術(shù)

6.4

非Neumann體系的計(jì)算機(jī)系統(tǒng)

6.5計(jì)算機(jī)元器件技術(shù)展望

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.1計(jì)算機(jī)并行技術(shù)概述

6.1.1計(jì)算機(jī)硬件并行技術(shù)的發(fā)展

6.1.2計(jì)算機(jī)并行性開發(fā)的技術(shù)對(duì)策

6.1.3Flynn分類法

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展計(jì)算機(jī)系統(tǒng)的發(fā)展主要是在元器件技術(shù)和體系結(jié)構(gòu)兩條戰(zhàn)線上不斷向前推進(jìn)的。這一章首先介紹對(duì)于計(jì)算機(jī)體系結(jié)構(gòu)具有決定性影響的幾種并行技術(shù),然后介紹幾種非Neumann體系結(jié)構(gòu),最后介紹人們?cè)谟?jì)算機(jī)元器件技術(shù)方面的一些探索。6.1.1計(jì)算機(jī)硬件并行技術(shù)的發(fā)展廣義地講,并行性包含同時(shí)性(simultaneity)和并發(fā)性(concurrency)兩個(gè)方面。前者是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生。后者是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生。簡(jiǎn)單地說,在同一時(shí)刻或同一時(shí)間間隔內(nèi)完成兩種或兩種以上性質(zhì)相同或不相同的功能,只要時(shí)間上互相重疊,就存在并行性。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展并行處理是改進(jìn)系統(tǒng)性能以獲得最好性能價(jià)格比的重要手段。計(jì)算機(jī)系統(tǒng)在其發(fā)展過程中在各個(gè)層次上都引入了不同形式的并行性:·1952年設(shè)計(jì)了運(yùn)算器中的并行算術(shù)運(yùn)算邏輯?!?955年在IBM704機(jī)中采用了I/O通道技術(shù),實(shí)現(xiàn)了I/O操作與CPU的并行工作?!?956年在IBM的Stretch設(shè)計(jì)中,指令預(yù)取控制機(jī)構(gòu)和存儲(chǔ)器多體交叉,邁開了指令流水線和并行存儲(chǔ)技術(shù)第一步?!?961年在曼徹斯特大學(xué)的ATLAS機(jī)中,又討論了多道程序的技術(shù),使一臺(tái)處理機(jī)可以同時(shí)運(yùn)行多個(gè)程序。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展·1964年在CDC6600機(jī)中又設(shè)計(jì)了多功能部件,在一個(gè)CPU中有10個(gè)互相獨(dú)立、可以并行工作的功能部件。·20世紀(jì)70年代初出現(xiàn)的向量計(jì)算機(jī)TI-ASC(1972)和STAR-100(1973),又開始采用運(yùn)算流水線技術(shù)?!?/p>

經(jīng)過20世紀(jì)70~80年代的發(fā)展,RISC技術(shù)進(jìn)一步完善,VLIW計(jì)算機(jī)和超標(biāo)量計(jì)算機(jī)把系統(tǒng)結(jié)構(gòu)技術(shù)同優(yōu)化編譯技術(shù)相結(jié)合,進(jìn)一步挖掘了指令級(jí)的并行性。這時(shí)在單處理機(jī)上并行性潛力的挖掘已趨于飽和,并行技術(shù)便主要轉(zhuǎn)向高度并行技術(shù),即多處理機(jī)方面?!?/p>

……計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.1.2計(jì)算機(jī)并行性開發(fā)的技術(shù)對(duì)策并行性的開發(fā)主要從時(shí)間重疊、資源重復(fù)、資源共享3個(gè)方面展開。1.時(shí)間重疊時(shí)間重疊是多個(gè)處理過程在時(shí)間上相互錯(cuò)開,輪流、重疊地使用同一套硬件設(shè)備的各個(gè)部分,以提高硬件的利用率而贏得高速度,獲得較高的性能價(jià)格比。它是通過時(shí)間重疊技術(shù)實(shí)現(xiàn)并行處理,主要表現(xiàn)在各種流水線部件和流水線處理機(jī),而不靠增加重復(fù)硬件設(shè)備,是一種“挖掘內(nèi)部潛力”的方法。流水線在指令和操作一級(jí)的實(shí)施,形成單處理機(jī)內(nèi)部的指令流水線和操作流水線;進(jìn)一步發(fā)展到任務(wù)一級(jí),形成處理機(jī)級(jí)的流水線或稱宏(macro)流水線。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展流水線技術(shù)的特點(diǎn)是各部件的專用性,設(shè)備的發(fā)展形成專用部件(如流水線中的各功能站)——專用處理機(jī)(如通道、數(shù)組處理機(jī)等)、專用計(jì)算機(jī)系統(tǒng)(如工作站、客戶機(jī)等)等3個(gè)層次。沿著這條路線形成的多處理機(jī)系統(tǒng)的特點(diǎn)是非對(duì)稱型(asymmetrical)或稱異構(gòu)型多處理機(jī)(heterogeneousmultiprocessor)。它們由多個(gè)不同類型、至少擔(dān)負(fù)不同功能的處理機(jī)組成,按照程序要求的順序,對(duì)多個(gè)進(jìn)程進(jìn)行加工,各自實(shí)現(xiàn)規(guī)定的操作功能,并且這些進(jìn)程的加工在時(shí)間上是重疊的。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.資源重復(fù)資源重復(fù)是通過重復(fù)地設(shè)置硬件資源以大幅度提高計(jì)算機(jī)系統(tǒng)的性能,是一種“以多取勝”的方法。它的初級(jí)階段是多存儲(chǔ)體和多操作部件,目的在于把一個(gè)程序分成許多任務(wù)(過程),分給不同的部件去執(zhí)行。這些部件在發(fā)展中功能不斷增強(qiáng),獨(dú)立性不斷提高,發(fā)展成為3個(gè)層次:·在多個(gè)部件中的并行處理;·在多臺(tái)處理機(jī)中的并行處理──緊藕合多處理機(jī)系統(tǒng);·在多臺(tái)自治的計(jì)算機(jī)系統(tǒng)中的并行處理──松藕合多處理機(jī)系統(tǒng)。沿著這條路線形成的多處理機(jī)系統(tǒng)的特點(diǎn)是對(duì)稱型(Symmetrical)或稱同構(gòu)型多處理機(jī)(HomogeneousMultiprocessor)。它們由多個(gè)同類型的,至少同等功能的處理機(jī)組成,同時(shí)處理同一程序中能并行執(zhí)行的多個(gè)任務(wù)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.資源共享資源共享是多個(gè)用戶之間可以互相使用它者另一方的資源(硬件、軟件、數(shù)據(jù)),以提高計(jì)算機(jī)設(shè)備利用率。計(jì)算機(jī)網(wǎng)絡(luò)就是這一技術(shù)路線的產(chǎn)物。它通過計(jì)算機(jī)與通信技術(shù)的融合,實(shí)現(xiàn)信息資源共享。以上3條路線并不是孤立的。現(xiàn)代科學(xué)技術(shù)已經(jīng)打破了學(xué)科、專業(yè)、領(lǐng)域的界限,在計(jì)算機(jī)不同技術(shù)之間也在不斷滲透、借鑒、融合,把并行技術(shù)推向更高的水平。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.1.3Flynn分類法1966年M.J.Flynn提出了一種按信息處理特征的計(jì)算機(jī)分類方法——按指令流和數(shù)據(jù)流對(duì)計(jì)算機(jī)進(jìn)行分類的方法。他首先引入了下列定義:·

指令流——機(jī)器執(zhí)行的指令序列?!?/p>

數(shù)據(jù)流——由指令流調(diào)用的數(shù)據(jù)序列(包括輸入數(shù)據(jù)和中間結(jié)果)?!?/p>

多倍性——在系統(tǒng)受限制的元件上處于同一執(zhí)行階段的指令或數(shù)據(jù)的最大可能個(gè)數(shù)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展按指令流和數(shù)據(jù)流分別具有的多倍性,可將計(jì)算機(jī)系統(tǒng)分為下列4類:

·

SISD——單指令流單數(shù)據(jù)流系統(tǒng);·

SIMD——單指令流多數(shù)據(jù)流系統(tǒng);·

MISD——多指令流單數(shù)據(jù)流系統(tǒng);·

MIMD——多指令流多數(shù)據(jù)流系統(tǒng)。1.SISD系統(tǒng)SISD系統(tǒng)是傳統(tǒng)的順序處理計(jì)算機(jī),通常由一個(gè)處理器和一個(gè)存儲(chǔ)器組成。它通過執(zhí)行單一的指令流對(duì)單一的數(shù)據(jù)流進(jìn)行處理。即指令按順序讀取,指令部件一次只對(duì)一條指令進(jìn)行譯碼,并只對(duì)一個(gè)操作部件分配數(shù)據(jù)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.SIMD系統(tǒng)典型的SIMD系統(tǒng)由一個(gè)控制器、多個(gè)處理器、多個(gè)存儲(chǔ)模塊和一個(gè)互連網(wǎng)絡(luò)組成。互連網(wǎng)絡(luò)用來在各處理器和各存儲(chǔ)模塊間進(jìn)行通信,由控制器向各個(gè)處理器“發(fā)布”指令,所有被“激活的”處理器在同一時(shí)刻執(zhí)行同一條指令,這就是單指令流。但在每臺(tái)流動(dòng)的處理器執(zhí)行這條指令時(shí)所用的數(shù)據(jù)是從它本身的存儲(chǔ)器模塊中讀取的,所以各處理器加工的數(shù)據(jù)是不同的,這就是多數(shù)據(jù)流。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.MIMD系統(tǒng)典型的MIMD系統(tǒng)由多臺(tái)獨(dú)立的處理機(jī)(包含處理器和控制器)、多個(gè)存儲(chǔ)模塊和一個(gè)互連網(wǎng)絡(luò)組成;每個(gè)處理機(jī)執(zhí)行自己的指令(多指令流),操作數(shù)據(jù)也是各取各的(多數(shù)據(jù)流)。這是一種全面并行的計(jì)算機(jī)系統(tǒng)。MIMD的互連網(wǎng)絡(luò)可以安排在兩個(gè)不同級(jí)別——系統(tǒng)-系統(tǒng)級(jí)(如圖6.1(a)所示)和處理機(jī)-存儲(chǔ)器接口級(jí)(如圖6.1(b)所示)上。系統(tǒng)-系統(tǒng)級(jí)MIMD系統(tǒng)的特點(diǎn)是各臺(tái)處理機(jī)都有自己的存儲(chǔ)器,互連網(wǎng)絡(luò)僅僅用來進(jìn)行處理機(jī)間的通信,通信帶寬較窄,稱為松耦合多處理機(jī)系統(tǒng)(looselycoupledmultiprocessorsystem),一般多計(jì)算機(jī)系統(tǒng)(multicomputersystem)就是指這種系統(tǒng)。處理機(jī)-存儲(chǔ)器接口級(jí)上的MIMD的特點(diǎn)是各臺(tái)處理機(jī)共享公用的存儲(chǔ)器,存儲(chǔ)器可以由多個(gè)模塊組成,互連網(wǎng)絡(luò)用來在處理機(jī)-存儲(chǔ)器之間傳送信息,通信帶寬較寬,稱為緊耦合多處理機(jī)系統(tǒng)(tightlycoupledmultiprocessorsystem),通常說的多處理系統(tǒng)一般就是指這一類型的系統(tǒng)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展4.MISD系統(tǒng)關(guān)于MISD系統(tǒng)的界定,眾說不一,有的認(rèn)為根本就不存在MISD系統(tǒng);有的把流水線處理機(jī)劃分在這一類。但也有的把流水線處理機(jī)稱為SIMD系統(tǒng)一類。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展

6.2指令級(jí)并行技術(shù)6.2.1指令流水技術(shù)

6.2.2流水線中的多發(fā)射技術(shù)

6.2.3PentiumCPU

6.2.4RISC處理器的體系結(jié)構(gòu)

6.2.5RISC、CISC、VLIW技術(shù)的融合

6.2.6流水線向量處理機(jī)

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展ILP(InstructionLevelParallelism,指令級(jí)并行運(yùn)算)技術(shù),是一種可以讓CPU在相同周期內(nèi)執(zhí)行更多指令的方法。6.2.1指令流水技術(shù)1.指令的重疊與流水指令的作業(yè)方式與CPU結(jié)構(gòu)及其對(duì)指令的解釋有關(guān)。早期的CPU雖然也把指令分解為一系列的微指令,但是如圖6.2所示,在同一時(shí)間段內(nèi)處理器只能進(jìn)行一個(gè)指令的作業(yè);一條指令的作業(yè)完成后,才能開始另外一條指令的作業(yè)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展順序作業(yè)方式的優(yōu)點(diǎn)是控制簡(jiǎn)單,由于下條指令的地址在前指令解釋過程的末尾形成,因此不論是由指令指針加1方式,還是由轉(zhuǎn)移指令把地址送到指令指針形成下條指令地址,由當(dāng)前指令轉(zhuǎn)入下條指令的時(shí)序關(guān)系都是相同的。順序作業(yè)方式的缺點(diǎn)是速度慢,因?yàn)楫?dāng)前操作完成前,下一步操作不能開始。另外機(jī)器各部件的利用率也不高,如主存與運(yùn)算器(EU)不能同時(shí)工作。實(shí)際上,CPU可以分成兩個(gè)相對(duì)獨(dú)立的部件:指令部件和執(zhí)行部件,分別負(fù)責(zé)指令的解釋和執(zhí)行。在一條指令的執(zhí)行過程同時(shí),指令部件可以取下一條指令并進(jìn)行解釋,這樣兩個(gè)部件就可以同時(shí)并行操作,如圖6.3所示計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展當(dāng)CPU分成多個(gè)相對(duì)獨(dú)立的部件(如圖6.4所示),并且可以把一條指令解釋為多個(gè)子過程時(shí),不同的部件將分別對(duì)微指令流中不同的子過程進(jìn)行操作,于是就形成流水作業(yè)方式。流水線是CPU實(shí)現(xiàn)高速作業(yè)的關(guān)鍵性技術(shù)。它如同將一條生產(chǎn)流水線分成多個(gè)工序,各工序可以同時(shí)工作,但加工的是不同的零件。顯然,工序分得越多,同時(shí)加工的零件就越多。采用指令流水線,能使各操作部件同時(shí)對(duì)不同的指令進(jìn)行加工,提高了機(jī)器的工作效率。從另一方面講,當(dāng)處理器可以分解為m個(gè)部件時(shí),便可以每隔1/m個(gè)指令周期解釋一條指令,加快了程序的執(zhí)行速度。注意,這里說的是“加快了程序的執(zhí)行速度”,而不是“加快了指令的解釋速度”,因?yàn)榫鸵粭l指令而言,其解釋速度并沒有加快。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.指令流水線結(jié)構(gòu)指令流水線是將指令的整個(gè)執(zhí)行過程進(jìn)行分段處理。典型的指令執(zhí)行過程是取指令-指令譯碼-形成地址-取操作數(shù)-執(zhí)行指令-回寫結(jié)果-修改指令指針,與此相對(duì)應(yīng)的指令流水線由圖6.5所示的各部件組成。

如果上述7步中,每一步需要一個(gè)時(shí)鐘周期,從指令進(jìn)入流水線,到出來結(jié)果,就要7個(gè)時(shí)鐘周期;但此后后每個(gè)時(shí)鐘周期便可以執(zhí)行一條指令。設(shè)一條流水線由k個(gè)時(shí)間步(功能段)組成,每個(gè)時(shí)間步的長(zhǎng)度為Δt。對(duì)n條指令順序執(zhí)行時(shí)所需的時(shí)間為n·k·Δt,而流水作業(yè)時(shí)所需時(shí)間為k·Δt+(n-1)Δt=(k+n-1)·Δt,吞吐量就提高了(k+n-1)/n·k。顯然,k值越大,流水線吞吐量提高得越高。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展上面討論的流水線是時(shí)間步均衡的流水線問題。實(shí)際上,取指、取數(shù)和回寫3步需要的時(shí)間要比其他4步長(zhǎng)得多,對(duì)低速存儲(chǔ)器差別更大。圖6.6為3個(gè)訪存步需要4個(gè)時(shí)鐘周期、其他步需要1個(gè)時(shí)鐘周期時(shí),流水線的工作情形。這時(shí),第一條指令的解釋用去16個(gè)時(shí)鐘周期,以后每4個(gè)時(shí)鐘周期出一條指令。這說明流水線的吞吐量主要由時(shí)間步最長(zhǎng)的功能段決定。這個(gè)最長(zhǎng)的功能段就是流水線的“瓶頸”。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展解決流水線“瓶頸”(圖6.7(a))可以通過兩條途徑:一是如圖6.7(b)所示,將“瓶頸”部分再細(xì)分,當(dāng)分成與其他時(shí)間步(設(shè)為1個(gè)時(shí)鐘周期)幾乎相等的功能段時(shí),就會(huì)每一個(gè)時(shí)間步(1個(gè)時(shí)鐘周期)出一條指令;另一種是采用如圖6.7(c)所示的“瓶頸”段復(fù)制的方法,用數(shù)據(jù)分配器,將多條指令的“瓶頸”段(訪存)并行地執(zhí)行,加快執(zhí)行過程。當(dāng)然,后者的復(fù)雜度要高。這個(gè)例子是針對(duì)低速存儲(chǔ)器的,說明了流水線對(duì)存儲(chǔ)系統(tǒng)有很高的要求。在理想的流水線處理機(jī)中,希望平均一個(gè)機(jī)器周期處理一條指令,為此就要按這個(gè)速度給其提供指令和數(shù)據(jù)?,F(xiàn)在的單一大型存儲(chǔ)器的一個(gè)存儲(chǔ)周期相當(dāng)于4~20個(gè)時(shí)鐘周期。為此必須借助Cache。假如一個(gè)指令系統(tǒng)中的每條指令最多只需要訪存取一個(gè)操作數(shù),那么每執(zhí)行一條指令只需訪問兩次存儲(chǔ)器:取指令和存取數(shù)據(jù)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.運(yùn)算流水線前面討論了指令流水線,它是處理機(jī)級(jí)的流水技術(shù)。流水處理技術(shù)還可用于部件級(jí),如浮點(diǎn)運(yùn)算、乘法、除法等都需要多個(gè)機(jī)器周期才能完成。為加速運(yùn)算速度,把流水線技術(shù)引入到運(yùn)算操作中就形成運(yùn)算流水線。下面介紹兩種運(yùn)算流水線分類方法。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(1)單功能和多功能流水線單功能流水線是只能實(shí)現(xiàn)一種特定的專門功能的流水線。多功能流水線是指同一流水線可以有多種連結(jié)方式,實(shí)現(xiàn)多種功能。例如T1-ASC計(jì)算機(jī)共有8個(gè)站,可以對(duì)16,32或64位的標(biāo)量和向量操作數(shù)進(jìn)行定點(diǎn)和浮點(diǎn)算術(shù)運(yùn)算。圖6.8為它的功能塊及3種功能連結(jié)方式。(2)靜態(tài)和動(dòng)態(tài)流水線靜態(tài)流水線在同一時(shí)間內(nèi)只能按一種運(yùn)算連結(jié)方式工作。動(dòng)態(tài)流水線在同一時(shí)間內(nèi)允許按多種不同的運(yùn)算連結(jié)方式工作。單一流水線一定是靜態(tài)流水線,動(dòng)態(tài)流水線一定是多功能流水線,但多功能流水線可以是動(dòng)態(tài)的,也可以是靜態(tài)的。靜態(tài)流水線僅指令是同一類型時(shí)才能連續(xù)不斷地作業(yè)。多功能動(dòng)態(tài)流水線的連結(jié)控制比多功能靜態(tài)流水線要復(fù)雜得多,但效率比較高。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展

4.訪存沖突“取指令”與“執(zhí)行指令”都要訪問主存,一個(gè)要取指令,一個(gè)要取操作數(shù)。所以重疊流水方式要求CPU能同時(shí)訪問主存中的兩個(gè)單元。這對(duì)一般將操作數(shù)和指令混合存儲(chǔ)在同一主存中的機(jī)器來說是難以實(shí)現(xiàn)的。為了實(shí)現(xiàn)重疊解釋,應(yīng)在硬件結(jié)構(gòu)上采取措施。通常有如下一些方法。(1)設(shè)置兩個(gè)獨(dú)立編址的主存儲(chǔ)器,分別存放操作數(shù)和指令,以免取指與取操作數(shù)同時(shí)進(jìn)行時(shí)互相沖突。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(2)采用多體交叉存儲(chǔ)結(jié)構(gòu),使兩條相鄰指令的操作數(shù)不在同一存儲(chǔ)體內(nèi)。這時(shí)指令和操作數(shù)雖然還存在同一主存內(nèi),但可以利用多體存儲(chǔ)器在同一存儲(chǔ)周期內(nèi)取出一條指令和另一指令所需的操作數(shù)實(shí)現(xiàn)時(shí)間上的重疊。(3)指令預(yù)取技術(shù),也稱指令緩沖技術(shù),如8086CPU中設(shè)置了指令隊(duì)列,用于預(yù)先將指令取到指令隊(duì)列中排隊(duì)。指令預(yù)取技術(shù)的實(shí)現(xiàn)是基于訪內(nèi)周期往往是很短的。在“執(zhí)行指令”期間,“取數(shù)”時(shí)間很短,在這段時(shí)間內(nèi)存儲(chǔ)器會(huì)有空閑,這時(shí)只要指令隊(duì)列空閑,就可以將一條指令取來。這樣,當(dāng)開始執(zhí)行指令K時(shí)就可以同時(shí)開始對(duì)指令K+1的解釋,即任何時(shí)候都是“執(zhí)行K”與“分析K+1”的重疊。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展5.相關(guān)處理指令間的相關(guān)(instuctiondependency)是指由于一段機(jī)器語言程序的相近指令之間出現(xiàn)了某種關(guān)聯(lián),使它們不能同時(shí)被解釋,造成指令流水線出現(xiàn)停頓,從而影響指令流水線的效率。指令間的相關(guān)發(fā)生在一條指令要用到前面一條(或幾條)指令的結(jié)果,因而必須等待它們流過流水線后才能執(zhí)行。這些現(xiàn)象在重疊方式下也會(huì)發(fā)生,但由于流水是同時(shí)解釋多條指令,所以相關(guān)狀況比重疊機(jī)器復(fù)雜得多。指令間的相關(guān)大體可分控制相關(guān)(controldependency)和數(shù)據(jù)相關(guān)(datadependency)兩種。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(1)控制相關(guān)當(dāng)一條指令要等前一條(或幾條)指令作出轉(zhuǎn)移方向的決定后才能開始進(jìn)入流水線時(shí),便發(fā)生控制相關(guān)。典型的情況是條件轉(zhuǎn)移指令:一條條件轉(zhuǎn)移指令必須等待前面指令有結(jié)果后,才能讓其下一條指令進(jìn)入流水線。由于轉(zhuǎn)移指令的使用頻度約占執(zhí)行指令總數(shù)的1/5~1/4,僅次于傳送類指令,所以轉(zhuǎn)移指令對(duì)流水線的設(shè)計(jì)有較大影響。進(jìn)行控制相關(guān)處理的第一步是要先確定是否轉(zhuǎn)移指令。這一點(diǎn)很容易的,在指令流水線的前端通過指令譯碼就能確定。如果是無條件轉(zhuǎn)移指令,經(jīng)指令譯碼便可確定轉(zhuǎn)移目標(biāo),在該指令后的已經(jīng)進(jìn)入指令列中的指令一般都應(yīng)廢除,而后按轉(zhuǎn)移地址重新讀取新的指令序列。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展這時(shí),由于有指令隊(duì)列的緩沖,不一定會(huì)引起執(zhí)行部件的停頓。因而無條件轉(zhuǎn)移指令對(duì)流水線的影響比較小。但如果是條件轉(zhuǎn)移,問題就麻煩多了。因?yàn)殡m然條件轉(zhuǎn)移指令在指令流水線的前端進(jìn)行指令譯碼時(shí)就能發(fā)現(xiàn),但該指令條件碼是其前一條指令在指令流水線的末端執(zhí)行部件中才產(chǎn)生,必須等它執(zhí)行完后,才能給條件轉(zhuǎn)移指令提供條件碼,以決定轉(zhuǎn)移是否成功。因此,若一旦發(fā)現(xiàn)是條件轉(zhuǎn)移指令,指令部件就停止作業(yè),直等到條件碼給出,才能確定轉(zhuǎn)移方向,但這時(shí)流水線中已經(jīng)基本流空(前一條指令已流出,當(dāng)前條件轉(zhuǎn)移指令因無運(yùn)算內(nèi)容而無須流入執(zhí)行部件,其后因指令部件已停止作業(yè)也無多少指令讀入)。如果轉(zhuǎn)移成功,要引入新的指令流;如果轉(zhuǎn)移不成功,流水線上也無多少指令(流水線較長(zhǎng)時(shí),可能有少許指令流入),這樣等確定后的指令流到執(zhí)行部件時(shí),執(zhí)行部件已經(jīng)停止作業(yè)一段時(shí)間。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(2)數(shù)據(jù)相關(guān)數(shù)據(jù)相關(guān)發(fā)生在幾條相近的指令間共用同一個(gè)存儲(chǔ)單元或寄存器時(shí)。例如,某條流經(jīng)指令部件的指令,為計(jì)算操作數(shù)地址要用到一個(gè)通用寄存器的內(nèi)容。而其前產(chǎn)生這個(gè)通用寄存器的內(nèi)容的指令還沒有進(jìn)入執(zhí)行部件。這時(shí)指令部件中的流水作業(yè)只能暫停等待。數(shù)相關(guān)有3種情形,讀─寫相關(guān)(先寫后讀,

RAW,ReadAfterWrite)、寫-讀相關(guān)(先讀后寫,

WAR,WriteAterRead)、寫-寫相關(guān)(先寫后寫,WAW,WriteAfterWrite)。它們的發(fā)生與流水線的控制方式有關(guān)。流水線流動(dòng)順序的安排和控制有如下兩種方式。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展①

順序流動(dòng)流水線這種流水線輸出端的信息流出順序與輸入端指令的流入順序一致。在這種流水線上只可能發(fā)生先寫后讀(RAW)的數(shù)相關(guān),即寫數(shù)指令在前,讀數(shù)指令在后。由于寫操作要在處于流水線末端的執(zhí)行部件中才能進(jìn)行,而讀操作(如取操作數(shù)、取變址值或間接址等)是在流水線前端的指令部件中進(jìn)行的。這樣,很有可能在寫操作尚未執(zhí)行完時(shí),取數(shù)指令已在執(zhí)行,讀出的是舊的內(nèi)容,從而產(chǎn)生錯(cuò)誤。解決這種數(shù)相關(guān),應(yīng)設(shè)置專門的硬件進(jìn)行檢查。每一次取數(shù)時(shí),要對(duì)其前已在流水線上的寫數(shù)指令的寫數(shù)地址進(jìn)行比較,若有相同地址,就會(huì)有數(shù)相關(guān)產(chǎn)生,應(yīng)推遲讀數(shù)操作。這樣做當(dāng)然要影響程序的效率,為縮短等待時(shí)間,可采用數(shù)據(jù)旁路(bypassing)或稱數(shù)據(jù)內(nèi)部傳遞(internalforwarding)技術(shù)。它是在執(zhí)行部件與指令部件之間設(shè)置直接傳送數(shù)據(jù)的通路,使執(zhí)行部件向主存或向寄存器傳遞數(shù)據(jù)的同時(shí),把數(shù)直接傳送到正在等待這個(gè)數(shù)的指令部件中去。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展②

非順序流動(dòng)流水線在這種流水線中,指令的流動(dòng)順序可能發(fā)生變化。這時(shí)會(huì)發(fā)生另外兩種數(shù)相關(guān)。處理的辦法類似RAW,但要復(fù)雜得多。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.2.2流水線中的多發(fā)射技術(shù)流水線技術(shù)使計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)產(chǎn)生重大革新。它的進(jìn)一步發(fā)展,除了要通過優(yōu)化編譯,采用好的指令調(diào)度算法,重新組織指令執(zhí)行順序,降低相關(guān)帶來的干擾外,另一方面的出路是開發(fā)多發(fā)射技術(shù),即設(shè)法在一個(gè)時(shí)鐘周期內(nèi)發(fā)出多條指令。常見的多發(fā)射技術(shù)有超標(biāo)量技術(shù)、超流水技術(shù)和超長(zhǎng)指令技術(shù)。1.超標(biāo)量技術(shù)超標(biāo)量(SuperScalar)技術(shù)是指可以在每個(gè)時(shí)鐘周期內(nèi)同時(shí)并發(fā)多條獨(dú)立指令,即以并行操作方式將兩條或兩條以上指令編譯、執(zhí)行之,如圖6.9(b)所示。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展在超級(jí)標(biāo)量機(jī)的處理機(jī)中配置了多個(gè)功能部件和指令譯碼電路,還有多個(gè)寄存器端口和總線,以便能同時(shí)執(zhí)行多個(gè)操作,并且要由編譯程序決定哪幾條相鄰的指令可以并行執(zhí)行。請(qǐng)看下面的程序段。

MOVBL,5ADDAX,0123HADDCL,AH在這個(gè)程序段中,3條指令是互相獨(dú)立的,它們之間不存在數(shù)相關(guān),存在指令級(jí)并行性,程序段并行度為3。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展再看下面的程序段:INCAXADDAX,BXMOVDS,AX這3條指令間存在相關(guān)性,不能并行執(zhí)行,程序段的并行度為1,指令只能逐條執(zhí)行。超級(jí)標(biāo)量機(jī)不能對(duì)指令的執(zhí)行次序進(jìn)行重新安排,對(duì)這種情況無可奈何。但是可以通過編譯程序采取優(yōu)化技術(shù),在將高級(jí)語言程序翻譯成機(jī)器語言時(shí),進(jìn)行精心安排,把能并行執(zhí)行的指令搭配起來,挖掘更多的指令并行性。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.超流水線技術(shù)超流水線(superpipelining)技術(shù)是將一些流水線寄存器插入到流水線段中,通過對(duì)流水管道的再分,使每段的長(zhǎng)度近似相等,以便現(xiàn)有的硬件在每個(gè)周期內(nèi)使用多次,或者說是每個(gè)超流水線段都以數(shù)倍于基本時(shí)鐘頻率的速度運(yùn)行。

3.超長(zhǎng)指令字技術(shù)超長(zhǎng)指令字(VLIWVerylonginstructionword)和超標(biāo)量技術(shù)都是采用多條指令在多處理部件中并行處理的體系結(jié)構(gòu),以便能在一個(gè)機(jī)器周期內(nèi)流出多條指令,但區(qū)別在于:超標(biāo)量的指令來自于同一標(biāo)準(zhǔn)指令流;VLIW較超標(biāo)量具有更高的并行處理能力,并且對(duì)優(yōu)化編譯器的要求更高,Cache的容量要求更大些;計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展VLIW則是由編譯程序在編譯時(shí)挖掘出指令間潛在的并行性后,把多條能并行執(zhí)行的操作組合成一條具有多個(gè)操作段的超長(zhǎng)指令。這種VLIW計(jì)算機(jī)結(jié)構(gòu)的指令字長(zhǎng)達(dá)幾百位,甚至上千位。再由這條超長(zhǎng)指令控制VLIW機(jī)中多個(gè)獨(dú)立工作的功能部件,由每一個(gè)操作段控制一個(gè)功能部件,相當(dāng)于同時(shí)執(zhí)行多條指令。其作用方式如圖6.9(d)所示。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展VLIW較超標(biāo)量具有更高的并行處理能力,并且對(duì)優(yōu)化編譯器的要求更高,Cache的容量要求更大些。VLIW體系結(jié)構(gòu)計(jì)算機(jī)設(shè)置有一個(gè)超長(zhǎng)指令寄存器,其中有n個(gè)字段分別控制n個(gè)運(yùn)算器,其他控制字段是順序控制字段等。n個(gè)運(yùn)算器通常是結(jié)構(gòu)相同的ALU(算術(shù)邏輯運(yùn)算部件),共享容量較大的寄存器堆,運(yùn)算器的源操作數(shù)一般由寄存器堆提供,運(yùn)算結(jié)果一般存放回寄存器里。n個(gè)運(yùn)算器由同一時(shí)鐘驅(qū)動(dòng),在同一時(shí)刻控制n個(gè)運(yùn)算器完成超長(zhǎng)指令的功能。所以,一般而言,VLIW有下列3大特征?!我豢刂屏?,只有一個(gè)程序控制器,每個(gè)時(shí)鐘周期啟動(dòng)一條超長(zhǎng)指令;·超長(zhǎng)指令被劃分成若干個(gè)字段,每個(gè)字段直接地、獨(dú)立地控制每個(gè)ALU;·由編譯碼安排,在一個(gè)周期中執(zhí)行的不只是一個(gè)操作,可以是一組不同的操作,這些操作各自作用于獨(dú)立的數(shù)據(jù)對(duì)象。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展優(yōu)化編譯器是VLIW體系結(jié)構(gòu)計(jì)算機(jī)的關(guān)鍵。優(yōu)化編譯器使用的常用技術(shù)是“壓縮”技術(shù),它將串行的操作序列合并轉(zhuǎn)換成為并行的指令序列。人們認(rèn)為,VLIW技術(shù)與優(yōu)化編譯器的結(jié)合,將是解決程序指令級(jí)細(xì)粒度并行性的一種有效方法。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.2.3PentiumCPUPentium是Intel公司于1993年推出的新一代32位微處理器。它的集成度為310萬個(gè)晶體管(Intel8088僅為2.9萬個(gè),Intel80286為14.4萬個(gè),80486為120萬個(gè)),其中除70%的晶體管用于與80386兼容的單元外,絕大部分用于提高整機(jī)性能上,如優(yōu)化的超高速緩存、超標(biāo)量結(jié)構(gòu)及超流水線、轉(zhuǎn)移指令預(yù)測(cè)、高速浮點(diǎn)部件等,從而使它在微型計(jì)算機(jī)發(fā)展史上占有重要的地位。它有如下特點(diǎn)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展1.超標(biāo)量處理結(jié)構(gòu)如圖6.10所示,Pentium的超標(biāo)量處理結(jié)構(gòu)指在硬件上具有兩條分開的整數(shù)流水線──U流水線和V流水線。每條流水線在一個(gè)周期內(nèi)可流出一條常用指令,整個(gè)系統(tǒng)可以在一個(gè)周期內(nèi)流出兩條整數(shù)指令。兩條流水線分別擁有自己的ALU,當(dāng)兩條指令不相關(guān)時(shí),Pentium便可以同時(shí)執(zhí)行它們。對(duì)于簡(jiǎn)單命令,Pentium處理器利用硬件上的布線邏輯代替微代碼指令;對(duì)于較復(fù)雜的指令,Pentium處理器則采用經(jīng)過優(yōu)化的微代碼,通過優(yōu)化來影響編譯生成命令的順序。

圖6.11(a)和

(b)分別為Intel80486CPU和PentiumCPU整數(shù)流水線的執(zhí)行情況。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.獨(dú)立的指令和數(shù)據(jù)超高速Cache為了適應(yīng)兩條整數(shù)流水線對(duì)指令和數(shù)據(jù)的雙倍訪問,Pentium為指令和數(shù)據(jù)各設(shè)了一個(gè)獨(dú)立的超高速緩沖存儲(chǔ)器,使它們互不干擾,減少爭(zhēng)用Cache的沖突。Pentium芯片上的指令超高速緩存和數(shù)據(jù)超高速緩存容量都是8KB。它們是雙路組相聯(lián)(two-waysetassociative)結(jié)構(gòu),與主存交換信息時(shí)的基本單位是行。每一行的長(zhǎng)度都是32個(gè)字節(jié)。每個(gè)超高速緩存都有一個(gè)專用并行轉(zhuǎn)換后備緩沖器TLB(TranslationLookasideBuffer),把線性地址轉(zhuǎn)換為物理地址。數(shù)據(jù)超高速緩存的標(biāo)志是三重的,可以支持在一個(gè)相同周期內(nèi)執(zhí)行兩個(gè)數(shù)據(jù)傳送和一個(gè)查詢(inquire)。這樣,當(dāng)兩個(gè)并行的ALU都需要操作數(shù)時(shí),可同時(shí)訪問數(shù)據(jù)超高速緩存。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展Pentium處理器的數(shù)據(jù)高速緩沖存儲(chǔ)器還采用了兩項(xiàng)重要技術(shù):回寫式(writeback)高速緩沖及MESI(Modified,Exclusive,Shared,Invalid──修改/獨(dú)用/共享/無效)協(xié)議?;貙懯郊夹g(shù)是指當(dāng)寫操作命中超高速緩存時(shí),不需要像通寫(writethrough)方式那樣把數(shù)據(jù)寫入超高速緩存的同時(shí)即寫入主存,而是采用將CPU送來的數(shù)據(jù)寫入超高速緩存時(shí)在對(duì)應(yīng)的超高速緩存標(biāo)志位(modifiedbit)上做標(biāo)志的方法,表明此行內(nèi)容與主存中的原本內(nèi)容已不一致,等到該行需要更新時(shí)再?gòu)?fù)制回主存。此技術(shù)可以減少內(nèi)存寫入操作次數(shù),提高存儲(chǔ)系統(tǒng)的整體性能。MESI協(xié)議則可以確保超高速緩存內(nèi)數(shù)據(jù)與主存數(shù)據(jù)的一致性,這對(duì)于先進(jìn)的多處理器系統(tǒng)極為重要,因?yàn)槎鄠€(gè)處理器經(jīng)常需要同時(shí)使用同一組數(shù)據(jù)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.轉(zhuǎn)移指令預(yù)測(cè)Pentium有兩個(gè)行長(zhǎng)為32字節(jié)的預(yù)取緩沖區(qū)。Pentium處理器有一個(gè)轉(zhuǎn)移目標(biāo)緩沖存儲(chǔ)器BTB(BranchTargetBuffer)用以保存有關(guān)的歷史信息,在遇到轉(zhuǎn)移時(shí),預(yù)測(cè)是否發(fā)生轉(zhuǎn)移以及將使用哪一條支線,預(yù)測(cè)準(zhǔn)則是基于先前曾使用的支線將會(huì)再度使用。如果BTB預(yù)測(cè)不發(fā)生轉(zhuǎn)移,預(yù)取指令將繼續(xù)進(jìn)行;如果BTB預(yù)測(cè)將發(fā)生轉(zhuǎn)移,則另一個(gè)預(yù)取緩沖區(qū)將根據(jù)預(yù)測(cè)預(yù)取指令。因此,不管轉(zhuǎn)移實(shí)際上發(fā)生與否,所需的指令永遠(yuǎn)是在執(zhí)行以前預(yù)先取出來。如果BTB預(yù)測(cè)正確,流水線將毫不延遲地執(zhí)行下去,否則Pentium將盡快使流水線得到刷新,并且去取正確的指令。當(dāng)然,這種情況會(huì)產(chǎn)生至少3個(gè)時(shí)鐘周期的延遲。與其他方案相比較,Pentium所選用的BTB結(jié)構(gòu)具有軟件透明性,即不需將程序代碼重新編譯即可享用,因此能全面提高整機(jī)速度及應(yīng)用軟件的性能。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展4.高性能的浮點(diǎn)運(yùn)算單元早期的微處理器不具備高精度的浮點(diǎn)運(yùn)算功能,要進(jìn)行復(fù)雜計(jì)算及圖形處理必須借助浮點(diǎn)運(yùn)算協(xié)處理器。Intel80486在CPU中增加了內(nèi)置浮點(diǎn)運(yùn)算協(xié)處理器,而Pentium又在80486的基礎(chǔ)上作了重大改進(jìn)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展它的浮點(diǎn)部件內(nèi)具有自己的浮點(diǎn)寄存器堆、加法器和乘/除法器,故在一個(gè)機(jī)器周期內(nèi)它也可發(fā)出一條浮點(diǎn)指令(最多也可發(fā)兩條,但其中有一條必須是交換指令)。它的強(qiáng)化的FPU單元含有八級(jí)流水線及硬件實(shí)現(xiàn)的運(yùn)算功能。8級(jí)流水線中前5級(jí)是和整數(shù)部件相同的,但后3級(jí)是專用的,如圖6.12所示其中整數(shù)指令把X1作為WB(回寫)使用。大部分浮點(diǎn)指令首先在其中的一個(gè)整數(shù)流水線內(nèi)開始執(zhí)行,然后移往浮點(diǎn)流水線。對(duì)于常用的浮點(diǎn)運(yùn)算如加、乘及除等,均用硬件實(shí)施,以提高執(zhí)行速度。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展5.其他技術(shù)特點(diǎn)(1)增強(qiáng)的64位數(shù)據(jù)總線Pentium把數(shù)據(jù)超高速緩存與總線部件之間的數(shù)據(jù)總線擴(kuò)展為64位,使得66MHZ下的數(shù)據(jù)傳輸率提高到528Mb/s,而486在50MHz下數(shù)據(jù)傳輸率為16Mb/s。Pentium處理器還采取了總線周期流水線技術(shù),增加了總線帶寬,可以使兩個(gè)總線周期同時(shí)進(jìn)行。Pentium處理器還支持突發(fā)式讀周期和突發(fā)式回寫周期操作。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(2)多重處理支援Pentium最適合于兩個(gè)或多個(gè)Pentium的多重處理系統(tǒng)。Pentium處理器運(yùn)用MESI協(xié)議使超高速緩存與主存之間的數(shù)據(jù)保持一致性。因此,當(dāng)一個(gè)處理器存取已緩存于另一個(gè)處理器中的數(shù)據(jù)時(shí),能夠確保取得正確的數(shù)據(jù)。若數(shù)據(jù)已被修改,則所有存取該數(shù)據(jù)的處理將獲得已修改的數(shù)據(jù)版本。Pentium處理器還可確保系統(tǒng)按照編程時(shí)的次序來執(zhí)行應(yīng)用軟件,這種強(qiáng)行定序的功能可以確保為單處理器編寫的軟件也能在多處理環(huán)境下正確執(zhí)行。(3)錯(cuò)誤檢測(cè)和功能冗余校驗(yàn)技術(shù)Pentium處理器增設(shè)了大型機(jī)中才有的錯(cuò)誤檢驗(yàn)和功能冗余校驗(yàn)技術(shù),以使計(jì)算網(wǎng)絡(luò)中的數(shù)據(jù)保持完整性。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.2.4RISC處理器的體系結(jié)構(gòu)下面介紹RISC機(jī)為提高速度而在內(nèi)體系結(jié)構(gòu)方面采用的一些技術(shù)措施。1.重疊寄存器窗口

有32個(gè)通用寄存器,有的已達(dá)上千個(gè)。通用寄存器的增加,能使RISC的大多數(shù)指令只在寄存器間進(jìn)行操作,緩解了主存帶寬造成的瓶頸。但是寄存器數(shù)量的增多,又帶來寄存器資源管理與分配的問題。解決這個(gè)矛盾可以采用兩種策略:一種是軟件法,即設(shè)計(jì)一套寄存器的分配算法并通過編譯程序的優(yōu)化處理來解決,如斯坦福大學(xué)的MIPS(MillionInstructionPerSecond,每秒百萬條指令)系統(tǒng)等;另一種是硬件法,稱為寄存器窗口(registerwindows)技術(shù)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展寄存器窗口技術(shù)是一種加快程序執(zhí)行的技術(shù),主要解決過程調(diào)用時(shí)因頻繁地進(jìn)行保存和恢復(fù)操作而使程序執(zhí)行效率的降低。因?yàn)楸M管RISC能將空出的控制面積用以添加大量的寄存器,可以把更多操作數(shù)和公用參數(shù)存放在寄存器中,減少訪存的次數(shù),但若發(fā)生過程調(diào)用,不僅過程間要進(jìn)行參數(shù)傳遞,而且主調(diào)過程要進(jìn)行現(xiàn)場(chǎng)的保護(hù)和恢復(fù),寄存器與主存間的數(shù)據(jù)傳送會(huì)很頻繁。寄存器窗口就是在這一地方挖掘潛力的一種技術(shù)。它的基本思想是把整個(gè)通用寄存器分成多個(gè)小組,給每個(gè)過程分配一個(gè)寄存器小組,稱為該過程的一個(gè)寄存器窗口。當(dāng)發(fā)生過程調(diào)用時(shí),CPU自動(dòng)地在寄存器窗口之間切換,不再作保存和恢復(fù)操作;相鄰的寄存器窗口間有一部分寄存器是重疊的,以便在過程間進(jìn)行參數(shù)傳遞。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展如圖6.13所示,每個(gè)窗口內(nèi)的寄存器分為3類:·參數(shù)寄存器──用以與上一級(jí)(調(diào)用本過程的過程)交換參數(shù);·本地寄存器──本過程自用;

·暫存寄存器──用以與下一級(jí)(本過程調(diào)用的過程)交換參數(shù)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展

寄存器窗口技術(shù)始于RISCⅠ和Ⅱ機(jī)。RISCⅡ機(jī)共有32個(gè)邏輯寄存器,其中R0~R9為全局寄存器,R10~R31為局部寄存器并劃分為:·R10~R15:暫存寄存器;·R16~R25:本地寄存器;·R26~R31:參數(shù)寄存器。RISCⅡ機(jī)共有138個(gè)32位的物理寄存器,其中的0~9號(hào)是全局寄存器,與R0~R9對(duì)應(yīng),為所有過程公用。余下的128個(gè)寄存器作為局部寄存器被分為8個(gè)寄存器窗口,每個(gè)窗口中有22個(gè)寄存器,與R10~R31對(duì)應(yīng)。圖6.14(P.221)為RISCⅡ的實(shí)際寄存器與邏輯寄存器間的對(duì)應(yīng)關(guān)系。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展8個(gè)窗口按環(huán)形組織,每一個(gè)窗口都與其前后兩個(gè)窗口相重疊,最后一個(gè)窗口與第一個(gè)窗口相重疊。每次過程調(diào)用,進(jìn)行一次窗口切換,并且將各窗口之間的轉(zhuǎn)換通過改變硬件指針實(shí)現(xiàn)。當(dāng)所需寄存器窗口超過8個(gè)時(shí),就會(huì)發(fā)生上溢或下溢。發(fā)生上溢時(shí)需要將一個(gè)窗口的內(nèi)容調(diào)到內(nèi)存,騰出一個(gè)空窗口。發(fā)生一下溢時(shí)的處理與此相反。

2.采用Cache為提高存取指令的速度,RISC設(shè)置指令Cache是很必要的。并且,將數(shù)據(jù)放在Cache也可加快訪存指令的執(zhí)行速度。一般來說,如果選用的Cache工作頻率較高,每個(gè)機(jī)器周期內(nèi)可訪問Cache多次。若對(duì)機(jī)器運(yùn)行速度要求不高,則可考慮將指令和數(shù)據(jù)放在同一個(gè)Cache內(nèi),以動(dòng)態(tài)地協(xié)調(diào)指令和數(shù)據(jù)在Cache中所占的空間比例,提高Cache的利用率,簡(jiǎn)化硬件;否則應(yīng)設(shè)置彼此獨(dú)立的兩個(gè)Cache,分別存放指令和數(shù)據(jù)。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.超標(biāo)量結(jié)構(gòu)RISC機(jī)的指令總數(shù)少、格式固定,尋址方式種類也很少,極有利于流水線的安排,挖掘指令級(jí)的并行性。超標(biāo)量是指微處理器內(nèi)含有多個(gè)指令執(zhí)行單元、多條指令執(zhí)行流水線,以使得處理器的運(yùn)行速度成倍的提高。處理器的超標(biāo)量設(shè)計(jì)方法在現(xiàn)代的處理器中已被越來越多地采用。如Pentium微處理器是由兩條并行的流水線構(gòu)成,每條流水線都擁有自己的算術(shù)邏輯單元、地址生成電路和數(shù)據(jù)超高速緩沖存儲(chǔ)器接口,使Pentium可以在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行兩條簡(jiǎn)單指令,比相同時(shí)鐘頻率的80486DX性能提高了一倍。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展4.RISC編譯系統(tǒng)計(jì)算機(jī)的高級(jí)語言程序必須經(jīng)過編譯將它翻譯成機(jī)器語言的可執(zhí)行程序后,才能在機(jī)器上運(yùn)行。在編譯過程中還要對(duì)程序進(jìn)行優(yōu)化,以便產(chǎn)生高質(zhì)量的執(zhí)行程序。CISC設(shè)計(jì)思想認(rèn)為,指令愈接近高級(jí)語言的語句,愈容易編譯。其實(shí)并不盡然,當(dāng)指令過多,每指令又有大量的尋址方式可供選擇時(shí),編譯程序每走一步,都面臨大量需要選擇的、具有類似效果的指令和尋址方式。這將使編譯工作復(fù)雜化。同時(shí)指令長(zhǎng)度和格式的多種多樣性使得編譯優(yōu)化時(shí)更換或取消指令變得困難。RISC機(jī)器的指令少、尋址方式少、編譯程序在編譯時(shí)通常只有一種選擇,使編譯程序的有關(guān)部分短而簡(jiǎn)單,從而提高了編譯效率。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展為了節(jié)省軟件開支,縮短研制時(shí)間,編譯程序在編譯過程中一般先將通過了詞法和語法等檢查的高級(jí)語言源程序轉(zhuǎn)換成中間代碼;然后對(duì)中間代碼程序進(jìn)行優(yōu)化,提高程序的執(zhí)行效率;最后將它轉(zhuǎn)換成可執(zhí)行代碼(機(jī)器語言)程序。對(duì)某種機(jī)器來說,各種高級(jí)語言編譯器可以使用相同的優(yōu)化和轉(zhuǎn)換連接程序。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展RISC機(jī)器的主要策略是“以快取勝”,為了提高程序執(zhí)行的速度,編譯程序方面要采取如下一些技術(shù)措施:(1)為眾多的寄存器設(shè)計(jì)好分配算法,盡量減少訪存次數(shù)。(2)要預(yù)先編好一些盡量不進(jìn)行寄存器內(nèi)容以及機(jī)器狀態(tài)的保存和恢復(fù)工作的緊湊子程序,以滿足某些復(fù)雜操作的需要。

(3)恰當(dāng)?shù)卣{(diào)整指令順序,減少指令相關(guān)和數(shù)據(jù)相關(guān)對(duì)流水線的影響。在RISC中,可能引起流水線延遲的主要有兩條指令:轉(zhuǎn)移和取數(shù)。CISC中的流水線一般采用硬件互鎖或猜測(cè)法等來解決由于指令相關(guān)而引起的斷流問題。RISC則主要依靠編譯器中的優(yōu)化程序,進(jìn)行指令重組來解決。因此,RISC優(yōu)勢(shì)的發(fā)揮除了硬件技術(shù)的支持外,很大程度上取決于編譯器代碼生成與優(yōu)化的措施是否得力。這種軟硬件相互融合的技術(shù)正是RISC技術(shù)的精華。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展在RISC中,避免流水線因執(zhí)行轉(zhuǎn)移指令而斷流的方法是用軟件的靜態(tài)指令調(diào)度方法,稱為推遲轉(zhuǎn)移(delayedbranches)方法。一般說來,在流水線上由于“取下一條指令“同”執(zhí)行上一條”并行進(jìn)行,這樣在轉(zhuǎn)移指令產(chǎn)生轉(zhuǎn)移地址時(shí),已經(jīng)來不及控制取下一條指令。推遲轉(zhuǎn)移方法是在轉(zhuǎn)移指令后面插入一條或n條(視流水線情況而定)與轉(zhuǎn)移地址無關(guān)的指令,以破壞指令相關(guān)。由于RISC機(jī)每條指令只要一個(gè)周期,所以只插入一條就可以。編譯程序具體是這樣實(shí)施的:在編譯過程中,編譯程序先在所有的轉(zhuǎn)移指令后面添加一條空操作(NOOP)指令,使流水線規(guī)整化;優(yōu)化時(shí)再設(shè)法用選出(調(diào)整)的有效指令替代。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展5.PowerPCPowerPC是IBM,Apple,Moterola三家公司于1991年結(jié)盟生產(chǎn)的微機(jī)。它使用了Motorola的芯片制造技術(shù)、Apple的微機(jī)軟件、IBM的體系結(jié)構(gòu),向長(zhǎng)期被Intel占據(jù)的微處理器市場(chǎng)進(jìn)軍。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展PowerPC中的“PC”意為“powerfulchip”,其中的“Power”基于20世紀(jì)80年代后期IBM在其801小型機(jī)的基礎(chǔ)上開發(fā)的工作站和服務(wù)器中的Power體系,意為“PerformenceOptimizaionWithEnhancedRISC(性能優(yōu)化的增強(qiáng)型RISC)”。PowerPC的第一個(gè)特點(diǎn)是高超的性能,價(jià)廉,容易仿真CISC指令集,可運(yùn)行大量的現(xiàn)成的CISC計(jì)算機(jī)應(yīng)用軟件,即集工作站卓越性能、PC機(jī)的低成本及運(yùn)行眾多的軟件等優(yōu)點(diǎn)于一身。它的第二個(gè)特點(diǎn)是可擴(kuò)性強(qiáng),可覆蓋從PDA(個(gè)人數(shù)字助理)到多處理、超并行的中大型機(jī),用單芯片提供整個(gè)解決方案。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展

圖6.15是PowerPC601的內(nèi)部體系結(jié)構(gòu)。PowerPC601是PowerPC第一個(gè)產(chǎn)品,設(shè)有32位的地址總線和64位的數(shù)據(jù)總線,工作頻率分50,66,80MHz3種,并行執(zhí)行定點(diǎn)、浮點(diǎn)及分支能力,統(tǒng)一的32KB8路Cache,目標(biāo)市場(chǎng)為中價(jià)的桌上型計(jì)算機(jī)。它有3個(gè)處理單元:分支單元、(BPU)、整數(shù)處理單元(IU)和浮點(diǎn)執(zhí)行單元(FPU)。IU和FPU分別包括4個(gè)子單元;

·取指;

·分析指令(對(duì)指令解析,計(jì)算地址并取操作符);

·執(zhí)行;

·存儲(chǔ)結(jié)果(到數(shù)據(jù)高速緩沖存儲(chǔ)器)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展這4個(gè)子單元,組成指令流水線。當(dāng)編譯過的程序在PowerPC微處理器上運(yùn)行時(shí),由于所有指令的執(zhí)行步驟都分解為如上4步,所以同一周期內(nèi)處理器可解釋多條指令,只有碰到轉(zhuǎn)移指令的條件不滿足時(shí),才需暫停。PowerPC與Pentium的比較見表6.1。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.2.5RISC、CISC、VLIW技術(shù)的融合1.CRIPCISC體系結(jié)構(gòu)的功能提高到一定程度后,指令系統(tǒng)的復(fù)雜性便成為其進(jìn)一步提高功能的包袱,同時(shí)由于RISC技術(shù)的強(qiáng)烈沖擊,迫使一些CISC制造商開始吸收RISC技術(shù),開發(fā)和推出融CISC和RISC技術(shù)為一體的CRIP(CISC-RISCProcessor)技術(shù)產(chǎn)品。由表6.1可見,Intel公司的Pentium已經(jīng)吸收了RISC技術(shù);1993年3月推出的Pentium66/60芯片成為典型的CRIP型微處理機(jī);1995年面世的PentiumPro,則是CRIP型體系結(jié)構(gòu)的進(jìn)一步完善和發(fā)展。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展Pentium66/60CPU采用超標(biāo)量技術(shù)實(shí)現(xiàn),它設(shè)置有3個(gè)指令處理部件:整數(shù)處理部件有雙系統(tǒng)流水線(V-流水線和U-流水線);一個(gè)時(shí)鐘周期可以并行地執(zhí)行兩條整數(shù)指令;i80386兼容部件,采用微碼處理指令技術(shù),負(fù)責(zé)處理在一個(gè)時(shí)鐘周期內(nèi)不能完成的復(fù)雜指令;浮點(diǎn)處理部件采用超級(jí)流水線技術(shù)實(shí)現(xiàn)。Pentiumpro是Pentium的換代產(chǎn)品,它把X86的CISC指令分解成若干個(gè)類似于RISC指令的比較簡(jiǎn)單的微操作。這樣一方面保持了與X86體系結(jié)構(gòu)的兼容性,又吸收了RISC技術(shù)的優(yōu)點(diǎn)。它的另一個(gè)設(shè)計(jì)特色是亂序(out-of-roder)執(zhí)行和推測(cè)執(zhí)行。亂序執(zhí)行同轉(zhuǎn)移預(yù)測(cè)和推測(cè)執(zhí)行(specutativeexecution)機(jī)構(gòu)結(jié)合在一起,允許CPU使指令最有效地利用內(nèi)部資源。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展Intel公司宣稱Pentiumpro通常可以看到超越程序計(jì)數(shù)器的20~30條指令,Pentiumpro對(duì)轉(zhuǎn)移預(yù)測(cè)的正確率高達(dá)90%以上。由于它具備更巨大的BTB(512個(gè)入口的轉(zhuǎn)移目標(biāo)緩沖器)和ROB(40個(gè)入口的重新排序緩沖器),使Pentium可以預(yù)測(cè)10~15層的嵌套轉(zhuǎn)移。另外,它還采用了3路超標(biāo)量結(jié)構(gòu)和無阻塞的Cache方案。它的完全分離的64位前臺(tái)總線和后臺(tái)總線,使第二級(jí)Cache不必同主存、外設(shè)分時(shí)訪問總線。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展2.EPIC1994年,Intel和HP決定聯(lián)合開發(fā)新一代微處理器——基于IA-64架構(gòu)的Merced,并共同定義了顯性并行指令計(jì)算技術(shù)——EPIC(ExplicitlyParallelInstructionComputing,顯性并行指令計(jì)算)。EPIC是一種超越超標(biāo)量的新模式,它克服了VLIW處理器的缺點(diǎn),簡(jiǎn)單地說,就是實(shí)現(xiàn)下面的3步:(1)由編譯器先分析指令間的依賴關(guān)系;(2)編譯器將沒有依賴關(guān)系的指令,按最多是3個(gè)指令為一組,組合成多個(gè)“組”;(3)由內(nèi)置的執(zhí)行單元將分成組的指令群并行執(zhí)行。

由于每條指令究竟分給哪一個(gè)執(zhí)行單元是由軟件決定的,因而利用簡(jiǎn)單的硬件就可以提高指令的并行度,降低了處理器的制造成本。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展3.RVIP技術(shù)和CRVIP技術(shù)第一代超標(biāo)量微處理機(jī)只能同時(shí)分發(fā)2~3條指令。第二代超標(biāo)量微處理機(jī)產(chǎn)品,已可以同時(shí)分發(fā)4條指令。它們的特征之一,是設(shè)有亂序(out-of-order)控制執(zhí)行機(jī)構(gòu)。從第一代到第三代超標(biāo)量結(jié)構(gòu)微處理機(jī)的設(shè)計(jì)表明,采用超標(biāo)量結(jié)構(gòu)時(shí),需要弄清楚內(nèi)藏于微處理機(jī)中的分發(fā)電路與程序指令之間的關(guān)系,并要依靠硬件系統(tǒng)(分發(fā)電路、執(zhí)行單元的控制電路等)對(duì)指令的處理順序?qū)嵤﹦?dòng)態(tài)的控制。于是,硬件系統(tǒng)的復(fù)雜性便隨著工作頻率的提高和同時(shí)分發(fā)指令條數(shù)的增多而增強(qiáng)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展隨著超標(biāo)量結(jié)構(gòu)的不斷發(fā)展,微處理機(jī)硬件系統(tǒng)越來越復(fù)雜化龐大化,從而失掉了原先那種以結(jié)構(gòu)簡(jiǎn)單而崛起的RISC技術(shù)的優(yōu)越性。人們估計(jì),單靠RISC超標(biāo)量結(jié)構(gòu)或者單靠CRIP混合技術(shù)的超標(biāo)量體系結(jié)構(gòu),去提高性能指標(biāo),將會(huì)越來越困難。因此,不少微處理機(jī)設(shè)計(jì)者已開始將目光轉(zhuǎn)向了VLIW(超長(zhǎng)指令字)技術(shù)。實(shí)行上,VLIW技術(shù)同RISC超標(biāo)量結(jié)構(gòu)技術(shù)是密切相聯(lián)的。這是因?yàn)?,VLIW體系結(jié)構(gòu)計(jì)算機(jī)是微碼設(shè)計(jì)、并行處理、RISC技術(shù)的結(jié)合。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展企圖將RISC超標(biāo)量結(jié)構(gòu)與VLIW技術(shù)融為一體,或者將CRIP混合結(jié)構(gòu)與VLIW技術(shù)融為一體。這就是RVIP(RISC-VLIWProcessor)

技術(shù)和CRVIP(CISC-RISC-VLIWProcessor)技術(shù)。另一方面,RISC超標(biāo)量結(jié)構(gòu)技術(shù)雖然產(chǎn)生于20世紀(jì)80年代初期,但它的發(fā)展步伐較VLIW技術(shù)快。VILW計(jì)算機(jī)在體系結(jié)構(gòu)方面,往往采納RISC體系結(jié)構(gòu)的技術(shù)特點(diǎn)。例如,VLIW中的大多數(shù)基本運(yùn)算操作在一個(gè)時(shí)鐘周期內(nèi)完成;VLIW計(jì)算機(jī)的寄存器堆與RISC體系結(jié)構(gòu)的“雷同”,它一般具有較大容量,使大多數(shù)操作在寄存器與寄存器之間完成。因此,盡管VLIW計(jì)算機(jī)的指令字很長(zhǎng),但廣義地看來,仍應(yīng)把它劃歸RISC技術(shù)范疇。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展但是,這不是VLIW技術(shù)取代超標(biāo)量結(jié)構(gòu)技術(shù),而是兩者的有機(jī)融合為一體,在融合VLIW和超標(biāo)量結(jié)構(gòu)技術(shù)的RVIP型或者CRVIP型微處理機(jī)中,將不必在其執(zhí)行部件中設(shè)置復(fù)雜的執(zhí)行順序控制電路。因?yàn)樵谥噶罘职l(fā)調(diào)度之前就已經(jīng)弄清楚了這些指令之間的相關(guān)聯(lián)性。VLIW技術(shù)滲入的顯著效果之一,就是它消除了超標(biāo)量結(jié)構(gòu)的過分的復(fù)雜性,從而使硬件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)獲得簡(jiǎn)化。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展6.2.6流水線向量處理機(jī)1.向量計(jì)算在科學(xué)研究、工程設(shè)計(jì)、經(jīng)濟(jì)管理中,常常要把批量有序數(shù)據(jù)作為一個(gè)整體進(jìn)行精確計(jì)算。這些批量有序數(shù)據(jù)的整體就稱為向量。通常向量中的元素是標(biāo)量。標(biāo)量是具有獨(dú)立邏輯意義的最小數(shù)據(jù)單位,它可以是一個(gè)浮點(diǎn)數(shù)、定點(diǎn)數(shù)、邏輯量或字符,如一個(gè)年齡、一個(gè)性別等。以標(biāo)量為對(duì)象的運(yùn)算稱標(biāo)量運(yùn)算。向量中的各標(biāo)量元素之間存在著順序關(guān)系,如

A=(a0,a1,a2,…,an-1)計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展就是說,向量A由n個(gè)標(biāo)量組成,這n個(gè)標(biāo)量存在前后順序。其中n稱為向量的長(zhǎng)度。向量運(yùn)算是把兩個(gè)向量(設(shè)為A,B)的對(duì)應(yīng)元素進(jìn)行運(yùn)算,產(chǎn)生一個(gè)結(jié)果向量(設(shè)為C)。如對(duì)運(yùn)算

C=A+B也可以表示成

ci=ai+bi0≤i≤n-1在一般通用計(jì)算機(jī)中,向量運(yùn)算要用循環(huán)結(jié)構(gòu)進(jìn)行,如

for(i=0;i<=n-1;i++)ci=ai+bi;計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展顯然,其效率是很低的。向量處理機(jī)的基本思想是并行地對(duì)這3個(gè)向量的各分量進(jìn)行對(duì)應(yīng)運(yùn)算,如對(duì)上述向量加可以采用圖6.16所示的機(jī)器結(jié)構(gòu),其目的是用一條指令便可以處理n個(gè)或n對(duì)數(shù)據(jù)。當(dāng)然向量計(jì)算機(jī)也具有標(biāo)量處理功能。2.向量的流水處理向量處理機(jī)有兩種典型的結(jié)構(gòu):陣列結(jié)構(gòu)和流水結(jié)構(gòu)。陣列結(jié)構(gòu)采用多處理結(jié)構(gòu),是一種完全并行處理方式,該結(jié)構(gòu)將在6.3節(jié)中介紹,這里先介紹流水結(jié)構(gòu)。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展通常,向量元素主要是浮點(diǎn)數(shù),而浮點(diǎn)數(shù)的運(yùn)算比較復(fù)雜,需要經(jīng)過多個(gè)節(jié)拍才能完成,所以目前絕大多數(shù)向量計(jì)算機(jī)都采用流水線結(jié)構(gòu),其中有用于微型計(jì)算機(jī)的協(xié)處理器,也有用于高速的超級(jí)計(jì)算機(jī),并且一般稱向量計(jì)算機(jī)就是指流水結(jié)結(jié)構(gòu)的向量計(jì)算機(jī)。對(duì)向量的處理要設(shè)法避免流水線功能的頻繁切換以及操作數(shù)間的相關(guān),才能使流水線暢通、效率最高,保持每個(gè)節(jié)拍能送出一個(gè)結(jié)果元素,這就要求采取合適的處理方式。假定A,B,C,D,都是長(zhǎng)度為n的向量,并有一個(gè)向量運(yùn)算

D=A×(B+C)計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展若采取如下處理順序

d0=a0×(b0+c0)d1=a1×(b1+c1)

┆di=ai×(bi+ci)

┆dn-1=an-1×(bn-1+cn-1)就要反復(fù)進(jìn)行加與乘的運(yùn)算,為此要不斷切換流水線的功能,計(jì)算每個(gè)di的一次加和一次乘之間存在著數(shù)相關(guān)。如

bi+ci→kiki×ai→di

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展這兩次操作之間,因?yàn)閗i存在讀-寫相關(guān),所以每次都要等待。使流水作業(yè)效率降低。但是如果采用如下的處理順序

K=B+C

D=K×A加與乘之間只切換一次。

計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展

3.向量計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)

向量計(jì)算機(jī)系統(tǒng)的存儲(chǔ)系統(tǒng)和流水線運(yùn)算器是它的最關(guān)鍵的兩個(gè)部件,它要求存儲(chǔ)器系統(tǒng)能連續(xù)不斷地向運(yùn)算流水線提供數(shù)據(jù),并連續(xù)不斷地接收來自運(yùn)算流水線的數(shù)據(jù)。為了保證流水線的連續(xù)作業(yè),向量計(jì)算機(jī)應(yīng)設(shè)法維持連續(xù)的數(shù)據(jù)流,如調(diào)整操作次序以減少數(shù)據(jù)流的請(qǐng)求以及改進(jìn)體系結(jié)構(gòu)等。在體系結(jié)構(gòu)方面,主要的是要求存儲(chǔ)器系統(tǒng)能滿足運(yùn)算器的帶寬要求。如果讀操作數(shù)、運(yùn)算、寫操作數(shù)要在一個(gè)時(shí)鐘周期內(nèi)完成,就要求存儲(chǔ)系統(tǒng)能在一個(gè)時(shí)鐘周期內(nèi)讀出兩個(gè)操作數(shù)并寫回一個(gè)操作數(shù)。而一般的RAM在一個(gè)時(shí)鐘周期最多只能完成一個(gè)存儲(chǔ)周期。也就是說,向量計(jì)算機(jī)中的存儲(chǔ)系統(tǒng)至少應(yīng)具有3倍于一般存儲(chǔ)器系統(tǒng)的帶寬,目前主要采用如下的兩種方法。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展(1)用多個(gè)獨(dú)立存儲(chǔ)模塊,支持相對(duì)獨(dú)立的數(shù)據(jù)并發(fā)訪問。這一方法的基本思路是,如果一個(gè)存儲(chǔ)模塊在一個(gè)時(shí)鐘周期內(nèi)最多能進(jìn)行一次讀/寫,那么要在一個(gè)時(shí)鐘周期內(nèi)讀/寫n個(gè)獨(dú)立數(shù)據(jù)就需要n個(gè)獨(dú)立的存儲(chǔ)模塊。圖6.17為一個(gè)具有8個(gè)三端口存儲(chǔ)模塊存儲(chǔ)系統(tǒng)的向量計(jì)算機(jī)示意圖。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展該系統(tǒng)的每個(gè)存儲(chǔ)模塊與運(yùn)算流水線間有3條相互獨(dú)立的數(shù)據(jù)通路;各條數(shù)據(jù)通路可以同時(shí)工作,但一個(gè)存儲(chǔ)模塊在某一時(shí)刻只能為一個(gè)通路服務(wù)。假定A,B,C3個(gè)向量各由8個(gè)分量組成,分別用

a0,a1,…,a7

b0,b1,…,b7

c0,c1,…,c7表示,為避免沖突,可按圖6.18所示的方式存儲(chǔ)。設(shè)讀操作用“R”表示、讀ai用“Rai”表示,寫操作用“W”表示、寫ci用“Wci”表示,每個(gè)存儲(chǔ)周期占兩個(gè)時(shí)鐘周期,運(yùn)算流水線分為4段,則上述向量計(jì)算機(jī)有如圖6.19所示的工作時(shí)序。如果運(yùn)算器和存儲(chǔ)器工作銜接得非常好,則整個(gè)作業(yè)是非常理想的。計(jì)算機(jī)基礎(chǔ)知識(shí)第6章計(jì)算機(jī)系統(tǒng)的發(fā)展由圖6.19可以看出,運(yùn)算流水線與存儲(chǔ)器間的銜接與存儲(chǔ)方式的關(guān)系很大。按上述存儲(chǔ)方式,Rai總可以與Rbi同步。如果改變存儲(chǔ)方式,如使所有的向量都從M0開始存放,即ai,bi,ci都存放在Mi中,則必須在輸入端增加緩沖器,使A向量延遲2個(gè)時(shí)鐘周期以便與B的對(duì)應(yīng)元素同時(shí)進(jìn)入加法流水線;而輸出緩沖器則要延遲4個(gè)時(shí)鐘周

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論