官术网_书友最值得收藏!

1.2 計算機系統結構的概念

1.2.1 計算機系統的層次結構

計算機系統由硬件(hardware)和軟件(software)組成。人們認識計算機,往往考慮它能起什么作用,用戶該怎樣使用它才能發揮其功能。事實上,從人們使用機器的角度,可以將系統看成是按功能劃分的從第0級至第6級等7層機器級組成的層次結構,如圖1.1所示。其中,第0級和第1級為“實際機器”,第2級至第6級為“虛擬機器”。

圖1.1 計算機系統的層次結構

對“虛擬機器”用戶來說,他是通過該層次的語言來了解和使用計算機的。例如,高級語言程序員面向的就是高級語言計算機,只要熟悉和遵循高級語言的使用規定,所編寫的程序總是能在這臺機器上運行并得到結果,而用不著考慮這臺機器是如何通過下一層的匯編語言或機器語言來實現程序的有關功能,更不用了解底層的硬件是如何工作的。在他看來,“機器”就是能存儲和執行相應語言程序的算法和數據結構的集合體。

“虛擬機器”的特征是由軟件實現機器功能,體現了由機器語言、匯編語言、高級語言到應用程序語言的層次性。一般來說,上層語言語句或命令的功能,是由下層語言的翻譯或解釋來實現的。翻譯(translation)是先用轉換程序將高一級機器上的程序整體變換為低一級機器級上等效的程序,然后再在低一級機器級實現的技術;解釋(interpretation)則是在低一級機器級上用它的一串語句或指令來仿真高級機器級上的一條語句或指令的功能,是通過對高一級的機器級語言程序中的每條語句或指令進行逐條解釋來實現的技術。越往上層,越接近最終用戶而遠離實際機器。

“實際機器”的使用者,其主要任務是設計和維護機器。第1級機器由微程序(固件)實現。所謂固件(firmware)是一種具有軟件功能的硬件,例如將軟件固化在ROM上。一個微程序往往對應一條機器指令,它根據該指令操作所需要的控制時序,配備一套微指令,編寫出微程序,控制信息在寄存器、運算器等之間的傳送。第0級機器是具體的硬聯邏輯電路,實現各個微指令的功能或微操作信號的要求。這些硬件,往往是大規模集成電路及其連接通路。

這里有兩點要指出,一是上述層次的劃分及其層次間的相互關系并非絕對的,它們之間可能有交叉。例如,高級語言程序經編譯后可能跳過匯編語言程序直接以機器語言程序實現;操作系統程序有可能使用高級語言(如C語言)而不是匯編語言編寫;有些機器指令可以直接使用組合邏輯電路實現,不一定非要由微程序解釋實現。

二是軟件和硬件在邏輯上是等效的。原理上,軟件的功能可用硬件或固件完成,硬件的功能也可用軟件模擬完成,只是性能、價格、實現的難易程度不同。例如,一條邏輯運算指令,可直接用組合電路實現;反過來,一次復雜的邏輯運算,即使沒有具體對應的邏輯電路,仍可用一條或若干條機器指令來完成。又如,早期的8位計算機很多沒有乘除法指令,實現乘除法必須用加減移位指令編程來實現。以后的計算機有了乘除法器硬件,就可以設置乘除法指令,直接執行乘除法運算。今天,很多復雜的計算機硬件電路,都可以采用軟件方法編程來實現硬件或固件形式,如基于FPGA(Field Programmable Gate Array)的SOPC(System On Programmable Chip)技術。也就是說,計算機系統發展到今天,軟、硬件的界限變得越來越模糊。具有相同功能的計算機系統,很難說哪些功能只能用軟件實現,哪些功能只能用硬件實現。在滿足應用的前提下,其軟、硬件功能分配的比例,應從系統的應用、效率、速度、成本、資源狀況等多個方面綜合考慮,從而對軟、硬件取舍進行綜合平衡。

1.2.2 計算機系統結構的定義

1.計算機系統結構的含義

計算機系統結構(computer architecture)一詞最早由Amdahl等人在1964年提出。定義為由計算機程序設計者所看到的一個計算機系統的屬性,即概念性結構和功能特性,這實際上是計算機系統的外特性。顯然,不同機器級的使用者看到的計算機屬性是不相同的。在計算機技術中,客觀存在的事物或屬性,從某個角度來看,它好像不存在,稱之為透明性。例如,高級語言程序員所看到的計算機屬性主要是高級語言系統,以及操作系統、數據庫管理系統、網絡軟件等用戶界面。那些匯編語言程序員所看到的計算機屬性,例如通用寄存器、中斷機構等,對他來說是透明的。可見,不同機器級具有不同的外特性,因而具有不同的計算機系統結構。

