①單指令流、單數(shù)據(jù)流(SISD)計(jì)算機(jī)
②單指令流、多數(shù)據(jù)流(SIMD)計(jì)算機(jī)
③多指令流、單數(shù)據(jù)流(MISD)計(jì)算機(jī)
④多指令流、多數(shù)據(jù)流(MIMD)計(jì)算機(jī)
(2)馮澤云分類法1972年美籍華人馮澤云(Tse-yun Feng)教授提出按并行度(degree of parallelism)對各種計(jì)算機(jī)系統(tǒng)進(jìn)行結(jié)構(gòu)分類的方法。他把計(jì)算機(jī)系統(tǒng)分成四類:①字串行、位串行(WSBS)計(jì)算機(jī)②字并行、位串行(WPBS)計(jì)算機(jī)③字串行、位并行(WSBP)計(jì)算機(jī)④字并行、位并行(WPBP)計(jì)算機(jī)
(3)Handler分類法1977年德國的漢德勒(Wolfgang Handler)提出一個(gè)基于硬件并行程度的計(jì)算并行度的方法。他把計(jì)算機(jī)的硬件結(jié)構(gòu)分為三個(gè)層次:處理機(jī)級、每個(gè)處理機(jī)中的算邏單元級、每個(gè)算邏單元中的邏輯門電路級。分別計(jì)算機(jī)這三級中可以并行或流水處理的程序,即可算出某系統(tǒng)的并行度。
(4)Kuck分類法1978年美國的庫克(David J.Kuck)提出與Flynn分類法類似的方法,只是他用了指令流和執(zhí)行流(execution stream)及其多重性來描述計(jì)算機(jī)系統(tǒng)控制結(jié)構(gòu)的特征。他把系統(tǒng)結(jié)構(gòu)分為四類:
①單指令流、單執(zhí)行流(SISE)
②單指令流、多執(zhí)行流(SIME)
③多指令流、單執(zhí)行流(MISE)
④多指令流、多執(zhí)行流(MIME),它們是典型的多處理機(jī)系統(tǒng)。一種好的分類法能幫助我們深入地理解體系結(jié)構(gòu)的特點(diǎn),使人們能更好掌握計(jì)算機(jī)的工作原理以及發(fā)展趨勢。但很難說已經(jīng)有令人滿意的分類法被學(xué)術(shù)界一致認(rèn)可。來源:www.examda.com
二、指令系統(tǒng)
(一) 指令集體系結(jié)構(gòu)的分類
1.分類的依據(jù)
從體系結(jié)構(gòu)的觀點(diǎn)對指令集進(jìn)行分類,可以根據(jù)下述五種尺度:(1)操作數(shù)在CPU中的存儲方式,即操作數(shù)從主存中取來后要把它保存在什么地方。
(2)顯式操作數(shù)的數(shù)量,即在條典型的指令中有多少個(gè)顯式命名的操作數(shù)。
(3)操作數(shù)的位置,即任一個(gè)ALU指令的操作數(shù)能否放在主存中,或者必須把某些操作甚至全部操作數(shù)都放在CPU的內(nèi)部存儲器中?如果某操作數(shù)要放在主存中,那么它是如何定位的?
(4)指令的操作,即在指令集中提供哪些操作?
(5)操作數(shù)的類型與大小,即每個(gè)操作數(shù)是什么類型、尺寸大小,以及怎樣對它規(guī)定。
2.按暫存機(jī)制分類
根據(jù)在CPU內(nèi)部存儲操作數(shù)的區(qū)別,可以把指令集體系分為三類。這三類分別為:堆棧(stack)、累加器(accumulator)和寄存器集(a set of registers)。
3.通用寄存器機(jī)的分類
通用寄存器機(jī)(general-purpose register machines)簡稱GPR機(jī)。GPR的關(guān)鍵性優(yōu)點(diǎn)起因于編譯程序能有效地使用寄存器,無論是計(jì)算機(jī)表達(dá)式的值,還是從全局的角度使用寄存器來保存變量的值。在表達(dá)式求解時(shí),寄存器比堆?;蛘呃奂悠髂芴峁└屿`活的次序。更重要的是寄存器能用來保存變量。當(dāng)變量分配給寄存器時(shí),訪存流量(memory traffic)就會減少,程序運(yùn)行就會加速,而且代碼密度也會得到改善??梢杂弥噶罴膬蓚€(gè)主要特征來區(qū)分GPR體系結(jié)構(gòu)。這兩個(gè)特征都是關(guān)于ALU指令即典型的算術(shù)邏輯指令中操作數(shù)的本質(zhì)。第一個(gè)是ALU指令有兩個(gè)或三個(gè)操作數(shù)。在三操作數(shù)格式中,指令包括兩個(gè)源操作數(shù)物一個(gè)目的操作數(shù)。在二操作數(shù)格式中,有一個(gè)操作數(shù)既是源操作數(shù)又是目的操作數(shù)。第二個(gè)是ALU指令中有幾個(gè)操作數(shù)是存儲器地址,對典型的ALU指令,這個(gè)數(shù)可能在1與3之間。(二) 指令格式及其優(yōu)化
1.指令格式的設(shè)計(jì)考慮對于指令格式(instruction format)的設(shè)計(jì)有一些優(yōu)先考慮的原則:
(1)關(guān)于指令的長度,短指令要比長指令更節(jié)約些。盡管存儲器的價(jià)格越來越便宜,但設(shè)計(jì)者還是不愿意浪費(fèi)它們。
(2)還要考慮是否有足夠的空間表示所有期望的操作。來源:www.examda.com
(3)在GPR結(jié)構(gòu)中,無論是哪種寄存器與存儲器類型,提高存取指令的速度都是應(yīng)該考慮的一個(gè)重要原則。存儲器的存取速度越高,就能給處理機(jī)提供更多的指令進(jìn)行處理。在一定的存取速率下,如果平均指令長度較短,那么存儲器就能供應(yīng)更多的指令。
(4)機(jī)器字長(word length)應(yīng)該是字符長度(character length)的整數(shù)倍。否則,在存儲字符時(shí)就會造成浪費(fèi),而且也會造成尋址困難。
(5)尋址字段長度的選擇。假設(shè)存儲空間是2 19 位,如果存取單位的大小不同,則地址長度也不相同。
2.指令格式化
指令格式的優(yōu)化既包括指令碼的優(yōu)化,也包括操作數(shù)的優(yōu)化。所謂指令格式的優(yōu)化就是從整個(gè)指令系統(tǒng)的利用率角度出發(fā),盡量設(shè)法減少指令中的冗余信息量,以便用最少的位數(shù)提供足夠的操作信息和地址信息。
3.哈夫曼編碼
哈夫曼編碼的基本概念是:對發(fā)生概率高的事件用短碼表示,對發(fā)生概率低的事件用長碼表示,這樣做的結(jié)果可以使平均編碼長度明顯壓縮,使之很接近理論編碼長度。要對指令碼進(jìn)行優(yōu)化表示,就必須知道每條指令在程度中出現(xiàn)的概率,即指令的使用頻度,一般都是通過對大量已有的典型程序進(jìn)行統(tǒng)計(jì)而求得。獲得使用頻度后,即可根據(jù)這些數(shù)據(jù)構(gòu)造一個(gè)哈夫曼樹。具體算法是:把各指令按使用頻度從小到大排序;從中取出最小與次最小的兩個(gè)指令作為葉結(jié)點(diǎn)構(gòu)成二叉樹,其根為兩結(jié)點(diǎn)頻度之和,并把比值插入到頻度序列中;遞歸地使用此法繼續(xù)構(gòu)造二叉樹,直到全部指令都作為葉結(jié)點(diǎn)使用完為止。有了哈夫曼樹(它是一個(gè)二叉樹),即可用它進(jìn)行編碼。具體做法是:從根結(jié)點(diǎn)開始,把樹的左子樹線段標(biāo)為1,右子樹線段標(biāo)為0,直至葉結(jié)點(diǎn)。然后從每個(gè)指令所在的葉結(jié)點(diǎn)位置開始,沿最短路徑到達(dá)各個(gè)葉結(jié)點(diǎn)并依次寫下沿線的0、1序列。就得到該指令的哈夫曼編碼。(三) 指令集的復(fù)雜化
②單指令流、多數(shù)據(jù)流(SIMD)計(jì)算機(jī)
③多指令流、單數(shù)據(jù)流(MISD)計(jì)算機(jī)
④多指令流、多數(shù)據(jù)流(MIMD)計(jì)算機(jī)
(2)馮澤云分類法1972年美籍華人馮澤云(Tse-yun Feng)教授提出按并行度(degree of parallelism)對各種計(jì)算機(jī)系統(tǒng)進(jìn)行結(jié)構(gòu)分類的方法。他把計(jì)算機(jī)系統(tǒng)分成四類:①字串行、位串行(WSBS)計(jì)算機(jī)②字并行、位串行(WPBS)計(jì)算機(jī)③字串行、位并行(WSBP)計(jì)算機(jī)④字并行、位并行(WPBP)計(jì)算機(jī)
(3)Handler分類法1977年德國的漢德勒(Wolfgang Handler)提出一個(gè)基于硬件并行程度的計(jì)算并行度的方法。他把計(jì)算機(jī)的硬件結(jié)構(gòu)分為三個(gè)層次:處理機(jī)級、每個(gè)處理機(jī)中的算邏單元級、每個(gè)算邏單元中的邏輯門電路級。分別計(jì)算機(jī)這三級中可以并行或流水處理的程序,即可算出某系統(tǒng)的并行度。
(4)Kuck分類法1978年美國的庫克(David J.Kuck)提出與Flynn分類法類似的方法,只是他用了指令流和執(zhí)行流(execution stream)及其多重性來描述計(jì)算機(jī)系統(tǒng)控制結(jié)構(gòu)的特征。他把系統(tǒng)結(jié)構(gòu)分為四類:
①單指令流、單執(zhí)行流(SISE)
②單指令流、多執(zhí)行流(SIME)
③多指令流、單執(zhí)行流(MISE)
④多指令流、多執(zhí)行流(MIME),它們是典型的多處理機(jī)系統(tǒng)。一種好的分類法能幫助我們深入地理解體系結(jié)構(gòu)的特點(diǎn),使人們能更好掌握計(jì)算機(jī)的工作原理以及發(fā)展趨勢。但很難說已經(jīng)有令人滿意的分類法被學(xué)術(shù)界一致認(rèn)可。來源:www.examda.com
二、指令系統(tǒng)
(一) 指令集體系結(jié)構(gòu)的分類
1.分類的依據(jù)
從體系結(jié)構(gòu)的觀點(diǎn)對指令集進(jìn)行分類,可以根據(jù)下述五種尺度:(1)操作數(shù)在CPU中的存儲方式,即操作數(shù)從主存中取來后要把它保存在什么地方。
(2)顯式操作數(shù)的數(shù)量,即在條典型的指令中有多少個(gè)顯式命名的操作數(shù)。
(3)操作數(shù)的位置,即任一個(gè)ALU指令的操作數(shù)能否放在主存中,或者必須把某些操作甚至全部操作數(shù)都放在CPU的內(nèi)部存儲器中?如果某操作數(shù)要放在主存中,那么它是如何定位的?
(4)指令的操作,即在指令集中提供哪些操作?
(5)操作數(shù)的類型與大小,即每個(gè)操作數(shù)是什么類型、尺寸大小,以及怎樣對它規(guī)定。
2.按暫存機(jī)制分類
根據(jù)在CPU內(nèi)部存儲操作數(shù)的區(qū)別,可以把指令集體系分為三類。這三類分別為:堆棧(stack)、累加器(accumulator)和寄存器集(a set of registers)。
3.通用寄存器機(jī)的分類
通用寄存器機(jī)(general-purpose register machines)簡稱GPR機(jī)。GPR的關(guān)鍵性優(yōu)點(diǎn)起因于編譯程序能有效地使用寄存器,無論是計(jì)算機(jī)表達(dá)式的值,還是從全局的角度使用寄存器來保存變量的值。在表達(dá)式求解時(shí),寄存器比堆?;蛘呃奂悠髂芴峁└屿`活的次序。更重要的是寄存器能用來保存變量。當(dāng)變量分配給寄存器時(shí),訪存流量(memory traffic)就會減少,程序運(yùn)行就會加速,而且代碼密度也會得到改善??梢杂弥噶罴膬蓚€(gè)主要特征來區(qū)分GPR體系結(jié)構(gòu)。這兩個(gè)特征都是關(guān)于ALU指令即典型的算術(shù)邏輯指令中操作數(shù)的本質(zhì)。第一個(gè)是ALU指令有兩個(gè)或三個(gè)操作數(shù)。在三操作數(shù)格式中,指令包括兩個(gè)源操作數(shù)物一個(gè)目的操作數(shù)。在二操作數(shù)格式中,有一個(gè)操作數(shù)既是源操作數(shù)又是目的操作數(shù)。第二個(gè)是ALU指令中有幾個(gè)操作數(shù)是存儲器地址,對典型的ALU指令,這個(gè)數(shù)可能在1與3之間。(二) 指令格式及其優(yōu)化
1.指令格式的設(shè)計(jì)考慮對于指令格式(instruction format)的設(shè)計(jì)有一些優(yōu)先考慮的原則:
(1)關(guān)于指令的長度,短指令要比長指令更節(jié)約些。盡管存儲器的價(jià)格越來越便宜,但設(shè)計(jì)者還是不愿意浪費(fèi)它們。
(2)還要考慮是否有足夠的空間表示所有期望的操作。來源:www.examda.com
(3)在GPR結(jié)構(gòu)中,無論是哪種寄存器與存儲器類型,提高存取指令的速度都是應(yīng)該考慮的一個(gè)重要原則。存儲器的存取速度越高,就能給處理機(jī)提供更多的指令進(jìn)行處理。在一定的存取速率下,如果平均指令長度較短,那么存儲器就能供應(yīng)更多的指令。
(4)機(jī)器字長(word length)應(yīng)該是字符長度(character length)的整數(shù)倍。否則,在存儲字符時(shí)就會造成浪費(fèi),而且也會造成尋址困難。
(5)尋址字段長度的選擇。假設(shè)存儲空間是2 19 位,如果存取單位的大小不同,則地址長度也不相同。
2.指令格式化
指令格式的優(yōu)化既包括指令碼的優(yōu)化,也包括操作數(shù)的優(yōu)化。所謂指令格式的優(yōu)化就是從整個(gè)指令系統(tǒng)的利用率角度出發(fā),盡量設(shè)法減少指令中的冗余信息量,以便用最少的位數(shù)提供足夠的操作信息和地址信息。
3.哈夫曼編碼
哈夫曼編碼的基本概念是:對發(fā)生概率高的事件用短碼表示,對發(fā)生概率低的事件用長碼表示,這樣做的結(jié)果可以使平均編碼長度明顯壓縮,使之很接近理論編碼長度。要對指令碼進(jìn)行優(yōu)化表示,就必須知道每條指令在程度中出現(xiàn)的概率,即指令的使用頻度,一般都是通過對大量已有的典型程序進(jìn)行統(tǒng)計(jì)而求得。獲得使用頻度后,即可根據(jù)這些數(shù)據(jù)構(gòu)造一個(gè)哈夫曼樹。具體算法是:把各指令按使用頻度從小到大排序;從中取出最小與次最小的兩個(gè)指令作為葉結(jié)點(diǎn)構(gòu)成二叉樹,其根為兩結(jié)點(diǎn)頻度之和,并把比值插入到頻度序列中;遞歸地使用此法繼續(xù)構(gòu)造二叉樹,直到全部指令都作為葉結(jié)點(diǎn)使用完為止。有了哈夫曼樹(它是一個(gè)二叉樹),即可用它進(jìn)行編碼。具體做法是:從根結(jié)點(diǎn)開始,把樹的左子樹線段標(biāo)為1,右子樹線段標(biāo)為0,直至葉結(jié)點(diǎn)。然后從每個(gè)指令所在的葉結(jié)點(diǎn)位置開始,沿最短路徑到達(dá)各個(gè)葉結(jié)點(diǎn)并依次寫下沿線的0、1序列。就得到該指令的哈夫曼編碼。(三) 指令集的復(fù)雜化