Presentation is loading. Please wait.

Presentation is loading. Please wait.

第1章 背景.

Similar presentations


Presentation on theme: "第1章 背景."— Presentation transcript:

1 第1章 背景

2 內容 第1.1 節將說明系統軟體和本書的整體架構。 第1.2 節開始探討系統軟體和本書所使用的機器架構之間的關係。
第1.3 節將描述具備基本軟體概念的「簡化指令電腦」( Simplified Instructional Computer,SIC)。 第1.4 節和第1.5 節展示許多種類的電腦架構範例。

3 1.1 簡介 本節主要是介紹系統軟體(system software)的設計和實作概念。
系統軟體是由許多支援電腦運作的程式所組成的,此項軟體可以讓使用者只需關注應用程式或問題的解決方案,而不必知道電腦內部的運作細節。

4 組合語言 組合語言(assembler language)撰寫程式,並且使用巨集指令(macro instructions)來讀取或寫入資料, 或是執行其他的高階功能。 然後, 使用具備巨集處理器(macro processor)的組譯器(assembler),將這些程式轉換成機器語言。轉換後的機器碼,可藉由載入器或連結器以置入系統中準備執行,並可以使用除錯器 來偵測程式的錯誤。

5 本書的主題 組譯器 載入器 連結器 巨集處理器 編譯器 作業系統 資料庫管理系統 文字編輯器以及互動式除錯系統

6 1.2 系統軟體與機器架構 系統軟體和應用軟體最大的不同,就是與機器的相關性
系統程式是為了要支援電腦的運作並且供電腦本身的使用,而不是支援特定的應用 系統程式通常與其執行機器的架構是有密切的關係: 組譯器, 編譯器,作業系統 有許多的系統軟體並不是與其所支援電腦系統的類型有直接的關係。例如,組譯器的一般設計和邏輯

7 簡化指令電腦(SIC) SIC 是一種假想的電腦,其設計包括了大部分真實機器中常見的特性,而避免掉一些不適當的獨特性質。

8 主要的章節 1. 在任何此類軟體的範例中,都能找到的基本功能。 2. 與機器架構有緊密關係的特性。
3. 在實作這種類型軟體時,其他與機器無關的共通特性。 4. 建構特殊軟體的主要設計考量。例如,單階段(single-pass)或是多階段(multi-pass)處理。 5. 真實機器上的實作範例,著重不常使用的軟體特性,以及與機器相關的特性。

9 1.3 簡化指令電腦(SIC) 可以代表大多數硬體所具備的特性和概念,而且可以避免真實機器上大部份的特殊性質。
二種不同的版本:標準版本和XE 版本

10 1.3.1 SIC 機器架構 記憶體 記憶體是由長度為八個位元的位元組(bytes)所組成;連續三個位元組形成一個字組(word,24 個位元) 所有的位址都是位元組位址(byte address);字組的位址是以最低位之位元組的位址來表示 電腦記的憶體共有32,768(215)個位元組。

11 1.3.1 SIC 機器架構 暫存器

12 1.3.1 SIC 機器架構 資料格式 整數是以24 位元的二進制值來表示;並以二的補數來表示其負數。
字元是以8 位元的ASCII 碼來表示(參考附錄B)。 在標準版的SIC 中,沒有硬體的浮點運算器。

13 1.3.1 SIC 機器架構 指令格式

14 1.3.1 SIC 機器架構 定址模式

15 1.3.1 SIC 機器架構 指令集 載入和儲存暫存器(LDA、LDX、STA、STX等)
整數算數運算指令(ADD、SUB、MUL、DIV) COMP指令是比較暫存器A和記憶體中字組的值 條件跳躍指令(JLT、JEQ、JGT) JSUB跳到副程式 RSUB則是跳到暫存器L中所儲存的位址

16 1.3.1 SIC 機器架構 輸入和輸出 在標準SIC版本中,輸入和輸出的運作是從暫存器A最右邊的八個位元開始
每個裝置都具有一組八位元的裝置碼 SIC系統共有三個I/O指令 裝置測試(Test Device, TD) 讀取資料(Read Data, RD) 或寫入資料(Write Data, WD)