傳統機器級的系統結構的含義,正是Amdahl等人討論系統結構的立腳點。這一級處于“虛擬機器”和“實際機器”,也即軟件和硬件的交界面,是各級程序設計者所看到的機器物理系統的抽象。在這一級,實際上體現了系統軟硬件功能的比例分配和平衡。因此,計算機系統結構研究的是軟、硬件之間功能分配及對傳統機器級界面的確定,提供機器語言、匯編語言程序員,或編譯程序生成系統為其設計或生成的程序能在機器上正確運行,所應看到和遵循的計算機屬性。

2007年,John L. Hennessy和David A. Patterson在其新版的權威著作《計算機系統結構——量化研究方法》(Computer Architecture: A Quantitative Approach)中提出,系統結構一詞應包含計算機設計的三個方面:指令集系統結構、組成和硬件,后者習慣稱為計算機實現。他們所說的指令集系統結構(Instruction Set Architecture,ISA),指的就是傳統機器級的系統結構。一般情況下,ISA都被歸類為通用的寄存器系統結構,其操作數是寄存器或存儲器地址。如80x86擁有16個通用寄存器和16個支持浮點運算的寄存器,MIPS擁有32個通用寄存器和32個浮點寄存器。前者可通過多種指令訪問存儲器,稱為register-memory式ISA,后者只能通過裝載和存儲指令來訪問存儲器,稱為load-store式ISA。ISA的屬性包括:

① 機器內的數據表示,即硬件能直接識別和處理的數據類型。

② 尋址方式,包括最小可尋址單位、尋址類別、地址計算等。

③ 通用或專用寄存器的設置、字長、數量和使用方式。

④ 指令系統,包括機器指令的操作類型、格式、指令間的排序和控制機構等。

⑤ 存儲系統組織,包括內存的最小編址單位、編址方式、容量、最大可編址空間等。

⑥ 中斷機構,包括中斷類型、中斷響應、中斷向量、中斷處理程序功能等。

⑦ 機器工作狀態的定義和切換,如管態和目態等。

⑧ 輸入/輸出結構,包括輸入/輸出的連接、傳送方式、流量、操作結束、出錯標志等。

⑨ 信息保護,包括信息保護方式和硬件對信息保護的支持等。

本書側重于指令系統結構(ISA)的設計與描述,如無特別聲明,書中用詞“系統結構”均指的是指令集系統結構。

2.計算機組成與實現

計算機組成(computer organization)指的是系統結構的邏輯實現,包括機器級內的數據流和控制流的組成及邏輯設計等。計算機組成的任務是在指令集系統結構確定分配給硬件系統的功能和概念結構之后,研究各組成部分的內部構造和相互聯系,以實現機器指令級的各種功能和特性。這種聯系包括各功能部件的配置、相互連接和相互作用。

各功能部件的性能參數相互匹配,是計算機組成合理的重要標志,因而相應地就有很多計算機組成方法。例如,設計出層次存儲系統和虛擬存儲技術來解決主存容量和速度問題。為了平衡輸入/輸出流量設備和處理器之間的信息流量,研究出通道、外圍處理機等方式。為了提高處理機的速度,研究出先行控制、流水線、多執行部件等方式。為了加快運算速度、高效優化運算器結構,出現了多種自動調度算法和組成結構等。

計算機組成要解決的問題是在所希望達到的性能和價格下,怎樣最佳、最合理地把各種設備和部件組織成計算機,以實現所確定的ISA。一般情況下,計算機組成設計要確定的方面應包括:

① 數據通路寬度的確定,即數據總線上一次并行傳送的信息位數。

② 專用部件的設置,即應設置哪些專用部件,如乘除法器、浮點運算器、字符處理部件、地址運算部件等。專用部件設置的數量與機器要達到的速度、專用部件的使用頻率及允許的價格等有關。

③ 各種操作對部件的共享程度;若共享程度高,使用部件會少,但必須分時使用,這又限制了速度。若多設置部件降低共享程度,即操作并行度高可提高速度,但成本也會提高。

④ 功能部件的并行度,功能部件的控制和處理方式是采用順序串行,還是采用重疊、流水線或分布處理。

⑤ 控制機構的組成方式,事件、操作的排序機構是采用硬聯控制還是用微程序控制,是單機處理還是多機處理或功能分布處理。

⑥ 緩沖和排隊技術,在不同部件之間怎樣設置及設置多大容量的緩沖器來彌補它們的速度差異;是用隨機方式,還是FIFO、FILO、優先級或循環方式來安排處理事件順序。

⑦ 預估、預判技術,用什么原則預測未來行為,以便優化性能。

⑧ 可靠性技術,采用什么樣的冗余技術和容錯技術來提高可靠性。

例如,AMD Opteron 64和Intel Pentium 4擁有相同的ISA,都執行x86指令系統,但卻有完全不同的組成,包括流水線和Cache結構。

計算機實現(computer implementation)是計算機組成的物理實現,包括機器各個部分的物理結構如器件、模塊、插件、底板、電源的劃分和連接等;物理性能如電參數、傳輸速度、動態范圍、集成度等;制作裝配技術如微組裝技術、整機裝配技術等。其主導作用是器件技術與微組裝技術。

