麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

對載明并行和依賴運算的指令矩陣進行處理的裝置和方法

文檔序號:6519959閱讀:245來源:國知局
對載明并行和依賴運算的指令矩陣進行處理的裝置和方法
【專利摘要】執行塊的矩陣形成多行和多列。多行支持指令的并行執行,多列支持依賴指令的執行。執行塊矩陣處理載明并行指令和依賴指令的單個指令塊。
【專利說明】對載明并行和依賴運算的指令矩陣進行處理的裝置和方法
本申請是2008年11月12日進入中國國家階段的國家申請號為200780017317.4的PCT國際申請(國際申請日為2007年4月12日并且國際申請號為PCT/US2007/066536)的分案申請,這里以引用的方式結合該申請的全部內容。
【技術領域】
[0001]本發明主要涉及計算機體系結構。更具體地,本發明涉及一種用于處理指定并行運算和依賴運算的矩陣指令的計算機體系結構。
【背景技術】
[0002]改善計算機體系結構性能是一個很困難的任務。已經通過頻率變標(frequencyscaling)、單指令多數據(SMD)、超長指令字(VLIW)、多線程和多處理器技術來尋求上述的性能改善。這些方法著重于改善程序執行的吞吐量。上述技術中的很大一部分要求軟件顯式(explicitly)地呈現出并行性。與此不同的是,頻率變標在改善吞吐量和延遲的同時無需軟件顯式地標記并行性。近來,頻率變標面臨著功耗壁壘(power wall)問題,所以很難通過頻率變標進行改進。因此,除非表示出大規模的顯式軟件并行(explicit softwareparallelization),否則很難增加吞吐量。
[0003]鑒于上述問題,人們期望在不依賴于頻率變標和大規模的顯式軟件并行的前提下改善計算機體系結構的性能。

【發明內容】

[0004]執行塊矩陣形成多行和多列。多行支持指令的并行執行,而多列支持依賴指令的執行。執行塊矩陣處理載明并行指令和依賴指令的單個指令矩陣。
【專利附圖】