17 1.3.2 SIC/XE機器架構 記憶體 額外暫存器 最大可用記憶體為1 M位元組(220位元組)。 助記符號 編號 特定用途 B 3
基底暫存器;用於定址 S 4 一般工作暫存器 ― 沒有特定用 途 T 5 一般工作暫存器 ― 無特定用途 F 6 浮點累加器(48個位元)

18 1.3.2 SIC/XE機器架構 資料格式

19 1.3.2 SIC/XE機器架構 指令格式

20 1.3.2 SIC/XE機器架構 定址模式

21 1.3.2 SIC/XE機器架構

22 1.3.2 SIC/XE機器架構 指令集 針對新的暫存器(LDB、STB 等等)進行存取資料,以及執行浮點算數運算(ADDF、SUBF、MULF、DIVF)。 一些暫存器對暫存器的算數運算(ADDR、SUBR、MULR、D1VR) 「監督呼叫指令」(supervisor call, SVC)

23 1.3.2 SIC/XE機器架構 輸出和輸入 SIC中的I/O指令,同樣適用於SIC/XE中。
當CPU正在執行其他指令時,還可以用一些I/O通道(I/O channels)繼續執行輸入和輸出的動作。 SIO、TIO和HIO指令可以用來啟始、測試和暫停I/O通道的運作。

24 1.3.3 SIC程式設計範例

25 1.3.3 SIC程式設計範例

26 1.3.3 SIC程式設計範例

27 1.3.3 SIC程式設計範例

28 1.3.3 SIC程式設計範例

29 1.3.3 SIC程式設計範例

30 1.3.3 SIC程式設計範例

31 1.3.3 SIC程式設計範例

32 1.3.3 SIC程式設計範例

33 1.3.3 SIC程式設計範例

34 1.4 傳統(CISC)機器 CISC 機器通常具有相當眾多而且複雜的指令集、許多種不同的指令格式和指令長度、以及許多種不同的定址模
VAX 的架構 Intel x86 系列的處理器架構

35 1.4.1 VAX架構 記憶體 所有VAX的程式都可以在2^32位元組的虛擬記憶體空間(virtual address space)中運作
八位元的位元組所組成 連續的二個位元組形成一個字組(word) 連續四個位元組形成一個「長字組」(longword) 連續八個位元組形成一個「四字組」(quadword) 連續十六個位元組形成一個「八字組」(octaword) 所有VAX的程式都可以在2^32位元組的虛擬記憶體空間(virtual address space)中運作

