專利名稱:基于操作數(shù)長度和對位的微碼轉移的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)領域,更確切地說是關系到通過從左到右的指令來管理主存中的數(shù)據(jù)的方法與設備(即從低內存地址到高內存地址或其它等效的方法處理可變長操作數(shù)),其中完成從左到右指令的微碼執(zhí)行這樣一種轉移,這種轉移依據(jù)(1)操作數(shù)的長度,和(2)它的對位。
該發(fā)明關系到微程序控制的計算機或數(shù)據(jù)處理系統(tǒng)。這些計算機使用最小的硬件控制。微程序控制的計算機的控制主要是一些數(shù)據(jù)門,它規(guī)定數(shù)據(jù)進出寄存器、計數(shù)器、加法器等的路徑。在這一系統(tǒng)中,一條指令(程序指令、微碼、微指令或控制字)提供數(shù)據(jù)門和一個機器周期的控制。在每一機器(CPU或系統(tǒng))周期內,由控制存貯讀出一條新指令。
每一指令被截分為一定數(shù)目的控制字段,每一控制字段啟動系統(tǒng)內特定的硬件控制。
其中一個控制段屬于(至少可以部分地定義)下一條程序的地址。在轉移的情況下,利用當前指令的控制段再結合其它的數(shù)據(jù)來形成或定義下一指令地址。在這種情況下,轉移地址有賴于所說的其它數(shù)據(jù)。
本發(fā)明關系到執(zhí)行一個從左到右指令時能夠發(fā)生的程序轉移,依據(jù)此項發(fā)明。其中轉移地址由兩個數(shù)據(jù)元素確定,即(1)在從左到右指令中所涉及的數(shù)據(jù)操作數(shù)的長度,和(2)當前在與主要數(shù)據(jù)存貯接口的兩個或多個寄存器中的那部分操作數(shù)的對位。
在數(shù)據(jù)處理技術中條件轉移是眾所周知的,下面是一些例子美國專利3,570,006描述了一個多重轉移的安排,其中多個預先定義的轉移地址被預先建立在多個轉移地址寄存器中,在程序執(zhí)行時檢測轉移條件。當某測試條件滿足時,該事實就被存放在多個觸發(fā)器中的某一特定的觸發(fā)器中,掃描這些觸發(fā)器使得預先定義的程序轉移地址能用于存貯器尋址。
美國專利3,979,725公開了一項多路程序轉移的處置,其中轉移地址是部分地依賴于在某個寄存器中的數(shù)據(jù)內容。更具體地說,16個只讀PROM排列為4個PROM一組的4組。正在執(zhí)行的16位指令中的兩位被用于定PROM的地址。當條件轉移出現(xiàn)時,指令中的另外兩位用于與被確定了地址的PROM的輸出相結合用來確定下一條指令的地址。所定位的PROM的輸出是某寄存器中數(shù)據(jù)的函數(shù)。
美國專利4,430,706公開了依據(jù)上一次程序執(zhí)行時是否轉移來加載下一程序地址或是選擇一個轉移地址的一種安排。
圖1顯示了先前的IBM系統(tǒng)38數(shù)據(jù)處理系統(tǒng)的有關部分,當執(zhí)行從左到右指令時,這種早先的系統(tǒng)提供一個轉移表。
IBM系統(tǒng)/38的理論維護手冊SY31-0649-2描述了前面的系統(tǒng),在此結合該系統(tǒng)引證。
系統(tǒng)38處理系統(tǒng)是典型的處理多字節(jié)數(shù)據(jù)串的系統(tǒng),數(shù)據(jù)串駐于主存貯10里與存貯單元一致的連續(xù)字節(jié)中。
當這種先前的數(shù)據(jù)處理系統(tǒng)執(zhí)行一個從左到右的指令時,可能有四路微碼轉移,它依據(jù)(1)余留要處理的部分數(shù)據(jù)操作數(shù)的字節(jié)長度,以及(2)在與主存貯10接口的兩個寄存器SA和SB中的部分操作數(shù)(也可以是整個操作數(shù))的對位。該字節(jié)長度參數(shù)存于一個8位寄存器L之中,每一寄存器SA和SB的對位參數(shù)分別存于雙位寄存器A和B中。
系統(tǒng)38的結構支持一套處理存放于主存貯10中的數(shù)據(jù)的指令。如圖1所示,存貯10為一個字寬(即四個字節(jié)或32位)。當一條從左到右指令執(zhí)行時,將從低存貯地址,例如11,向較高的存貯地址,例如12來處理存貯器10中的數(shù)據(jù)。
系統(tǒng)38從左到右的指令的例子是字符傳送(MVC)、邏輯字符比較(CLC)、字符與(NC)、字符或(OC)、字符異或(XC)、立即與傳遞字節(jié)傳送(MVCL)、長字符傳送(MVCL)、長邏輯字符比較。這些左到右指令都是程序員們經常采用的。
這種舊系統(tǒng)的局限是憾悅扛齷髦芷冢ǔV荒艽硪桓鱟紙謔蕁6雜詿橢噶?,染J荻暈緩統(tǒng)ざ仁實?,可裔j貝砹礁鱟紙諢蛩母鱟紙?,但蕷J廡枰鍆庠黽踴髦芷諍臀⒙肜醇觳夂涂⒄庖荒芰?,震q拖拗屏蘇庋齙撓杏瞇浴 在每一個系統(tǒng)38的左到右指令中,指令要包含(1)在存貯10中能找到操作數(shù)起始字節(jié)的地址,(2)從存貯器中要取操作數(shù)的長度和(3)指向存貯在所標識地址的全字長字內的操作數(shù)的首字節(jié)的指針(即字節(jié)邊界13、14、15或16,操作數(shù)的存放就從這些在存貯10中定址的存貯位置開始)。
操作數(shù)的字節(jié)長度計數(shù)可是任意整數(shù),最大長度為256。通過指令如此定義的操作數(shù),可以存在存貯10中的任何地址,並且可將其首字節(jié)調整到13、14、15或16任一字節(jié)邊界上(即操作數(shù)的首字節(jié)可以開始于如11、12的任意地址,及在存貯10定址的全字的任何字節(jié)邊界。邊界13稱為全字(FW)邊界,而邊界15稱定半字(HW)邊界。
系統(tǒng)38主數(shù)據(jù)總線(沒有顯示)是4個字節(jié)寬。
主存貯接口寄存器SA和SB,兩者均是32位(四個字節(jié)或是一個FW)。每一個寄存器SA及SB分別配備一個兩位指針寄存器A和B,如圖1所示,當寄存器A包含“00”時,寄存器A指向寄存器SA中的字節(jié)0,當寄存器A包含“01”時,它指向寄存器SA中字節(jié)1,等等。在寄存器SB和指針B之間也存在同樣的關系。
當處理數(shù)據(jù)時,每一周期一個字節(jié),每一周期寄存器A和B增加1,而寄存器L每一周期減1。
當對應于寄存器SA或SB的一個(或兩個)指針寄存器計數(shù)到“11”(假定8位寄存器L不是“00000000”)時,它表示應當存貯該存貯器的全字內容,並且/或應當取出存貯10中的下一較高地址的全字內容(FW)及加載到該寄存器中。
如同在前面提到的手冊的OS-070頁開始所描述的那樣,微指令中所包含的數(shù)據(jù)部分被用來為下一條微指令生成控制存貯地址部分。在左到右指令的情況下,下一條微指令可以是四個可能的微指令之一。
每一條系統(tǒng)38左到右微指令包含一個稱為“下一地址”的字段,該字段結合象指針寄存器A和B以及長度寄存器L的狀態(tài)這樣的條件(圖1),提供下一條微指令的地址。在這種處置下,寄存器A、C和L的狀態(tài)在周期的一開始便控制著4位左到右指令的轉移。
系統(tǒng)38的結構和處置是這樣的,在同一周期內,能執(zhí)行一條微指令,改變上面提到的寄存器A、B和L,並決定下一條微指令的地址。此外,寄存器SA/和SB在同一周期內都可作為源和目標兩種寄存器來使用,為了完成這些功能,一個周期是很不空間的。
下一指令的地址在當前執(zhí)行指令周期的早期產生,這樣就允許在當前周期內盡快地開始存取下一指令。
如前所述,左到右指令所處理的要從存貯10加載的操作數(shù)的字節(jié)長度最初是裝入到寄存器L之中的,這個字節(jié)長度包含在這個左到右指令自身之中。如前所述,這個長度參數(shù)可以長到256字節(jié)。在L寄存器中的長度值總要偏差1,例如值為0時表示長度為1。
當這個左到右指令處理操作數(shù)的字節(jié)時,寄存器L的值遞減,每處理一個字節(jié)減1。當寄存器L的內容變成零,或在一條微指令開始時是“00000000”,它表示該微指令處理了操作數(shù)的最后一個字節(jié),這條左到右指令已經完成。L=0一般表示還剩下一個字節(jié)。當處理一個字節(jié)而周期開始時L是0,它表示所有的字節(jié)都已經處理完了。
更確切地,在L寄存器的測試中發(fā)現(xiàn)“00000000”狀態(tài),該測試即引起一個地址位“1”生成,它作為下一條微指令地址的位13。
上面提到的兩個測試位被裝配到一個14位的地址中(即0位到13位),它的12位由測試寄存器A和B生成,而它的13位由測試寄存器L生成。這兩個地址位四種可能的狀態(tài)是“00”,“01”,“10”,“11”。這四種狀態(tài)決定了四種可能的微碼轉移將發(fā)生哪一種。
總而言之,當下一地址這兩位是“11”(表示寄存器SA/SB的最后一個字節(jié)已被存取,並且最后一個操作數(shù)字節(jié)已被處理),或“01”(表示寄存器SA/SB的最后字節(jié)還未處理,但最后一個操作數(shù)字節(jié)已處理了),意味著左到右指令的結尾,同時取亂惶醭絳蛑噶睢 當這兩位地址內容是“00”(表示寄存器SA和SB的最后一個字節(jié)還未被處理,並且操作數(shù)的最后一個字節(jié)也還未被處理),則處理寄存器SA/SB中的下一字節(jié)。
當這兩位地址位內容是“10”(表示寄存器SA和SB的最后一個字節(jié)已被處理,但還剩有需要處理的操作數(shù)的字節(jié)),存貯10的下一較高地址的全字長(FW)數(shù)據(jù)內容被取到SA/SB或由SA/SB存入。在某些情況下,需要額外的周期來決定是否取及(或)存。
以前的系統(tǒng),諸如系統(tǒng)38還是令人滿意的。但現(xiàn)在的發(fā)明提供了一種更有效的16路轉移,在執(zhí)行左到右微碼指令時能更有效地使用處理器硬件,因此減少了執(zhí)行左到右指令需要的處理周期數(shù)。
在以前的系統(tǒng)38和現(xiàn)在的發(fā)明之間的重要區(qū)別是系統(tǒng)38的長度寄存器L通常僅用于確定是否一部分操作數(shù)余留等待處理,即除非一個轉移表示整個字留待處理,留待要處理的字節(jié)的數(shù)目在系統(tǒng)38中不能用來做為轉移參數(shù)。
在系統(tǒng)38可用的轉移不允許在單個周期內分析留下的長度和操作數(shù)對位的組合使得下一周期內能處理最佳字節(jié)數(shù)。另一方面,在現(xiàn)在的發(fā)明中,待處理的操作數(shù)的數(shù)量對轉移是關鍵性的,也就是說,確定要處理的字節(jié)數(shù)目,並根據(jù)余留的操作數(shù)的量產生轉移。
用這種方法,目前的發(fā)明對于余留的特定操作數(shù)的長度能最有效地利用系統(tǒng)數(shù)據(jù)流的通道。
圖1表達了IBM系統(tǒng)38數(shù)據(jù)處理系統(tǒng)以前的技術的有關部分。
圖2表達了應用于有雙字長結構(DW)的數(shù)據(jù)處理的現(xiàn)在的發(fā)明。
圖3表達了表Ⅰ中提供的信息。
圖4是本發(fā)明的一般表達。
圖5顯示了一個數(shù)據(jù)處理系統(tǒng)的主要存貯和控制存貯,並用來解釋此發(fā)明的操作;及圖6顯示了目前這項發(fā)明的進行方式,以此方式,本發(fā)明在一個周期內,(1)執(zhí)行一個控制字,(2)取下一周期控制字,以及(3)為下一周期要取的控制字確定存貯地址。
就微程序控制的數(shù)據(jù)處理系統(tǒng)而論描述本發(fā)明。微程序控制的概念是一條微指令(指令或控制字)為系統(tǒng)(CPU或機器)周期的一個周期供數(shù)據(jù)門和控制。在每一個機器周期內從控制存貯中讀出一個新的控制字。
每一控制字被截分為若干控制字段,這些控制字段用來執(zhí)行在該CPU周期內所需要的功能。例如,一個控制字段可以激活系統(tǒng)中一個具體的硬件控制,如輸入門,ALU控制,或操作數(shù)獲取。
這些控制字放在控制存貯中,並且它們有時被稱為水平微碼,或HMC。程序指令,如左到右指令放在主存中。
每一個機器周期由控制存貯讀出一條新指令。在一條指令內包含的數(shù)據(jù)部分(通地址字段)用來生成下條指令的控制存貯地址。在一條指令內包含的這一地址字段可以被修改,從而生成一個轉移條件,這樣轉移條件取決于(1)當前指令的地址字段,(2)事先測試的數(shù)據(jù)敏感條件和相應所置的標志。
換句話說,在一個機器周期內,CPU執(zhí)行當前微指令並形成在取下一微碼指令要使用的控制存貯地址,並且取所說的指令。
圖5有助于理解這項發(fā)明的基本概念。在這張圖上,一個數(shù)據(jù)處理系統(tǒng)的主存顯示在50,且其控制存貯顯示在51。程序指令放在主存50,控制字放在控制存貯51。
在52顯示的是左到右指令。盡管這一指令想作為若干可能的左到右指令中的任何一個,但是這個特定的指令52包含有源和目標二者。更具體的,指令52包括一個OP碼字段53,一個長度字段54,而55、56兩個字段包含了源操作數(shù)和目的操作數(shù)的主存地址。字段53包含了這個特定的左到右指令的名字或標識,例如它可以是字符傳送(MVC)指令。字段54包含了操作數(shù)以字節(jié)計算的長度。字段55和56指向源操作數(shù)和目標操作數(shù)在主存中的地址 字段53用于確定在控制存貯51中一個特殊控制字57的地址,這個控制字被執(zhí)行,並且它指向另一控制字58,當指令52繼續(xù)處理時,58作為下一個要執(zhí)行的控制字。因為指令52是左到右指令,控制字之一59將指定這個發(fā)明的MBR功能。MBR是一個微碼轉移命令,它將使用本發(fā)明的機制。當碰到這個控制字,控制字的處理進入本發(fā)明的轉移結構60。入口是根據(jù)(1)剩下要處理的操作數(shù)的長度,及(2)與主存50接口的操作數(shù)-包容寄存器中的操作數(shù)的對位。
如圖5所示,組成轉移結構60的控制字中包含了說明MBR的控制字,例如61。執(zhí)行一個像61那樣的控制字能引起控制字(箭頭62)被再次處理,或執(zhí)行一個不同的控制字(箭頭63)。
當左到右指令52的處理終止時,碰到在64表示的控制字,結果,操作數(shù)的最后一個字節(jié)存入指令52說明的目標地址,並且由主存50取出另一程序地址。
作為一個例子,按照本發(fā)明,具有8個字節(jié)寬的數(shù)據(jù)總線的一個數(shù)據(jù)處理系統(tǒng)的最后兩個周期將包括(假定6個字節(jié)的操作數(shù)留待處理,並且所有這6個字節(jié)在一個寄存器中)(1)在一個周期處理操作數(shù)的兩個字節(jié),接著(2)在最后一個周期處理操作數(shù)的四個字節(jié),存到目標地址並結束。
圖2顯示了根據(jù)本發(fā)明的一個雙字長(DW)結構的數(shù)據(jù)處理系統(tǒng)。這個系統(tǒng)包括了一個64位寬,即雙字長(DW)寬的主存總線,提供一對內部處理器存貯寄存器SA′和SB′,它們是DW寬。三位的指針寄存器A′和B′,分別聯(lián)結到寄存器SA′和SB′。指針寄存器的內容指向它所連結的存貯寄存器中的8個字節(jié)之一。
提供一個8位L′寄存器來指明余留的要被左到右指令處理的操作數(shù)的字節(jié)長度。
還提供一條8字節(jié)寬的主數(shù)據(jù)總線(圖上未顯示)。
當執(zhí)行左到右指令時,所有由主存貯到寄存器SA′及(或)SB′的數(shù)據(jù)取的結果都是一個雙字長字由存貯取到SA′及(或)SB′。
本發(fā)明的處理器,它包含上面提到的寄存器SA′和SB′,有以下的全字(FW)、半字(HW)及字節(jié)數(shù)據(jù)通道,這些通道協(xié)助執(zhí)行左到右指令;(1)從任何對位的SA′或SB′中的FW到任何方式對位的SA′或SB′中的FW的全字長傳送,其中FW全字傳送能直接通過使用FW寄存器名字說明或間接地使用寄存器A′或B′來說明;(2)由任何字節(jié)對位的在寄存器SA′和SB′中的半字HW到任何字節(jié)對位的SA′和SB′中的HW的半字傳送和ALU操作,如前所述,分別通過寄存器A′或B′說明,及(3)來自寄存器SA′或SB′中的任何字節(jié)的字節(jié)傳送和ALU操作,如前所述,分別通過寄存器A′或B′說明。
此外,這樣構造和安排的圖2的處理器,使得在傳送或ALU操作中,取到寄存器SA′或SB′及由SA′或SB′存的動作,能在利用寄存器原來的內容作為源和(或)目標所在的同一周期內開始。
這些數(shù)據(jù)通道的有效使用,結果使處理器性能提高,這是由該項發(fā)明的字符傳送轉移(MBR)所提供的。MBR是一個微碼轉移,在左到右指令的處理過程中,以每一個處理器周期通過利用如A′和B′寄存器定義的操作數(shù)對位和寄存器L′的內容,反復地判定下次應當使用16個控制字中的哪一個。
在一個或多個控制字的序列中,16個控制字的每一個都是首控制字,它有效地使用了可利用的數(shù)據(jù)流來處理事先確定的每一個操作數(shù)的量。
數(shù)據(jù)存貯器100是兩個字寬(DW),也就是說,每一個存貯位置,例如111和112,包含8個字節(jié)(64位)的字節(jié)對位數(shù)據(jù)。一個數(shù)據(jù)操作數(shù)能在113、114、115、116、117、118、119或120中的任何一字節(jié)邊界起始。字節(jié)邊界113也稱為雙字(DW)邊界;字節(jié)邊界117也稱為全字(FW)邊界;而字節(jié)邊界115和119也稱為半字(HW)邊界。
圖2處理器的結構支持從左到右指令,即可變操作數(shù)字節(jié)長度指令;其中操作數(shù)是通過順序地從低存貯地址到高存貯地址存取存貯器的方式從該存貯100中取得。每一個左到右指令將定義(1)在主存貯100中的地址,通過這個地址可找到被取和(或)存的操作數(shù)的第一個字節(jié);(2)操作數(shù)的字節(jié)長度以及(3)指向在所標識地址雙字存貯內的操作數(shù)首字節(jié)的指針。
操作數(shù)的字節(jié)長度存于8位的寄存器L′中。圖2的操作數(shù)形式上能到256字節(jié)長,但對本發(fā)明不是關鍵。
主存貯寄存器SA′和SB′每個都是雙字長,即8個字節(jié),每一寄存器SA′和SB′分別配備一個3位寄存器A′和B′,如圖2所示,當寄存器A包含“000”。寄存器A′指向寄存器SA′中的字節(jié)0;當寄存器A′包含“001”,寄存器A′指向寄存器SA′中的字節(jié)1;等等。在寄存器SB′及其字節(jié)指針寄存器B′中存在同樣的關系。
一條左到右指令能通過16一路轉移的方法執(zhí)行,同樣由對位寄存器A′和B′的內容及操作數(shù)寄存器L的內容來判定。通過16一路轉移指令可以處理操作數(shù);(1)每次一字節(jié),(2)每次兩個字節(jié)(HW),(3)每次四個字節(jié)(FW),或(4)每次8個字節(jié)(DW)。
當這樣處理操作數(shù)時,使用16-路轉移來執(zhí)行左到右指令,寄存器A′和B′增加一個數(shù),這個數(shù)等于當時正在執(zhí)行的控制字所處理的字節(jié)數(shù)目。進一步,當執(zhí)行該控制字的同時,對寄存器A′和B′都置以這些新的值。
此外,當執(zhí)行包含16-路轉移的控制字時,L寄存器要減少一個數(shù)目,這個數(shù)等于該轉移指令所處理的字節(jié)數(shù)目。
按這種方法,寄存器A′、B′和L′的內容被用來定義一種控制字序列的地址,這一地址將用于執(zhí)行左到右的指令。
這一點是通過上述稱為字符傳送轉移(MBR)的微碼轉移來完成的。
當MBR被說明為支持左到右指令的一個控制字內的一個轉移時,要被執(zhí)行的下一個控制字是16個控制字之一。這16個轉移目標的每一個都有唯一的條件,在執(zhí)行具體目標控制字之前,這些條件必須滿足。進一步,在一個特定的轉移控制字執(zhí)行期間,上面提到的寄存器A′、B′和L′都要更新,以使下一控制字地址能存放一個要被定義的MBR控制字。
為了實現(xiàn)圖2所示的發(fā)明,下面的表Ⅰ顯示了定義于16個轉移支路的寄存器A′、B′和L′的16種條件(在此表中寄存器二進制內容按十進制數(shù)顯示)。L′、A′和B′的值是在被修改后在周期結束時所保留的值,這些值要用于確定將要執(zhí)行的下一控制字的地址。L寄存器的內容等于留待處理的操作數(shù)的字節(jié)數(shù)少1。A′和B′寄存器的內容分別是對于SA′和SB′寄存器的指針。例如A′=0指向在SA′寄存器中8個字節(jié)的第一個(見圖3)。
表Ⅰ轉移支路號碼L′A′B′0>001>700230或40或43>3404>3445>3046>7和<30071<7<78>16<69>16610>1<66112<6<6>11,2,3或5<6>1<61,2,3或512013>07<714>07715>0<77表Ⅰ顯示的條件也顯示在圖3中,其中寄存器L′被表達為X字節(jié)長的操作數(shù)最后8個字節(jié),即“X-7”到“X”是這個操作數(shù)的最后8個字節(jié)。
在表Ⅰ中注意轉移支路號碼12,當寄存器L′是“00000000”時,它通過MBR轉移過程執(zhí)行左到右指令,在這種情況下,A′和B′寄存器的內容都沒有影響。
由控制字要完成的特定功能依賴于所調用的特定的左到右指令。下面表Ⅱ顯示了前面定義過的16個轉移支路所起的控制作用,它用于左到右指令字符傳送(MVC)。
表Ⅱ轉移支路號碼0L′=7,A′=0,B′=0則存貯8字節(jié)操作數(shù)是SB′到目標操作數(shù)。結束。
1L′>7,A′=0,B′=0則存貯在SB′中8字節(jié)源操作數(shù)到目標操作數(shù)。在此存貯后如果剩下的源操作數(shù)多于8個字節(jié),繼續(xù)傳送一次8個字節(jié),MBR轉移。
2L′=3,A′=0或4,B′=0或4則從SB′到SA′全字長傳送,開始SA′內容的存貯,並結束MVC操作。所有動作都在一個機器周期內完成。
3L′>3,A′=4,B′=0則從SB′到SA′全字長傳送,開始SA′內容的存貯,如果留待傳送的字節(jié)少于8個,將操作數(shù)1的背景數(shù)據(jù)取到SA′,MBR轉移。
4L′>3,A′=4,B′=4則從SB′到SA′全字長傳送,開始SA′內容的存貯,其源操作數(shù)作SB′,如果留待傳送的字節(jié)數(shù)少于8個,將操作數(shù)1的背景數(shù)據(jù)取到SA′中,MBR轉移。
5L′>3,A′=0,B′=4則從SB′到SA′全字長傳送,將源操作數(shù)取到SB′,MBR轉移。
67>L′>3,A′=0,B′=0則從SB′到SA′全字長傳送,接著半字傳送和/或一個字節(jié)傳送。在這字節(jié)或半字傳送的同一周期內開始向目標操作數(shù)的存貯。結束。
7L′=1,A′<7,B′<7則從SB′到SA′傳送可能未對齊的半字。在半字傳送的同一個周期內,開始向目標操作數(shù)的存貯,結束。
8L′>1,A′=6,B′<6則從SB′到SA′傳送可能未對齊的半字。在半字傳送的同一個周期內,開始向目標操作數(shù)的存貯。如果還有少于8個字節(jié)留待傳送,將操作數(shù)1的背景數(shù)據(jù)取到SA′中,MBR轉移。
9L′>1,A′=6,B′=6則從SB′向SA′傳送一個半字,在半字傳送的同一周期內,開始向目標操作數(shù)的存貯。取源操作數(shù)的下一個雙字到SB′,如果留待傳送的字節(jié)少于8,將操作數(shù)1的背景數(shù)據(jù)取到SA′中,MBR轉移。
10L′>1,A′<6,B′=6則從SB′到SA′傳送一個有可能未對齊的半字,在該傳送同一個周期內,取源操作數(shù)的下一個雙字送入SB′,MBR轉移。
11L=2,A′<6,B′<6或,L′>1,A′=1,2,3或5,B′<6或,L′>1,A′<6,B′=1,2,3或5則從SB′向SA′傳送一個可能未對齊的半字,MBR轉移。
12L′=0則向SA′傳送在SB′中的源操作數(shù)的一個字節(jié),開始將SA′的內容向操作數(shù)1的存貯,並結束這一操作。
13L′>0,A′=7,B′<7則將SB′中的源操作數(shù)的一個字節(jié)向SA′傳送,開始將SA′的內容向操作數(shù)1的存貯。如果留待傳送的字節(jié)數(shù)少于8,將操作數(shù)1的背景數(shù)據(jù)取到SA′,MBR轉移。
14L′>0,A′=7,B′=7則將SB′中的源操作數(shù)的一個字節(jié)傳送到SA′,與該傳送相同的周期內,開始將源操作數(shù)的下一個雙字取到SB′中,並開始將SA′的內容向操作數(shù)1存貯。如果留待傳送的字節(jié)少于8個,將操作數(shù)1的背景數(shù)據(jù)取到SA′內,MBR轉移。
15L′>0,A′<7,B′=7則將SB′中的源操作數(shù)中的一個字節(jié)傳送到SA′。在該傳送的同一個周期內,開始將源操作數(shù)的下一個雙字取到SB′中,MBR轉移。
參考圖6,該圖顯示了圖2的系統(tǒng)硬件操作的5個連續(xù)周期,其中控制字70、71、72、73和74在周期1、2、3、4和5中順序地執(zhí)行。
參考圖6的周期3,在周期3期間,當執(zhí)行當前控制字72時,圖2的系統(tǒng)硬件從控制存貯器中取出要執(zhí)行的下一個控制字73。十分重要的是要注意控制字73的內容包括了在周期4中要處理的操作數(shù)字節(jié)數(shù)。
在周期4中,要從控制存貯中取出的下一個控制字74的地址是在周期3中很早就確定了的。它是按如下方法完成的。
按照本發(fā)明,要從控制存貯中取出的下一控制字74的地址,是以對位寄存器A′和B′的值及長度寄存器L′的值為依據(jù)的,它本將應存在于控制字73在周期4內執(zhí)行之后。
然而,在周期3內,控制字73很早就從控制存貯中取出來了,這樣在周期3內很早就知道了在周期4內所要處理的字節(jié)數(shù)。這個值現(xiàn)在被用來更改寄存器A′,B′和C′的內容,從而使這些寄存器的新內容反映出控制字73在周期4內執(zhí)行后的效應。
結果此刻,在周期3中很早就能利用這些寄存器的新內容為周期5來確定控制字74的地址。
這一過程可歸納如下在任何給定的周期N,(1)由控制存貯器取出周期N+1的控制字,(2)用周期N+1的控制字的字節(jié)處理內容來計算執(zhí)行控制字N+1將產生的A′、B′和L′的新值,並且(3)利用A′、B′和L′的這些新值來確定在周期N+1內要從控制存貯取出的,在周期N+2內要執(zhí)行的控制字地址。
在執(zhí)行任何指明一個MBR轉移的控制字期間,圖2所示的數(shù)據(jù)處理系統(tǒng)的系統(tǒng)硬件通過確定在下一MBR轉移要使用的控制存貯地址位來實行本發(fā)明的MBR功能(或者還有當檢測到一個MBI命令時-MBI是用以初始化CPU到串開始處,以便處理左到右指令一見圖6的70)。
這些控制字地址位存放在一個被稱為MBAR(傳送轉移寄存器地址MOVEBranchRegisterAddress)的4位寄存器66之中。這個寄存器專門用于執(zhí)行左到右指令。
當硬件檢測到MBR轉移時,MBAR寄存器存放要從控制存貯器中讀取的16個控制字之中的某個地址。當檢測到一種轉移條件時,確定加載到MBAR寄存器中的值以便在下一個MBR周期之內使用。在這種情況下,值MD(等于在下一MBR轉移之按淼淖紙謔?,並在下面定義了)從寄存器L′減掉,並加到A′和B′寄存器中。然后對照在表Ⅲ說明的轉移條件來檢測在A′、B′和L′中得到的值。如果某一條件成立,4位控制字地址則存入MBAR寄存器。舊的MBAR值用于確定在控制存貯中的地址,以便于檢索下一條MBR指令。
如表Ⅲ所示,本發(fā)明的16路MBR轉移依賴于MBAR寄存器的內容。在判定了某一轉移條件時,也確定了要加載到MBAR寄存器內的數(shù)值。見圖6的70,初始化后MBAR的內容是“0000”,MD值由當前的MBAR的值來確定,並且它依賴于執(zhí)行下一個MBR轉移控制字時寄存器L′、A′和B′將改變的字節(jié)數(shù)目,這是由硬件確定的。這種數(shù)目的變化反映了在下一個MBR機器周期將被處理的操作數(shù)串的字節(jié)數(shù)目。
表Ⅲ為確定控制字地址而加載到下一個MDMBAR的4轉移條件MBAR位地址解碼(十進數(shù))0L′-MD=7,A′+MD=0,B′+MD=081L′-MD>7,A′+MD=0,B′+MD=082L′-MD=3,A′+MD=0或4,B′+MD=0或483L′-MD>3,A′+MD=4,B′+MD=044L′-MD>3,A′+MD=4,B′+MD=4,45L′-MD>3,A′+MD=0,B′+MD=4,467>L′-MD>3,A′+MD=0,B′+MD=047L′-MD=1,A′+MD<7,B′+MD<788L′-MD>1,A′+MD=6,B′+MD<629L′-MD>1,A′+MD=6,B′+MD=6210L′-MD>1,A′+MD<6,B′+MD=6211L′-MD=2,A′+MD<6,B′+MD<6或,L′-MD>1,A′+MD=1,2,3或5,B′+MD<6或,L′-MD>1,A′+MD<6,B′+MD=1,2,3或5212L′-MD=0113L′-MD>0,A′+MD=7,B′+MD<7114L′-MD>0,A+MD=7,B′+MD=7115L′-MD>0,A′+MD<7,B′+MD=71
當MBAR=0,2,6,7或12時,MBAR解碼沒有意義,因為下一個MBR轉移結果將完成該左到右指令,這樣將不用向MBAR中加入新值。
圖4是本發(fā)明的一般形式。
為了對不同的可編程序數(shù)據(jù)處理系統(tǒng)應用這項發(fā)明,處理器必須有能力做多路轉移。也就是說諞桓齠ㄒ宓淖平峁怪?,蟻y惶踔噶羈贍蓯僑舾芍噶鈧械囊桓?。处理器易庉若干条件进袃椽移?處理器必須有兩個或更多的主存接口寄存器300和301,這些寄存器容納由主存取出或要存進主存(未顯示)的數(shù)據(jù)。
每一存貯寄存器300和301分別需要一個指針寄存器302和303。每一指針寄存器指向各自的存貯器中的一個字節(jié)。此外,一個長度寄存器304存放留待處理的操作數(shù)串的字節(jié)數(shù)。
為了分析本發(fā)明的一般形式,定義如下術語。
X是存貯寄存器300和301將存放的字節(jié)數(shù),這也是系統(tǒng)主存總線的寬度。
W是在一個周期內,ALU305能處理的字節(jié)數(shù)。
X-W是一個正的常數(shù)(即存貯器300和301是等于或大于ALU305),它的數(shù)值大小等于這些寄存器字節(jié)長度超過ALU字節(jié)長度的字節(jié)數(shù)目。
D和S分別是裝在指針寄存器302和指針寄存器303中的數(shù)目。假定存貯寄存器300,301中每一個都可作為左到右指令的徑或目標,S和D的值的范圍可從0到X-1。值X-1表示在寄存器中每待處理的操作數(shù)部分的最后一個字節(jié)(見圖4)。
L是在長度寄存器304中包含的數(shù),也就是當執(zhí)行左到右指令時余留下要被處理的操作數(shù)字節(jié)的數(shù)目。L可以從0到任意預先定義的界限變動。
為了實現(xiàn)本發(fā)明的字符傳送轉移(MBR),必須定義一個特殊的微程序轉移命令,如MBR。當在一個控制字(微指令)中說明了這個定義的命令時,例如一條左到右指令,本發(fā)明的特定的串處理則被調用。當沒有說明這個定義的命令時,本發(fā)明的串處理結束,並恢復一般的串處理。
假定本發(fā)明的特殊的串處理在0字節(jié)開始,並且經由在兩個存貯寄存器300,301中的連續(xù)字節(jié)推進(即一個左到右指令),指針寄存器302,303將增加一個數(shù),而長度寄存器304減少一個數(shù),這個數(shù)目等于上一個轉移控制字或指令處理的字節(jié)數(shù)目。
該發(fā)明的方法和設施,也可稱為是本發(fā)明的算法,它依靠開始字節(jié)在源和目標操作數(shù)中的位置和留待處理的操作數(shù)字節(jié)數(shù)來確定在存貯寄存器300,301中的字節(jié)將如何被轉移指令處理。
下表顯示了本發(fā)明用于一個典型的字符傳送(MVC)左到右指令時的操作。
1如果L=W,S<X-W+1,D<X-W+1,則處理W個字節(jié)並結束。
2如果(>W,S<X-W,D<X-W則處理在存貯寄存器中的W個字節(jié),S和D增加W,L減少W,繼續(xù)進行。
3如果L>W,S=X-W,D<X-W,則處理在存貯寄存器中的W字節(jié),取X個新字節(jié)送到源寄存器,S和D增加W.L減少W,繼續(xù)進行。
4如果L>W,S=X-W,D=X-W,則處理在存貯寄存器中的W字節(jié),把目標寄存器的內容存到目標,取X個新字節(jié)到存貯寄存器,S和D增加W,L減W,繼續(xù)進行。
5如果L>W,S<S-W,D=X-W,則處理在存貯寄存器中的W個字節(jié),把目標寄存器的內容存入目標,S和D增加W,L減少W,繼續(xù)進行。
6如果L>0,S>X-W,D>X-W,則處理X-S或X-D或L字節(jié)(不論哪個,比較小的),S和D增加,L減少所處理字節(jié)的數(shù)目。如果新的D=0,把目標寄存器的內容存到目標中,如果新的L≠0,並新的S=0,則取X個新字節(jié)到源寄存器,繼續(xù)執(zhí)行。
7如果L>0,S=X-1,D<X-1,則處理在存貯寄存器中的一個字節(jié)(最后一個字節(jié)),S和D加1,L減1,如果新L≠0,取X個新字節(jié)到源寄存器,繼續(xù)進行。
8如果L>0,S=X-1,D=X-1,則處理在存貯寄存器中的一個字節(jié)(最后一個字節(jié)),將目標寄存器的內容存入目標,S和D加1,L減1,綣碌腖≠0,取X個新字節(jié)到源寄存器,繼續(xù)進行。
9如果L>0,S<X-1,DX-1,則處理在存貯寄存器中的一個字節(jié)(最后一個字節(jié)),把目標寄存器的內容存入目標,S和D加1,L減1,繼續(xù)進行。
10如果L=0則結束。
這張表上的每一條目代表了多路轉移的一條支路,並且每一條目代表一個控制字或一組控制字,它們完成諸如ADD(加)、COMPARE(比較)、MOVE(傳送)、FETCH(取)、或STORE(存)等操作。這些控制字中的每一個,或一組控制字中的最后一個,如果標明為“繼續(xù)進行”則指定一個特定的轉移命令來繼續(xù)操作數(shù)的串處理,如果標明為“結束”,則不指定這種特定的命令繼續(xù)串處理。
在上面的描述中,本發(fā)明的MBR轉移指令顯示在表Ⅰ上。相對于圖2顯示的具體結構,已經解釋了本發(fā)明,相對于圖4的一般結構也已經對本發(fā)明作了解釋。這兩種解釋一直是針對典型的左到右指令字符傳送(MVC)而作的,這樣本技術中的哪些技巧能容易地將本發(fā)明應用于其它左到右指令,而不論涉及到什么硬件結構。
描述本發(fā)明一直是依據(jù)從一個源存貯單元傳送一個字節(jié)對位的字符串到一個等長度的目標存貯單元,這就清楚地表明,本發(fā)明可以應用到實現(xiàn)其他的,處理至少一個存貯中的操作數(shù),從一個存貯單元到另一個存貯單元的指令。
本發(fā)明具有通用性,于此,在權利要求中明確其核心思想與范圍。
權利要求
1.一種轉移方法,通過使用左到右程序指令處理至少一個多字節(jié)操作數(shù),使用一個具有X字節(jié)寬總線的數(shù)據(jù)處理系統(tǒng),其主要存貯器設施存放所說的操作數(shù),並且至少有兩個X字節(jié)寬的寄存器與所說的主存接口,此方法的特征表現(xiàn)于如下步驟在所說的至少一個所說的寄存器內,確定所說的操作數(shù)部分的字節(jié)對位,確定余留要被左到右指令處理的操作數(shù)字節(jié)的數(shù)目,及確定多個控制字中的哪一個將要被執(zhí)行,使得在每一個機器周期處理可能處理的最大的操作數(shù)字節(jié)可變數(shù),所說的可變數(shù)的最大值為每個周期X字節(jié)。
2.權利要求1的方法具有特征X等于8個字節(jié),其中操作數(shù)字節(jié)的可變數(shù)在至少若干周期中的某些周期被處理,這樣處理的字節(jié)數(shù)目是依據(jù)留待處理的操作數(shù)字節(jié)的數(shù)目,並依據(jù)至少一個在所說寄存器中的操作數(shù)的字節(jié)對位,這些參數(shù)存在于所說的處理Y個字節(jié)的周期序列中的每一個周期的結束,其中Y等于一個字節(jié),兩個字節(jié),四個字節(jié)或八個字節(jié)。
3.權利要求1的方法具有特征X等于八字節(jié)的整倍數(shù),在若干周期中的每一個周期都處理可變數(shù)Y個操作數(shù)字節(jié),所說的可變數(shù)Y最大值等于X,所說的可變數(shù)Y是以留待處理的操作數(shù)字節(jié)數(shù),及所說的寄存器中操作數(shù)的字節(jié)對位為基礎的。這些參數(shù)存在于前面一個曾處理Y個字節(jié)的周期的結束。
4.權利要求3的方法具有特征Y等于一個字節(jié),兩個字節(jié),四個字節(jié)或八個字節(jié)的倍數(shù)。
5.權利要求4的方法具有特征X等于八。
6.權利要求1的方法具有特征所說的左到右指令存放在主存,所說的轉移方法由放在控制存貯器的微碼支持,所說的微碼構成多個控制字,每一個控制字在執(zhí)懈每刂譜質北曄兌淼淖紙謔瑏K包括以下步驟做為從主存取出一條左到右指令的結果,從所說的控制存貯器取出一個控制字。在周期N執(zhí)行所說的取出的控制字,並在所說的周期N,從控制存貯取出要在周期N+1中執(zhí)行的下一個控制字,並且利用所說的下一控制字的要在周期N+1中處理的字節(jié)數(shù)確定在周期N+2中要執(zhí)行的控制字的地址。
7.權利要求2的方法具有特征所說的左到右指令存放在主存,所說的轉移方法由放在控制存貯器的微碼支持,所說的微碼構成多個控制字,每一個控制字標識要被該控制字處理的字節(jié)數(shù)目,並包括以下步驟做為從主存取出一條程序左到右指令的結果,從所說的控制存貯器取出轉移控制字,在一個周期執(zhí)行一個取出的轉移控制字,並且在所說的周期,從控制存貯取下一個控制字,利用所說的下一控制字的處理字節(jié)長度來確定下一個控制字的地址。
8.權利要求3的方法具有特征所說的左到右指令存放在主存,所說的轉移方法由放在控制存貯的微碼支持,所說的微碼構成多個控制字,每一個控制字標識該控制字將要處理的字節(jié)數(shù),並且包括以下步驟做為從主存取出一條程序左到右指令的結果,從所說的控制存貯取出控制字,在一個周期執(zhí)行一個控制字,並且在所說的同一周期,從控制存貯器取下一控制字,利用所說的下一控制字的處理字節(jié)長度來確定下一個控制字的地址。
9.一種轉移方法,通過利用一條左到右程序指令來處理至少一個多字節(jié)操作數(shù),使用一個具有X字節(jié)寬數(shù)據(jù)總線的數(shù)據(jù)處理系統(tǒng),它包括存放所說操作數(shù)的主要存貯器和至少兩個X字節(jié)寬與所說主存接口的寄存器,此方法的特征表現(xiàn)于如下步驟(1)取出至少部分所說的操作數(shù)送到至少一個所說的寄存器,(2)確定這一部分所說操作數(shù)在所說寄存器的所說至少一個內的字節(jié)對位。(3)確定余留要被左到右指令處理的操作數(shù)字節(jié)的數(shù)目,(4)確定多個轉移字中的哪一個將要被執(zhí)行,使得在每一個機器周期處理能被處理的最大的操作數(shù)字節(jié)可變數(shù),所說的可變數(shù)的最大值為每個周期X字節(jié),並且(5)重復步驟(2)、(3)和(4)直到處理完所有的操作字節(jié)。
10.權利要求9的方法具有特征左到右指令存放在主存,所說的轉移方法由存放在控制存貯的微碼支持,所說的微碼構成多個控制字,每一個控制字標識該控制字執(zhí)行時要處理的字節(jié)數(shù)目,並且其中所說的步驟(5)包括以下步驟做為從主存取一條左到右指令的結果,從所說的控制存貯取一個控制字,在周期N執(zhí)行所說的取出的控制字,並且在所說的周期N,從控制存貯取在周期N+1要被執(zhí)行的下一個控制字,並利用所說的下一個控制字的要被處理的字節(jié)數(shù)來確定在周期N+2中要執(zhí)行的控制字地址。
11.一個數(shù)據(jù)處理系統(tǒng)具有X字節(jié)處理寬度,用于執(zhí)行程序指令,包括左到右指令,在所說的左到右指令里的數(shù)據(jù)字段定義(1)要被左到右指令處理的至少一個操作數(shù)的字節(jié)長度埃 )至少一個操作數(shù)在主存設施中的地址,此系統(tǒng)的特征為主存設施存貯(1)程序指令,包括所說的左到右指令,及(2)由所說的左到右指令處理的操作數(shù),每一個所說的存放在所說主存設施的操作數(shù)具有起始字節(jié)對位,從一個低主存地址起始,並且至少某些所說的操作數(shù)的字節(jié)長度大于七字節(jié),使得它們的地址在較高的主存地址結束??刂拼尜A設施存貯控制字以在執(zhí)行一條左至右指令時實現(xiàn)轉移,至少某些所說的控制字定義了要被該控制字處理的操作數(shù)字節(jié)的可變數(shù),不超過X字節(jié),至少兩個接口寄存器,每一個都是X字節(jié)寬,所說的寄存器和所說的主存設施接上,當執(zhí)行一條左到右指令時,所說的寄存器能接收在所說的主存設施至少包含操作數(shù)的字節(jié)部分的地址的X字節(jié)內容。為每一個所說的接口寄存器配一個指針寄存器,所說的指針寄存器能存放可改變的值,它動態(tài)地指向在所說接口寄存器中余留要被左到右指令處理的操作數(shù)字節(jié),一個長度寄存器能接收一條左到右指令要處理的操作數(shù)的字節(jié)長度,並且當左到右指令執(zhí)行時,能動態(tài)地改變,設施承擔取控制字,以在所說的指針寄存器加上,及在所說的長度寄存器減去該取出的控制字要處理的字節(jié)數(shù),及設施保證貯存在所說指針寄存器及所說長度寄存器中的結果值能定義要執(zhí)行的后續(xù)控制字的地址。
12.權利要求11的數(shù)據(jù)處理系統(tǒng)具有特征其機制能保證,當所說指針寄存器和所說長度寄存器的內容存在于一個給定的周期N,用所說的內容來確定在N+1周期要取的且在周期N+2要執(zhí)行的控制字。
全文摘要
一個微碼轉移,要轉到若干可能的控制字中的一個(描述了16個控制字)。它是根據(jù)(1)余留要被左到右指令處理的操作數(shù)長度,及(2)當前駐留在主存接口寄存器的部分操作數(shù)的字節(jié)對位。當執(zhí)行一條左到右指令時,確定操作數(shù)的新長度和新對位,它們二者都將存在于控制字執(zhí)行之后。利用新長度和新對位來確定下一控制字的地址。一個16—路轉移指令有多個轉移支路,由留待處理的操作數(shù)的字節(jié)數(shù)及在兩個與主存接口的存貯寄存器中的兩個操作數(shù)的對位來確定轉移支路。
文檔編號G06F9/22GK1035190SQ8810780
公開日1989年8月30日 申請日期1988年11月14日 優(yōu)先權日1987年11月17日
發(fā)明者朝威, 哈羅德·英格·弗利, 馬克·羅伯特·富克, 萊尼·阿蘭·米瑪霍, 布魯斯·萊菲·帕茨 申請人:國際商用機器公司