【附圖說明】
[0005]參考詳細說明并結合附圖,本發明將得到更完整地闡釋,在附圖中:
[0006]圖1表示按照本發明實施例的支持執行并行指令和依賴指令的體系結構;
[0007]圖2A表示映射串行指令以在本發明的執行矩陣中產生并行和依賴運算;
[0008]圖2B表示對本發明執行矩陣進行的運算映射;
[0009]圖3表示按照本發明實施例可能用到的一行執行塊;
[0010]圖4A表示按照本發明實施例可能用到的執行塊和支持寄存器文件及緩沖器;
[0011]圖4B表示按照本發明實施例配置的寄存器文件;
[0012]圖5表示可用于本發明緩沖器的各種數據結構;
[0013]圖6表示按照本發明實施例可使用的流水線;
[0014]圖7表示按照本發明實施例的矩陣指令處理;
[0015]圖8表示對本發明執行塊進行運算映射;
[0016]圖9表示按照本發明實施例使用的矩陣緩沖器;[0017]圖1OA表示實現本發明運算的通用單元;
[0018]圖1OB表示用于圖1OA中4位加法器的超前進位加法器的I個位單元;
[0019]圖11表示按照本發明實施例配置的延時切片體系結構(TLSA)單元;
[0020]圖12表示按照本發明實施例的交錯結構中的多個TLSA單元;
[0021]圖13表示現有的乘法運算技術;
[0022]圖14表示按照本發明實施例采用的延時乘法運算技術;
[0023]圖15表示現有的布斯編碼乘法;
[0024]圖16表示實現圖15的布斯編碼乘法的邏輯;
[0025]圖17表示按照本發明實施例的布斯編碼乘法;
[0026]圖18表示實現圖17的布斯編碼乘法的邏輯;
[0027]圖19表示按照本發明實施例配置的存儲器/寄存器文件數據塊;
[0028]圖20表示按照本發明實施例配置的時間切片存儲器;
[0029]圖21表示按照本發明實施例配置帶有轉置/移位單元的TLSA體系結構;
[0030]圖22表示按照本發明實施例配置的浮點乘累加單元。
在所有附圖中,相似的附圖標記指代對應的部分。
【具體實施方式】
[0031]允許非顯式并行軟件在單處理器硬件上執行是非常有益處的,這種單處理器硬件能夠在短的延遲流水線(latency pipeline)中處理大量指令。當前解決方案的現有觀點為;超標量處理器可以在峰值瞬間的一個周期內實際處理4-5條指令,這類似于好的VLIW編譯器在峰值瞬間實現的處理量。人們已經認識到實際上無法實現超標量處理器在單個周期/瞬間內調度10條指令。類似地,如果編譯器嘗試并行處理用于帶有10個時隙的VLIW體系結構的通用程序,則會導致留下大量未填充的時隙。
[0032]本發明提供的體系結構和處理器實現了在短的流水線中高度并行地讀數、調度、解碼和執行多條指令,極大地改善了執行吞吐量,同時保持了單處理器流水線運算的更優化的延遲,并具有高效的分時、功率、面積和路徑。
[0033]在這個被稱為超大指令矩陣(Ultra Large Instruction Matrix, ULIM)的新體系結構中,固定大小的指令矩陣模板被調度為作為并行和依賴指令組的矩陣在硬件中執行。與使用超長指令寬度模板僅對并行指令進行調度的VLIW不同,ULIM體系結構的模板封裝了并行指令和依賴指令的指令組。這可以被看作二維模板矩陣,其中橫向分配并行指令,同時僅縱向分配依賴指令。這個模板以一個指令矩陣的形式被發送到執行硬件,其中各個執行塊處理一個指令矩陣。
[0034]圖1表示這種模板,其中,如果將一個指令放入時隙101,那么另一個可與其并行執行的指令可放入與其處于同一行的并行時隙I到N中的任何一個中。然而,與設置在時隙101中的指令相依賴的指令不能被放入相同的行,而是必須放入隨后的行102(例如,串行時隙I的并行時隙O)。標記為102的時隙接收101產生的結果、或外部輸入操作數、或這二者的結合作為輸入。這種指令模板的執行模型是任意行的指令都在下一行的指令執行之前執行。
[0035]ULIM指令組可由ULIM編譯器靜態調度,或者由ULIM硬件組成單元動態調度。如果與傳統體系結構進行比較,那么這種體系結構的意義則非常明顯。在傳統體系結構中,單行&并行指令可放進一個例如VLIW或SMD模板的模板中。這意味著每個周期都可以執行N1個指令(全部指令都必須保證是并行的,這對于很大的N而言是非常嚴格的約束)。另一方面,通過在每個行邊界的流水線執行,ULIM體系結構在每個周期可執行&*隊個指令。盡管每個中周期執行NfN2個指令,ULIM體系結構僅有如下的相同約束:確保并行執行N1個指令。
[0036]指令矩陣模板可由編程器或編譯器/硬件格式程序構建,其中二者都不需要被限制成僅找到并行指令以調度每個周期。有效的并行指令可以被提取出來并且按行橫向設置。通過在后續行中設置依賴指令,可以增加并行指令。矩陣可以在單個或多個周期內執行。矩陣可以本地化存儲接近執行硬件的操作數,從而優化相互關聯的復雜度、面積、速度和功率。
[0037]參考圖2A的實例,本發明得到更完整的說明。圖2A表示由單個串行程序流表示的指令序列200的實例。該圖也表示如何對指令分組,從而形成在矩陣模板中采用的兼有串行時隙和并行時隙的單指令矩陣。矩陣模板被用于執行塊201。執行塊201包括乘法單元202、浮點加法單元204、加載單元206、乘累加(multiple accumulate, MAC)單元208、邏輯單元(例如ALU) 210和另一個邏輯單元212。
[0038]因此,指令矩陣引用是指并行和串行指令的指令組模板。執行塊是指執行指令矩陣的執行單元組。執行單元是執行塊內部單獨的計算單元(例如,復雜單元和簡單單元兩者)。
[0039]諸如214之類的直線箭頭指出指令之間的依賴性。這種映射可由編譯器、前端硬件或運行時環境實現。圖2A還表示了格式化運算圖,其顯示出當矩陣中的指令將在帶有并行和串行依賴性指示器的對應硬件位置處被執行時,這些指令在矩陣中的相對物理位置。
[0040]如圖2A所示,單數據流程序再形成為靜態確定串行執行的指令以及指令并行的指令矩陣。例如,在圖2A的串行單一程序流中,最后一個指令采用R3作為源,同時第四個指令將R3寫作結果。通過將最后一條指令放置在緊接著第四條指令所在那行之后的一行中,這就映射在矩陣模板中。線214表示這種依賴性。
[0041]圖2B中解釋了編碼指令及其用于圖2A所示模板的源和目的地,其中指令矩陣模板包括用于指令的操作碼,并指定操作數和結果寄存器。源和目的地與操作碼分離。這樣簡化了解碼階段、依賴性解析階段和寄存器/存儲器讀取階段。
[0042]如圖3所示,可以同時發出幾個指令矩陣。圖3表示201的指令矩陣運算圖,在此表示為301,以及可選配置的指令矩陣運算圖300、302和304。可采用下列模型之一來實現同時的發出:
1-MMD或SMD:軟件/編譯器將多個矩陣合并為一個超級矩陣。
2-線程模型:每個矩陣屬于分離的軟件或硬件線程。
3-動態執行:如果在來自單個流的多個矩陣之間沒有依賴性,則可由硬件動態發出矩陣。
[0043]圖3中由運算圖表示的指令矩陣模板在將這些指令時隙一一對應地映射到執行單元(執行塊內部)的硬件上執行。矩陣粒度允許形成基線矩陣并將那些矩陣合并為一個超級矩陣。這在圖4A中表示,其中4基線指令矩陣在四個執行塊301、300、302和304上并行執行。每個執行程序由兩行復雜單元組成。第一行具有3個復雜單元(例如402、404和406),而另一行具有3個復雜單元(例如408、410和412)。每個復雜單元可操作地進行復雜運算,比如乘法運算、浮點加法運算或者乘-累加運算。因此,比如復雜單元402可以對應于圖2的202,復雜單元404可以對應于圖2的204等等。
[0044]復雜單元可操作地進行至多4個簡單運算,比如ALU運算。因此,這種復雜單元被顯示為具有多個操作數和多個輸出。這些單元可設置成計算并行運算或者順序地執行依賴運算。每個基線指令矩陣在線程模式下可以獨立于其他矩陣運行,或者多個基線指令矩陣合并成在同一周期內運行的組,作為組成MIMD體系結構的超級指令矩陣。整體矩陣可以在一個周期內執行,或者可在多個周期內按照流水線方式執行。
[0045]作為操作圖4A所示的執行引擎來執行圖3所示ULIM指令模板的實例,在復雜單元408中執行指令MAC208,同時在一對408的單元中執行簡單邏輯和ALU運算對210。圖4A表示與VLIW體系結構的異同。如果在圖4A中采用上部3個時隙(402、404、406)執行3個并行指令,那么ULIM模板中的這3個時隙將類似于等效的VLIW指令。利用簡單單元(408,410,412)下一行執行3個或更多的并行指令,將意味著正在執行依賴于先前指令的另一個等效VLIW。這樣,UUM體系結構可以被看成在空間中執行,并具有固定延遲、固定數量的多個相互依賴的VLIW指令。另外,該體系結構允許在一個簡單時隙中執行單個復雜指令或多個簡單指令,而這在VLIW模板中是不允許的。
[0046]圖3中的運算圖301、300、302和304表示的4個UUM矩陣可在圖4A的硬件上執行。這可以按照3種執行模式之一來實現:要么通過編譯器/編程器將這些矩陣集合起來形成MMD超級指令矩陣,要么每個矩陣可以獨立地以線程模式執行,線程模式中分離的線程同時在四個硬件分段(301、300、302和304)上的每個硬件分段上執行。最后一種執行模式可能是利用硬件依賴性檢查來確保同時在圖4A中的四個不同硬件分段上執行的不同矩陣之間不具有依賴性,從而能夠動態地在單個線程中執行4個不同的指令矩陣。
[0047]圖4A中的寄存器文件420可選地根據執行模式進行配置。在一種模式下,寄存器文件要么被看作提供4段MMD寬度的MMD分段寄存器文件,要么用作4個獨立的寄存器文件,每個寄存器文件提供一個分離的線程。寄存器文件還可以支持動態執行模式,其中4段是一個合一的寄存器文件,其中寫入一個指定分段中任何寄存器的數據都可由其他分段中的全部單元進行訪問。因為不同的執行模式可以在獨立線程基線指令矩陣和MMD超級指令矩陣線程之間轉換,所以那些模式之間的轉換可以是無縫的。
[0048]每個單指令矩陣是并行指令和依賴指令的混合。此外,每個獨立指令可以是標量或SIMD指令。在最細的粒度下,該指令可以類似于對多個字節/字或單個標量實體進行的可變數據寬度SMD運算。
[0049]在多線程執行模式下,每個寄存器文件及其執行線程的執行單元完全獨立于其他寄存器文件及其線程。這類似于每個線程都具有其自己的寄存器狀態。然而,可以指定這些線程之間的依賴性。屬于一個線程的每個矩陣將在該線程的寄存器文件的執行單元中執行。如果只有一個線程或非線程化單一程序在圖4A中的硬件上執行,那么采用下列方法允許屬于單個線程/程序的并行矩陣能夠訪問已寫入其他分段內的寄存器中的結果。實現這點的方法是允許任何矩陣將結果寫入到4個寄存器文件的任何一個,從而產生其他寄存器文件分段中那些寄存器的拷貝。這在物理上是通過將每個分段的寫端口延伸到剩余分段中實現的。然而,因為不能建立有效率的寄存器文件,使得每個存儲單元具有的寫端口的數量是一個分段單獨所需寫端口數量的4倍,所以這不是可伸縮的。現在提供一種機制,其中使得寄存器文件的建立不受這種單線程寄存器廣播擴展的影響。這種機制如圖4B所示。
[0050]圖4B顯示由24個寄存器組成的寄存器文件的一段,其中屬于單個線程的矩陣正在保存位于該分段的24個條目寄存器文件中的執行結果。同時,3個其他的并行矩陣正在圖4A中其他3個分段上執行,并且它們的執行結果被廣播到這個寄存器文件分段。
[0051]通過將每個矩陣的結果限制到不相重疊的6個寄存器組,將寫端口配置成啟動單個線程寄存器廣播。通過分段寫端口實現了這種方法,其中每個寫端口寫入到寄存器430的分離的組中。來自其他分段的寫端口 440將寫入到不同的不相重疊的寄存器組中。
[0052]如果這是線程模式或MMD模式,那么由該分段的結果使用那些進入不重疊組的全部寫端口,從而利用并寫入全部24個條目寄存器文件,并且因為其他分段具有使用獨立寄存器的獨立代碼(意味著本地分段寄存器將需要使用全部寄存器),所以不進行廣播。另一方面,如果使用單線程,那么全部分段協作起來為這個單線程工作。在這種情況下的寄存器總數僅僅為24,因此跨過剩余分段(24條目*3分段)的寄存器可用于互相保存拷貝。通過編譯器進行分析以判斷矩陣是否可以并行化并對那些有機會并行執行不重疊寄存器組的矩陣進行分配,可以分配這個寄存器組。
[0053]盡管根據全部4個分段寫入結果,寄存器文件中的每個存儲單元僅僅具有支持一個分段的端口。在傳統的寄存器文件中必需支持4個分段,在下面所示的實例中進行了 4折(fold)的增加。
[0054]在UUM基線格式之上,這些體系結構中實現了 UUM中的數據并行性。這是通過允許ULIM模板中的每個指令都是SMD/MMD指令來實現的。在前述附圖中,每個并行時隙可以支持內部復制的SIMD結構,同時由不同的并行/串行時隙支持MIMD。
[0055]依賴于不同的預期訪問性質,能夠看到存儲器/寄存器或矩陣緩沖器可由指令訪問。例如,數據矩陣可以被看作寬數據元(element)的MMD,小數據元的SMD,或混合數據寬度SMD指令的MMD。
[0056]在圖5中,顯示了數據的存儲器/寄存器矩陣緩沖器布置的2個視圖。右側視圖表示每行和每列中的相互垂直的數據元。這樣支持不同的MMD/SMD數據的組合。左側視圖表示任意行中每個位置的不同元,但是列表示更大數據量元的剩余位數。例如,右側視圖可以表示4條MMD指令,每條指令對4個不同的SMD字節進行運算,每條指令是一個字節的并行數據元。同時左側表示4條MMD指令,每條指令對縱向布置的32位元進行運算(實際的物理布置不同于所示的邏輯表示)。此外,如果視圖是MMD視圖,那么全都屬于4分段的一個單獨的MMD寄存器,但是如果該視圖不是MMD視圖,那么那些寄存器是4個縱向布置的獨立寄存器。
[0057]這個存儲器和寄存器文件視圖及其對應的執行模式的意義在于,它啟動執行單元變形(morph)來執行寬MMD/SMD指令(將全部寄存器分段合并成4路MMD/SMD),但是同時4個寄存器文件分段和附加的對應執行單元能作為4個獨立單元對4個不同的標量寄存器進行運算,允許以最小粒度級別在執行單元內部以單線程和多線程執行。
[0058]UUM體系結構具有類似于VLIW或MMD模板的固定大小的指令模板。與VLIW或MMD模板不同,UUM模板允許指定并行指令以及依賴指令兩者。寫入寄存器以及在通過寄存器名稱傳達依賴性的矩陣內部的指令依賴性都遵循相同的馮諾依曼指令體系結構。ULIM體系結構另一個值得注意的方面在于,矩陣中每個指令在矩陣中具有固定的預定位置,并且以相對于矩陣中其他指令的固定分時進行執行。ULIM矩陣寬度類似于對應的VLIW模板的寬度。事實上,通過在UUM模板一個橫向行中放置一條VLIW指令,可以將依賴VLIW指令以串行流轉換到ULIM模板中。不可能相似于利用VLIW指令流的全部可能的ULIM模板,因為ULIM模板可以包括在一個時隙中處于同一行的一條復雜指令以及在橫向相鄰時隙中的多條簡單指令。
[0059]與執行單獨指令的傳統體系結構不同,使用組成指令矩陣的矩陣體系結構的優點很多。下面的論述示出了啟動和利用本發明指令矩陣和執行塊體系結構的機制建立和實現大規模并行單處理器流水線。
[0060]圖6表示可以實現的利用ULIM體系結構的處理器流水線。本發明利用一種機制來簡化提取(fetch)階段600、分支(branch)分析和解碼階段608。提取單元600基于指令矩陣而不是基于指令取得代碼。通過矩陣大小而不是指令大小來增加這種體系結構的程序計數器。這樣意味著在每個周期提取大量指令。為了能夠實現上述目的,ULIM矩陣不允許在ULIM矩陣內部存在分支,但可以在ULIM矩陣之間存在分支。分支分析在兩種級別上進行。在ULM矩陣內部,分支被替換為條件執行、條件移動和預測。在矩陣之間,通過路徑預計和分支著色對分支進行處理。這樣允許分組到矩陣中的大量指令前進通過流水線提取階段和分支分析階段。
[0061]在單個矩陣內部沿著側面并行指令執行依賴指令解除了由編譯器構造全部并行指令時隙代碼的困難。它也簡化了在分數板硬件(score board hardware)602、分派單元604或硬件調度單元中的數據依賴性檢查。這是通過利用矩陣數目作為工具執行矩陣之間的分數板和依賴性保持、而不是利用單獨的寄存器或單獨的指令實現的。在圖7的實例中,分數板僅通過參考矩陣數目2、4和5歸納矩陣8的依賴性優先級,這意味著矩陣8需要從那些矩陣中讀出數據結果。分數板依賴性檢查不需要參考(reference)單獨寄存器或指令信息以維持依賴性分數板。矩陣數目攜帶這種信息并且足以保持依賴性檢查的正確性。依賴于其他矩陣的矩陣內部指令可以在那些矩陣已被執行之后發出。當矩陣依賴于延遲(例如,因為高速緩存未中)時,阻止整個矩陣被分派。在ULIM流水線實現的一個實施例中,延遲解碼階段608,直到該階段正好在執行階段之前為止,并且該階段與寄存器讀階段606并行執行。
[0062]圖8表示對ULIM體系結構指令模板進行編碼的一個實施例。其關鍵在于編碼和操作數的結構(結果寄存器和源寄存器)。在ULIM模板分離分段中指定指令結果和源操作數的寄存器,而不管指令的操作碼并且不管這些指令是復雜運算或簡單指令對。這種矩陣格式以明確的矩陣分段的方式列出源和目的地,使得獲取源寄存器和目的地寄存器與矩陣內部指令解碼無關。這樣能實現延遲解碼階段,其中單獨指令操作數的實際解碼被延遲,直到僅僅先于執行階段為止,并且這種解碼和讀取寄存器來啟動下一個周期執行并行進行。這樣也簡化了依賴性分析和分數板實現。
[0063]如果時隙包括復雜指令,比如“乘累加(MAC) ”,那么需要4個源并且寫回2個結果。如果同一時隙包括兩個簡單指令,比如Logic和ALU,那么每個指令需要兩個源并寫回一個結果,其中兩者合起來需要4個源并產生兩個結果。這使得源和結果的數量與運算類型無關。
[0064]如圖4A所示的處理器執行硬件包括寄存器讀寫機制,其中矩陣操作數緩沖器能夠基于每個源在相應的矩陣硬件元上執行的物理位置,匯集所需寄存器源和目的地。這樣減少了讀寫端口數目以及寄存器文件的帶寬要求。利用這種矩陣體系結構的特點,在矩陣緩沖器中對源和/或目的地進行緩沖的旁路機制得以簡化,其中由每個執行單元關閉或附著到矩陣緩沖器能夠比傳統的寄存器文件(特別在需要支持如此多的單個執行單元的大型寄存器文件的情況下)提供更短的訪問時間以及更大的源和結果端口帶寬。
[0065]圖9表示本發明的矩陣緩沖器的原理。該圖顯示指令矩陣操作數緩沖器900連接到執行單元902。在這個實例中,指令矩陣操作數緩沖器900為3個不同的矩陣緩沖源和目的地。尤其重要的是寫端口 904設置成每個寫端口向不同的存儲器單元寫入。這意味著即使同時寫入6個結果,矩陣操作數緩沖器存儲器單元仍是單個端口的,所述6個結果相當于傳統的6路端口的寄存器文件。此外,每個寫端口的扇出(需要驅動的單元)等于矩陣緩沖器中的矩陣數目(在這個實例中僅為3)。這些特征在面積、功率和訪問速度方面具有很多的優點,使得這種緩沖器結構具有很好的可伸縮性,并且對于作為高帶寬高速寄存器文件的備選非常具有吸引力。
[0066]下列方法描述如何從矩陣操作數緩沖器對寄存器進行寫入和訪問。每個矩陣正好在或略先于矩陣準備好執行而被分配到矩陣緩沖器中任何可用的矩陣空間中。矩陣需要能夠開始執行的遠端源(例如不在這個矩陣緩沖器內部的其他矩陣存儲器中的源)可以暫時在這個矩陣存儲器中分級。
[0067]在執行矩陣之后,結果寫入為這個矩陣存儲器分配的區域中(圖9的矩陣緩沖器內的3個矩陣位置之一)。每個結果被寫入到由結果寫端口訪問的對應位置,而與結果寄存器數目無關。與矩陣位置一起的這個位置被傳輸到類似于圖7所示的分數板機制的消耗矩陣中,使得依賴于該矩陣的每個矩陣將用那些源來自的矩陣位置以及矩陣內部每個源的位置來標記它的寄存器源。矩陣內部的結果位置能夠在執行時間由執行硬件傳遞,或者因為矩陣模板在編譯時固定,所以矩陣內部結果位置能伴隨著源寄存器數目被軟件嵌入矩陣指令模板中。
[0068]基本思想是建立起可伸縮的伴隨著寄存器文件的源和結果緩沖器結構,其中那些緩沖器連接到執行單元,從而通過在常規寄存器文件和執行單元之間建立起中間介質的標識方法,在基于位置的矩陣中臨時保持數據,以允許更高帶寬和速度。可利用矩陣位置和矩陣內部源位置訪問那些矩陣緩沖器中的值。例如,通過記錄在矩陣緩沖器何處分配該矩陣,以及通過在矩陣內部物理占用的寄存器5的結果的條目編號來索引該矩陣本身的存儲器,能夠訪問通過矩陣20寫入的寄存器5。然而,在矩陣被從矩陣緩沖器中解除分配之后,那么矩陣內部的全部條目保持寄存器值將寫回實際的寄存器文件并且通過從該時刻往前的寄存器編號來訪問。用于寄存器文件的利用矩陣數據緩沖器的基于位置的前述相同標識和訪問方法可被用于使用存儲緩沖器高速緩沖的存儲器訪問。
[0069]如果下層硬件是統一的并且是重復的,那么可以容易地通過編譯器構造該矩陣的體系結構。它也允許更有效率地使用功率和硅面積。在此,我們引入通用單元的概念,所述通用單元是根據諸如小加法器、邏輯門、復用器(multiplexer)和布斯(booth)單元之類的基礎建立元而構成的。[0070]通用單元的體系結構允許它在每一個通用單元的內部執行全部功能/運算。這意味著每個單元都能夠進行加法、乘法、移位、轉置(permute)等。這種方法能執行這種通用功能的方式在于它的組成脫離了用于執行簡單ALU運算的基礎建立元。另一方面,這些簡單元級聯地執行復雜運算。它也可以處理浮點和整數數據。上述思想有利于理解通用單元的概念,但是它通過簡化調度并將機器吞吐量利用到極限,從而獲得了顯著的優點。在常規的體系結構中,采用分離的單元執行每個運算或功能。它們共享相同的執行端口。這樣,當使用一個單元時,沒有使用其他單元。此外,傳統體系結構中的延遲在它們之間發生變化,使得調度器難于調度它們。相反,在這個通用單元中,對于整個單元統一了延遲,并且調度器可以看到通用單元的對稱例化。
[0071]圖1OA顯示這個通用單元的一部分。每個通用單元可以執行不同的執行單元功能,比如乘法器、加法器、移位器、轉置器等等。這個實施例顯示進位保留加法器和/或普通加法器1000的結構。該單元由基礎要件組成,每個要件具有4行(可以是更多或更少的加法器)能并行加8個輸入(4個并行/串行的加運算)的加法器。這些加法器然后被構造成組。一行中的每個加法器要么連接到下面一行相同位置地址加法器(以執行串行ALU運算),要么被連接到下面一行它右側的加法器以執行乘法運算。該運算可以是C*B+A或A OPB,在每行中形成4個并行/串行ALU運算。另外,這些加法器組有可能具有不同的數據大小。加法器的這種結構允許樹執行多操作數加法、乘法、乘累積、差分求和、移位及循環。另夕卜,復用器(未在圖中顯示)將對齊/轉置/移位輸入或中間輸出,從而獲得所需的運算,包括移位和轉置運算。布斯單元/位乘單元1002被加到加法器,從而實現乘法。增加其他具體的邏輯、狀態、存儲器或LUT元,從而提供擴展功能。
[0072]通用單元允許利用與執行乘法運算相同的結構或與用于執行浮點加或浮點乘累積相同的結構實現轉置/移位單元。其優點在于允許較少的路徑/面積來實現轉置/移位邏輯。通過執行2X乘,利用乘結構執行移位或循環(rotate),其中X是移位計數值。通過分別選擇乘積結果的上部分或者下半部,或者在乘積結果的上部分和下部分之間執行"或"函數,來實現左移、右移或循環。
[0073]利用基礎的2-輸入加法器結構,每個元組成一組位。進位保存加法器還可以利用邏輯和MUX(多路復用器)來實現。例如,為了建立32*32元,基組可以由8位或4位基礎加法器和MUXES構建,并且能利用修改過的超前進位加法器單元內部邏輯門執行邏輯函數。
[0074]圖1OB顯示用于圖1OA中4位加法器的修改后的超前進位加法器的基礎一位單元,從而要么產生加法器輸出,要么產生選擇的邏輯輸出。通過不在加法器的關鍵路徑中的連接1010和兩個4:1復用器1012顯示出這種修改。原來的加法器位結構(標記為1014)包括超前進位和求和邏輯。這些圖是邏輯表示,其實際電路可能不同。
[0075]4位(或8位)組便于執行各種大小的SIMD寬度以及進行16位運算。通過相同的原理,那些16位的片(tiles)可以級聯起來用于更大寬度的數據運算,比如64位運算,同時仍然便于加法和多操作數加法、移位、循環和乘法的8位、16位和32位SIMD運算。
[0076]這種結構背后的基本原理在于能在同一結構上執行并行和串行指令的組合。例如,第一行結構可以執行單個32位ALU,該ALU可以在第二行繼之以依賴ALU或者無關ALU等等。4行一起可以執行至多四個32位ALU串行/平行運算,或者單個32位乘法運算。它還可以對子矩陣執行部分寬度SMD運算。尤其在矩陣數據和指令分段中,在這個通用單元上調度的指令和操作數成為一個組。
[0077]因為在同一周期或在接下來的周期內,對待調度的依賴指令進行流水線處理依賴于所需頻率,所以可以利用指令矩陣體系結構在一個周期內對指令進行流水線處理。存在多種方法來利用ULIM體系結構。該系統允許超大指令矩陣調度。并行指令以及依賴指令作為一個矩陣進行調度(這與VLIW中僅能調度并行指令形成對比)。這個矩陣中每個指令或依賴指令可以是標量或SIMD。
[0078]該發明可用很多種方法實現。例如,可以在時鐘周期內部分級多個依賴指令。在本發明的這個具體實施例中,可以在一個時鐘周期內部分級多個依賴和并行指令。可以在一個周期內開始多個依賴指令;這樣減少了程序執行的最優關鍵路徑。將一個單元內的每種基本運算從隨后的運算中分離,利用狀態元可以對多個依賴指令進行流水線處理。這樣增加了流水線執行率。然而,因為時鐘速度和額外的狀態元,這種結構的功率將增加。狀態元可以保持定值,但是利用波(wave)流水線提高了通過該結構提取的數據率。
[0079]該發明也包括延時切片體系結構(Time-Lag Sliced Architecture, TLSA),其減少了依賴指令的等待時間。延時切片體系結構背后的基本思想在于一種運算通過數字切片產生其結果數字切片。每個切片早于下一個切片一個切片間的延時產生。一旦產生第一個切片,可以開始執行下一個計算,然后產生其自己的切片。在此描述的切片結構是總體結構,適用于計算單元以及寄存器文件和存儲器。該體系結構應用于全部算術、移位、整數和浮點運算。
[0080]TLSA用于實現整個系統總體結構,包括存儲器和計算。數字切片不必等于固定大小的數字。該發明可以對數字切片方式到達的兩個操作數進行運算。本發明可以實現布斯編碼乘法器、變量移位器、轉置引擎以及浮點加法器和乘法器。
[0081]在設計的執行單元中,普通方法是將算術/邏輯或移位器單元的輸出結果的數字或數字位作為一個單輸出結果進行同步。該結果要么鎖定到存儲元或者同時作為一個塊分級到接收元中。然而,在這種體系結構中,細粒執行提供或不提供粗粒同步執行。基本思想是在時間和/或空間上分級的延時邏輯切片結構中用公式表示算術或轉置/移位運算。執行硬件以延時流連接,其中先前切片執行得更快并且更快產生輸出結果的切片,同時后面的切片就需要更多時間來執行并以相對于先前切片延遲產生結果。值得注意的是,即使在單個執行單元內部,比如加法器或轉置器內部,也以位/數字的細粒度進行切片。這個體系結構可以利用這種數字/位邏輯電路切片結構來優化邏輯分時關鍵路徑和/或信號路由路徑編號和/或執行算術、轉置、移位等用于整數和/或浮點運算的面積。該切片可以具有相等的位/數字或不同數目的位/數字。這種體系結構的一個特別的優點在于能夠在最后確定全部源指令的輸出結果切片之前,開始執行依賴指令。
[0082]圖11表示TLSA單元1100,其中數據流入流出切片1102A-1102C。每個切片輸出具有相對于前一個切片的延時延遲(d)。這種延時特征允許對該單元進行流水線處理,以便于不同切片的狀態元不同步到一個時間,這典型地用于行/分級觸發器。
[0083]圖11的體系結構包括基礎加法器階段結構,用于計算基礎計算任務,諸如多操作數加法或子塊乘法等。利用不作為基礎任務關鍵路徑的一部分的分級元1104A-1104C,上述計算被級聯起來。依賴于被切片的基礎計算任務,分級元可以是加法器、復用器或邏輯門。這些分級元1104的延遲最小化并等于時間"d"," d"就是每個切片輸出和下一個切片輸出之間的延遲。
[0084]分級元被選作具有最小的延遲可能,因為它也建立起切片之間的輸入操作數切片的延遲。圖11中的基礎計算任務可采用任意加法器級。那些加法器可以是任何類型,比如是二進位的或進位保留加法器(CSA)。圖11的體系結構的優點在于:產生結果的第一切片早于最終結果。第一切片被送到后續運算。
[0085]圖12表示本發明的一個實施例,其中多個延時切片單元背對背的交錯。在這個實施例中,每個對角線切片表示被分成切片的一個指令計算單元。在此,相對于前一切片的延時處開始執行每個切片。每個單元反饋一個后續的單元。這個實施例顯示背對背的四個單兀。標記SU1_0引用單兀號I的切片號O。SU4_7引用單兀號4的切片號7。
[0086]圖12所示體系結構允許(如有必要)多個TLSA單元在單個周期內(或者在多個周期)內處理數據。第一單元的下切片反饋第二單元的下切片,并且繼而第二單元反饋第三單元,然后第三單元反饋第四單元等。還應當注意到,除第一單元的第一切片反饋第二單元的第一切片之外,它也反饋它自身單元(第一單元)的第二切片。圖12表示下列原理:
1-TLSA中的子周期/多周期執行
TLSA允許在一個周期內部執行算術/移位/邏輯運算。圖12表示4個單元在一個周期執行,其中每個切片具有延遲的時鐘周期。通過同樣的方式,在每個單元切片的輸出(而不是4的輸出)處執行流水線,從而增加多個周期中的吞吐量并在多個周期中進行。
2-異步/同步/波TLSA拓撲
TLSA可以設計成至少3個不同的拓撲或這些拓撲的組合:
A-異步:其中無需同步狀態元(例如,觸發),切片輸入/輸出在周期時間內相互通信。這樣允許去除內部流水線狀態元,并且啟動電源放緩時鐘域。
B-同步:每個切片計時成狀態元(觸發/鎖定/多米諾(domino)等等)。這樣允許更高的時鐘吞吐量和流水線速率。
C-波:在這種拓撲里,一片一片地將數據饋入到單元中,接下來輸入的數據快于正常的流水線速率。正常流水線速率依賴于兩個狀態元之間的邏輯路徑的最大時間。波流水線速率依賴于兩個狀態元之間的邏輯路徑的最小時間。
一種有趣的拓撲組合是細粒異步粗粒同步(FGA-CGS)。在這種模式中,利用異步連接的延時切片實現TLSA,其中細粒異步執行提供或不提供粗粒同步執行。基本思想是以這種切片分級處理結構來用公式表示算術或轉置/移位運算,其中執行硬件的不同切片的執行在一個延遲流中異步連接,其中的早期的切片具有較少的輸入并且更快地執行,然后更快地產生其輸出結果。后面的切片具有更多的輸入,因此需要更多的時間以相對于早期切片的延遲執行并產生結果。然后每個切片以相對于前面的切片具有延時的同步(或異步)元進行計時。
[0087]圖12表示在一個周期內交錯的多個TLSA單元(在I個時鐘內4個背對背加倍計數器單元),同時該實現表示單元切片以異步方式(細粒同步)相互通信的FGA-CGS實現,同時在輸出到狀態元時鐘時同步每個切片或背對背切片。每個切片的輸出可以同步到不同的時鐘(延遲版本)。
[0088]TLSA體系結構支持超大指令矩陣(ULIM)體系結構。在這個TLSA實施例中,整個指令組被調度,其中在上述TLSA簇的實例上調度多個并行指令和依賴指令。每個單元還可以支持SIMD數據,其中數據切片副本被實例化,但是受到相同的指令激勵的控制。另外,多個SMD通用單元的這種組合結構可以被橫向地實例化,從而在單個單元上實現MMD體系結構。這種方法在一個周期內調度包含SIMD指令和依賴指令的并行變化兩者的整個指令模板。
[0089]圖13表示傳統的乘法技術。具體而言,每個B數字乘以A數字的集合,在乘法開始時每個數字必須在乘法執行單元處可用。然后對結果求和。相反,利用本發明,如圖14所示,操作數一個數字一個數字地到達。可見圖14每行表示乘法運算的部分乘積,但是相對于數字切片到達時間,僅僅包括當前到達和先前到達的數字。
[0090]為了顯示如何建立使用布斯編碼乘法的邏輯結構來執行延時切片結構,圖15顯示了傳統的布斯編碼32位常規乘法器。布斯編碼器組順序將多位相加以產生數字。這種分組可以減少最大數字值,所述最大數字值是通過編號上連續的兩個數字的標記組合來表示這些位的。例如,3位數字的最大值為7,但是通過在該數字值左側加1,則數字7現在變為了 -1。利用已標記的數字表示,允許那些已編碼數字值達到原始數字值的1/2的最大值。
[0091]圖16實現了圖15所示利用根值4數字進行常規布斯乘法的傳統邏輯結構。選擇器1600AU600B選擇被乘數的哪一個倍數來用完可能的已標記值(0,1,-1,2,-2);通過該乘法器位的布斯編碼來確定這種選擇。
[0092]圖17和18顯示新的布斯編碼方案以及實現這種方案的新的TLSA邏輯結構。注意,傳統的乘法器具有連續不斷編碼的位流,同時TLSA布斯編碼器在數字切片邊界處在位流中插入0(在這個實例中是8位數字)。無論乘法的符號(最后2位表示符號),插入的O都不變化。
[0093]圖18顯示出如何實現新修改的延時切片布斯編碼32位乘法器。這種實現相似于圖11所示的通用TLSA結構。圖18實現如圖14和17所示的子乘法運算。
[0094]在UUM基線格式之上,這些體系結構中實現了 TLSA中的數據并行。通過允許SIMD/MIMD的TLSA數據格式中的每個指令按照正交維數組織到TLSA切片中實現了這種方法。圖19顯示由能夠根據計劃訪問的性質不同而看到的指令訪問存儲器/寄存器文件數據塊的結構。例如,數據塊可以看作寬數據元的MMD、小數據元的SMD、混合數據寬度SMD指令的MMD等等。圖19顯示執行這種組合的體系結構。單元內的切片可以獨立地運算,從而執行子運算。例如,每個8位切片可以執行獨立的8位乘法,同時構造一個32位乘法器單元的切片組還可以作為4路SMD字節乘法器運算。另一方面,單元組可以作為MMD乘法器。
[0095]圖20表示以切片方式訪問的存儲器。在傳統的存儲器體系結構中,單個操作數(例如64位整數或浮點操作數)作為整體被提取。在完成地址解碼之后,通過讀端口讀取全部位,讀端口必需緩存,從而在存儲器中操作數大小的整個寬范圍內緩沖使能讀出。在TLSA體系結構中,在發生地址解碼之后,在與前一個切片之間具有延時的跟隨切片的延時模型上發生數據讀出和/或寫入。這個模型的優點在于,當無需立即解碼并驅動整個數據寬度時,該模型能夠快速響應存儲器。
[0096]圖21表示利用數據切片之間延時的具有轉置/移位單元的TLSA體系結構。這個優點允許更短的時間來產生早期結果切片和/或更少的路由/面積來實現轉置/移位邏輯。在圖21中,構造右移移位器來獲得以8位數字切片的32位操作數的延時到達。32位輸入的第一切片(數字)在時間Ttl到達,而上一次切片在時間1+3(1到達,其中d是一個MUX延遲。縱向顯示在右邊的位(O到5)表示移位次數(最大32,任何大于32的值產生零輸出,基本上全部數據被移出)。從來自移位器右側的第一低位數字到達開始執行。然后該單元等待下一個輸入數字到達。依賴于移位計數值的位3的值,將數字中的一個數字選到更低的數字位置,這樣將判斷該數目將右移8位。然后,下一個最高有效位到達,并且選擇該新數字,或者利用移位計數值中的下一位,傳遞在上面的復用器級中選擇的數據等等。任何移位計數值零移出的復用器位置將對其輸出實現零負載。當最后一個數字到達時,它通過最小數量的復用器級,這樣將相對于前一個數字具有最小延遲“d”,從而啟動上一個數字對輸出的快速傳播。
[0097]左移移位器可用關于垂線對稱的圖21的結構來構造,其中左切片具有較多復用器棧,右切片具有較少的復用器棧。最高有效數字經過最小數目的復用器級。
[0098]切片結構通用單元可以是類似于圖10A-10B所述的一個通用單元。它采用相同的切片體系結構技術(TLSA)和/或細粒異步原理。它在每一個通用單元內部執行全部功能/運算。這意味著每個通用單元能夠執行加法、乘法、移位、轉置等。執行這種通用功能具有低延遲,其方法是以延遲方式每次處理一個單獨的切片。它也可以處理浮點和整型數據。通用單元原理通過上述思想變得更為清晰,但是它通過簡化調度并將機器吞吐量利用到極限從而實現了重要的優點。在常規的體系結構中,分離的單元用于執行每個運算或功能。它們共享相同的執行端口。因此,當一個單元被使用時,其他單元沒有被使用。此外,傳統體系結構中的延時是變化的,使得調度器調度它們很難。與此形成對比的是,在這個通用單元中,對于整個單元延遲被統一,并且調度器可看見通用單元的對稱實例。
[0099]每個通用單元可以執行不同的執行單元功能,比如乘法器、加法器、移位器等等。另外,這些切片有可能具有不同的數據大小。在這個特定示例中,每個切片的數據寬度大于前一個切片的數據寬度。這種加法器結構允許切片樹執行多操作數加法、乘法、乘累積、差分求和等。復用器(未在圖中顯示)對齊/轉置/移位輸入或中間輸出,從而利用加法器/復用器的通用結構獲得所需的運算,包括移位和轉置運算。布斯單元/位乘單元1002被加到加法器,從而啟用乘法。增加其他具體的邏輯、狀態、存儲器或LUT元來提供擴展功能。
[0100]UUM體系結構可以利用已披露的TLSA技術進行時間切片。構建通用單元的其他方法是將其配置為浮點乘累積單元(MAC)。用于建立這個單元的功能模塊是乘法器、右移移位器、加法器和左移移位器。這種結構在圖22中公開。通用單元可以利用這種結構來執行構造FP-MAC的這些功能中任一功能或這些功能的組合。
[0101]已在上文中描述了上述功能中的每一個,因此可以分別作為TLSA結構實現,然后合并起來作為浮點乘累加TLSA結構。這種結構還可以作為連續切片的ALU或后面乘以ALU或移位等。
[0102]本發明的一個實施例涉及具有計算機可讀介質的計算機存儲產品,其上具有用于執行各種計算機實現的運算的計算機代碼。這種介質和計算機代碼可以是為本發明目的而專門設計和構建的,或者是計算機軟件領域技術人員公知的并可以獲得的。計算機可讀介質的實例包括但不限于:諸如硬盤、軟盤和磁帶之類的磁介質;諸如CD-ROM、DVD和全息裝置之類的光學介質;磁光介質;以及專門配置為存儲和執行程序代碼的硬件設備,比如專用集成電路(ASIC)、可編程邏輯器件(PLD)以及ROM及RAM設備。計算機代碼的實例包括機器代碼,諸如編譯器產生的機器代碼,以及由計算機利用解釋器執行的包含高階代碼的文件。例如,本發明的一個實施例可利用Java、C++或其他的面向對象的程序設計語言和開發工具來實現。本發明的另一個實施例將以硬線電路代替機器執行軟件指令來實現或以硬線電路結合機器執行軟件指令來實現。
[0103]以上描述僅用于解釋的目的,采用了特定的術語來提供對本發明的透徹理解。然而顯而易見的是,對于本領域的技術人員而言,無需這些具體的細節也能夠實現本發明。因此,本發明的上述具體實施例的描述僅是出于解釋說明的目的。它們不意味著是詳盡的,或者將本發明限制為已公開的精確形式;很明顯,可以對上述教誨進行各種各樣的修改和變更。為了最佳地解釋本發明及其實際應用的原理才選擇和描述了上述的實施例,因此它們使得本領域的其他技術人員能夠最優地利用本發明并且具有各種修改的各種實施例適用于特定用途。本發明的范圍由所附權利要求書及其等效內容來界定。
【權利要求】
1.一種處理器,包括: 執行單元矩陣,包括第一行執行單元和第二行執行單元,其中,所述第一行執行單元并行地操作并且所述第二行執行單元并行地且依賴于所述第一行執行單元進行操作; 具有多個寄存器分段的寄存器文件,用于存儲指令矩陣結果,用于由所述執行單元矩陣進行隨后處理,其中,所述指令矩陣的每一個指令矩陣包括由所述第一行執行單元的執行單元的子集并行執行的第一行指令以及由所述第二行執行單元的執行單元的子集執行的第二行指令,其中,所述寄存器文件對于不同的執行模式可配置,所述寄存器文件包括: 形成單個寄存器文件的所述多個寄存器分段,其中,每一個寄存器分段存儲形成超級指令矩陣的多個指令矩陣的單指令多數據(SIMD)指令或多指令多數據(MIMD)指令的源和結果的一個字的段; 形成具有單獨的寄存器狀態的單獨的獨立寄存器文件的所述多個寄存器分段,用于支持分離的線程的同時處理,其中,每一個指令矩陣與分離的線程和分離的寄存器文件分段相關聯;并且 形成單個線程寄存器文件的所述多個寄存器分段,其中,在所述寄存器文件的多個分段中復制寄存器分段,以存儲從單個線程指令序列動態發出的同時執行的非依賴的指令矩陣的結果。
2.如權利要求1所述的處理器,其中,所述指令矩陣由運行時系統形成。
3.如權利要求1所述的處理器,其中,所述指令矩陣由硬件形成。
4.如權利要求1所述的處理器,其中,所述指令矩陣由編譯器形成。
5.如權利要求1所述的處理器,配置為處理指令矩陣數目以識別矩陣依賴性并且執行指令矩陣之間的分數板依賴性分析。
6.如權利要求1所述的處理器,配置為訪問副本寄存器文件的多個寄存器分段。
7.如權利要求1所述的處理器,配置為在副本寄存器文件的不同寄存器分段中存儲指令矩陣結果。
8.如權利要求1所述的處理器,配置為將用于每一個指令矩陣的指令結果和源操作數的寄存器指定為組。
9.如權利要求1所述的處理器,配置為使用在每一個指令矩陣的固定位置中列出的源和目的地來讀取指令矩陣操作數,而不管操作碼。
10.如權利要求9所述的處理器,配置為以列出的源和目的地為基礎來確定指令矩陣之間的依賴性,而不管操作碼。
11.如權利要求1所述的處理器,其中,所述執行單元矩陣支持浮點、整數、單指令多數據(SMD)和多指令多數據(MMD)操作。
12.如權利要求1所述的處理器,其中,所述寄存器文件具有通過將每一個執行塊結果與矩陣緩沖器存儲器條目相關聯來在不增加端口數目的情況下支持并行塊寫入的層次。
13.如權利要求1所述的處理器,進一步包括使用矩陣數目以跟蹤寄存器參考的調度器。
14.如權利要求13所述的處理器,其中,將矩陣結果的位置傳輸到消耗矩陣以識別所述消耗矩陣的源寄存器在所述多個寄存器分段中的位置。
15.如權利要求1所述的處理器,其中,執行單元的子集形成執行塊,每一個執行塊配置為執行操作的公共集。
16.如權利要求15所述的處理器,其中,每一個執行塊具有相同的處理延遲。
17.如權利要求15所述的處理器, 其中,每一個執行塊是到調度器的對稱實例。
【文檔編號】G06F9/38GK103646009SQ201310589048
【公開日】2014年3月19日 申請日期:2007年4月12日 優先權日:2006年4月12日
【發明者】M·A·阿卜杜拉 申請人:索夫特機械公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 西林县| 麦盖提县| 剑川县| 常山县| 山丹县| 南澳县| 巨鹿县| 盈江县| 河北区| 确山县| 鄯善县| 象山县| 萨嘎县| 苏尼特左旗| 河北区| 汪清县| 张家界市| 双柏县| 高陵县| 唐山市| 夏津县| 台南县| 安吉县| 临朐县| 重庆市| 麦盖提县| 彰化市| 黎城县| 乌兰浩特市| 茂名市| 金山区| 广德县| 潜山县| 全南县| 新干县| 抚远县| 敦化市| 仪征市| 通河县| 永年县| 同仁县|