36 1.4.1 VAX架構 暫存器 VAX機器有16個通用暫存器(general-purpose registers),編號從R0到R15。
長度都是32個位元。 R15為「程式計數器」 R14為「堆疊指標」(stack pointer, SP R13為區段指標(frame pointer, FP R12是參數指標(argument pointer, AP) R6到R11:一般用途 R0到R5:一般用途/特殊目的

37 1.4.1 VAX架構 資料格式 整數是以位元組、字組、長字組、四字組或八字組 字元是使用8位元的ASCII碼來儲存。
有四種不同的浮點(floating-point)資料格式,其長度範圍從4到16個位元組。 「聚集式十進制」(packed decimal) 佇列(queues)以及可變長度的位元串(variable-length bit strings)

38 1.4.1 VAX架構 指令格式 可變長度的指令格式 運算碼(一個或二個位元組),以及依據指令型態的不同,最多有六個「運算元描述子」(operand specifiers)所組成的。

39 1.4.1 VAX架構 定址模式 暫存器模式 暫存器委託模式 自動增加和自動減少模式 基底相對的定址模式:程式計數器相對模式
所有的定址模式都可以包含一個索引暫存器(index register 指定間接定址模式 立即運算元和許多特定用途的定址模式

40 1.4.1 VAX架構 指令集 指定運算子型態的字首(prefix)。 指定運算元資料型態的字尾(suffix)。
決定運算元數量的修飾子(modifier,某些指令才具備)。

41 1.4.1 VAX架構 輸入和輸出 藉由I/O裝置控制器(device controller)來完成輸入和輸出的動作。
每個控制器擁有一組控制/狀態和資料暫存器,這些暫存器在實際位址空間(physical address space)上都有特定的對應位置。裝置控制器之暫存器所對應的位址空間,稱之為I/O空間(I/O space)

42 1.4.2 Pentium Pro架構 記憶體 在實體層次上,記憶體是由八個位元的位元組所組成的
連續的二個位元組形成一個字組 連續的四個位元組形成雙字組(double-word,也稱為dword)。 程式設計者通常將x86記憶體視為是一些區段(segments)的集合 位址將包含二個部分:區段的編號以及該區段中的位移量(offset)。

43 1.4.1 VAX架構 暫存器 八個通用的暫存器:EAX、EBX、ECX、EDX、ESI、EDI、EBP、以及ESP。(長度都是32位元長)
FLAGS是一個長度為32位元的暫存器,其內容可以包含許多不同旗標位元, 區段暫存器(segment registers),用來指定記憶體中的區段。 CS存放現正執行之區段碼的位址 SS包含了目前堆疊區段的位址 DS、ES、FS、和GS指出資料區段的位址。

44 1.4.1 VAX架構 資料格式 x86架構提供了整數、浮點數、字元、以及字串的儲存空間。 FPU可以處理64位元之具正負符號的整數。
單精度(single-precision)格式的長度是32位元 雙精度(double-precision)格式的長度是64位元 延伸精度(extended-precision)格式的長度是80個位元

45 1.4.1 VAX架構 指令格式 x86機器的所有指令是使用相同的基本格式 前置詞(prefix),
運算碼(opcode,一個或二個位元組) 運算元以及所使用的定址模式

46 1.4.1 VAX架構 定址模式 運算元的值可能本身就位於指令中(立即模式),或是儲存在暫存器中(暫存器模式)。
TA =(基底暫存器)+(索引暫存器)*(比例因子)+ 位移量

47 1.4.1 VAX架構 指令集 超過四百種不同的機器指令 每一個指令可能會有零個、一個、二個或三個運算元 暫存器對暫存器
暫存器對記憶體的指令 記憶體對記憶體的指令

48 1.4.1 VAX架構 輸入和輸出 藉由I/O埠將一個位元組、字組、或是雙字組,傳送到EAX暫存器中
輸出指令則是從EAX暫存器中,傳輸一個位元組、字組、或雙字組到I/O埠 利用重複前置詞,可以讓這些指令再單一的運算中就可以傳送一個完整的字串。

49 1.5 RISC機器 標準和固定的指令長度 單週期(single-cycle)的指令。 記憶體的存取通常只能透過載入和儲存的指令
所有的指令都是運作於暫存器與暫存器之間 通用暫存器的數目都相當的多 機器指令的數目、指令格式、以及定址模式卻是相當的少。

50 1.5.1 UltraSPARC架構 記憶體 記憶體是由長度為八位元的位元組所組成的 連續兩個位元組形成「半字組」(halfword)
連續四個位元組形成「字組」 連續八個位元組則形成「雙字組」 UltraSPARC的程式可以使用264位元組的虛擬記憶體

51 1.5.1 UltraSPARC架構 暫存器 非常大量的暫存器檔案(register file 超過100個以上的通用暫存器
一個程序只能夠存取其中的32個暫存器,編號從r0到r31。 前八個暫存器(r0到r7)是全域式(global) 暫存器

52 1.5.1 UltraSPARC架構 資料格式 整數、浮點數以及字元的儲存空間。 整數是以8、16、32或64位元的二進制值來儲存
三種不同的浮點資料格式 單精度(single-precision)格式的長度是32位元 雙精度(double-precision)格式的長度是64個位元 「四精度」(quad-precision)格式中,有63個位元為浮點值,而15個位元為指數值。 字元是儲存在一個位元組中

53 1.5.1 UltraSPARC架構 指令格式 長度都是32個位元 格式1是用於呼叫(call)指令 格式2是使用在分歧(branch)指令
其餘的指令都是使用格式3,包括了暫存器的載入和儲存,以及三個運算元的算數運算。

54 1.5.1 UltraSPARC架構 定址模式

55 1.5.1 UltraSPARC架構 指令集 少於100 種的機器指令 唯一可以存取記憶體的就是載入和儲存指令
其他所有的指令都是運作於暫存器與暫存器之間。 採用「管線」(pipelined)方式

56 1.5.1 UltraSPARC架構 輸入和輸出 透過記憶體來達成與I/O 裝置的通訊。
某一段範圍的記憶體位址,在邏輯上是被裝置暫存器所佔用。 每個I/O 裝置都有唯一的位址 針對記憶體中的裝置暫存器位址進行載入或儲存時,就可以啟動相對應的裝置

57 1.5.2 PowerPC 架構 記憶體 八位元的位元組所組成 連續的兩個位元組形成「半字組」 連續四個位元組形成「字組」
連續八個位元組形成「雙字組」 連續十六個位元組形成「四字組」 PowerPC的程式可以使用264位元組的虛擬記憶體

58 1.5.2 PowerPC 架構 暫存器 PowerPC架構中有32個通用暫存器,編號從GPR0到GPR31。 長度都是64個位元
浮點運算可以執行於浮點運算單元,此單元包含了32個64位元的浮點暫存器,以及狀態和控制暫存器。 32位元的條件暫存器 「連結暫存器」(Link Register, LR) 「計數暫存器」(Count Register, CR)

59 1.5.2 PowerPC 架構 資料格式 提供了整數、浮點數和字元的儲存空間
整數可以是8、16、32、或64個位元的二進制數值,而且也支援具正負符號以及不具符號的整數;負數是以二的補數方式來表示。 兩種不同的浮點資料格式。 單精度(single-precision)格式的長度是32位元 雙精度(double-precision)格式的長度是64位元 每個字元佔一個位元組,且使用八位元長的ASCII碼表示。

60 1.5.2 PowerPC 架構 指令格式 PowerPC架構中有七種基本的指令格式,其中某些格式還有子格式(subforms)
所有格式的長度都是32個位元 指令必須對齊字組邊界的開始位置(亦即,四的倍數的位元組位址) 指令的前六個位元通常都是運算碼;某些指令格式會有額外的延伸運算碼(extended opcode)欄位。

61 1.5.2 PowerPC 架構 定址模式 一個運算元的值可能是位於指令之上(立即模式),或是位在暫存器中(暫存器直接模式)。
唯一可以存取記憶體的是載入和儲存指令,以及分歧指令。

62 1.5.2 PowerPC 架構 指令集 200種機器指令 指令的執行是採用管線(pipeline)的方式
「分歧預測」(branch prediction)的方法

63 1.5.2 PowerPC 架構 輸入和輸出 虛擬位址空間(virtual address space)的區段(segments)會對應到外部位址空間 正常虛擬記憶體的存取方法

64 1.5.3 Cray T3E架構

65 1.5.3 Cray T3E架構 記憶體 每個處理單元都有自己的區域記憶體,其容量從64M位元組到2G位元組
系統記憶體(system memory)在實體上是分散於每個PE中的區域記憶體 每一個處理單元的記憶體是由八位元的位元組所組成

66 1.5.3 Cray T3E架構 暫存器 Alpha架構包含了32個通用暫存器,編號從R0到R31;R31通常儲存數值0。
每個通用暫存器的長度都是64位元 還有32個浮點暫存器,編號從F0到F31;F31通常儲存數值0。每個浮點暫存器的長度都是64位元。 64位元暫存器,如程式計數器和許多的狀態和控制暫存器。

67 1.5.3 Cray T3E架構 資料格式 整數、浮點數、以及字元的儲存空間。 整數是以長字組或四字組的方式來儲存 而負值是以二的補數來表示

68 1.5.3 Cray T3E架構 指令格式 有五種基本的指令格式,其中有些格式還具有子格式。 所有格式的長度都是32個位元
指令的前六個位元通常是運算碼 某些指令格式還有額外的「功能」欄位(function field)。

69 1.5.3 Cray T3E架構 定址模式

70 1.5.3 Cray T3E架構 指令集 130種機器指令 不具備位元組或字組的載入和儲存的指令
記憶體存取的介面並不需要「位移和遮罩」(shift-and-mask)的運作

71 1.5.3 Cray T3E架構 輸入和輸出 透過許多的I/O通道(I/O channels)來執行I/O的動作。
這些I/O通道可以組織成許多種不同的形式,例如整合到銜接「處理節點」(processing nodes)的網路中。 一個系統最多可以將一個I/O通道分配給八個PE使用。 dra所有的PE都可以控制和存取所有的通道。


Download ppt "第1章 背景."

Similar presentations


Ads by Google