3.系統結構、計算機組成與實現之間的關系

系統結構、計算機組成和計算機實現是3個不同而又密切相關的概念。

● 系統結構主要考慮的是計算機系統軟、硬件界面的劃分。

● 計算機組成是系統結構的邏輯實現。

● 計算機實現是計算機組成的物理實現。

例如,指令系統的確定屬系統結構;指令的實現,如取指令、取操作數、運算、送結果等的具體操作及其排序方式屬計算機組成;而實現這些指令的功能的具體電路、器件的設計及裝配技術屬計算機實現。

又如,是否要有乘法指令由系統結構確定;乘法指令由專門的高速乘法器實現,還是用加法-移位方法實現由計算機組成確定;而具體設計乘法器或者加法-移位器硬件屬于計算機實現的任務。

還可以主存系統為例,其容量、編址方式取決于系統結構;為達到性能價格要求,主存速度該為多少,邏輯結構是否采用多體交叉屬于計算機組成;而存儲器件選定、連接電路設計等屬于計算機實現。

可見,系統結構決定了組成,而組成設計向下受限于實現技術。還應看到系統結構、組成和實現所包含的具體內容是隨不同時期及不同機器而有所不同。在有些計算機系統中作為系統結構的內容,在其他計算機系統中可能作為組成和實現的內容。如高速緩沖存儲器先是作為組成的內容提出來,對程序員是透明的。然而,有些機器為了提高高速緩存的效率,設置了高速緩存的管理指令,使程序員參與高速緩存的管理,這樣高速緩存有可能成為系統結構的內容。隨著計算機技術的發展,軟件硬化和硬件軟化的普遍實施,特別是VLSI的發展更使得結構、組成和實現融于一體,有時難以區分。

由于計算機組成和計算機實現關系密切,有人將它們合稱為計算機實現,即計算機系統的邏輯實現和物理實現。集成電路技術、半導體DRAM、磁盤技術和網絡實現技術極大地影響了現代計算機系統結構的實現。

1.2.3 計算機系統設計的主要方法

計算機系統由多級層次組成,從哪一層次開始設計就形成了三種設計方法。

1.“由下往上”(bottom-up)設計

它根據硬件技術水平和現有器件情況,首先設計出微程序機器級和傳統機器級,然后在此基礎上,再設計操作系統、匯編語言、高級語言等虛擬機器級。早期由于硬件價格昂貴,硬件性能很大程度上決定機器的性能,因此人們更關注硬件結構,而軟件技術往往處于被動地位。這種從硬件到軟件的設計思路容易形成軟、硬件脫節。硬件固定不能改變,在硬件飛速發展的時候,不能及時改進硬件結構;軟件又不能獲得最新硬件的支持,結果軟件繁雜、效率低。這種方法很難適應系統的設計要求,到了20世紀70年代以后很少被人采用。

2.“由上往下”(top-down)設計

這種方法首先考慮如何滿足應用要求,確定好針對某一層次的使用者,機器應具有的基本功能和特性,如基本命令、指令或語言結構、數據類型和格式等。然后再逐級往下設計,直到有硬件執行或解釋那級為止。每一級都要考慮如何優化上一級實現。這種從應用到實現的設計方法很適合專用機的設計。但是當應用對象或范圍變化時,由于軟、硬件在設計上脫節,不能利用最新的軟件技術,從而使系統效率急劇下降。

3.“由中間開始”(middle-out)設計

這里的“中間”系指軟、硬件交界面,一般指在傳統機器級與操作系統機器級之間。該方法要求首先對這個界面進行詳盡的描述與軟、硬件功能分配,同時考慮硬件能為軟件提供什么支持。再由此中間點向上向下同時進行設計。軟件系統從操作系統、匯編、編譯系統進行設計,硬件從傳統機器級、微程序機器級、硬聯邏輯機器級進行設計。這種方法的優點是避免了軟、硬件脫節,設計周期短,有利于優化設計;但設計人員必須具備軟硬件知識,還要求有效的軟件設計環境和開發工具,從而便于分析、評價和設計。

這種方法引發了計算機系統結構的研究,并很快占據設計方法的主導地位。

主站蜘蛛池模板: 聂拉木县| 崇义县| 乌兰浩特市| 瑞丽市| 巫溪县| 定南县| 台北市| 曲阜市| 延寿县| 白银市| 东光县| 昆明市| 临澧县| 介休市| 泸州市| 太原市| 来宾市| 基隆市| 北安市| 常德市| 余姚市| 上高县| 富民县| 宣威市| 和硕县| 定襄县| 长兴县| 荥阳市| 星子县| 永丰县| 缙云县| 桐乡市| 盐山县| 册亨县| 绵竹市| 阿图什市| 开江县| 乐清市| 亚东县| 县级市| 武城县|