專利名稱:一種處理器體系結構的制作方法
技術領域:
本發明涉及處理器體系結構領域。
背景技術:
現有的處理器體系結構在執行操作時通常先用專門的數據裝載指令將操作數從 存儲器中裝載(load)到寄存器中,再送到運算單元執行相應操作;執行完畢后,先將執行 結果保存在寄存器中,再用專門的數據存儲指令將寄存器中的數據存儲(store)到存儲器 中。即便是支持操作數存儲器尋址的處理器,由于存儲器端口數目和帶寬的限制,無法同時 從存儲器直接取得運算單元所需的全部操作數,而是先將一部分操作數從存儲器裝載到寄 存器中,再由存儲器和寄存器同時提供運算單元所需的操作數。緩存(cache)的作用是將存儲器中的一部分內容(即操作數)復制在緩存中,使 這些內容能在短時間內由處理器快速存取,以保證流水線的持續運行。然而,由于緩存是存 儲器的一部分鏡像,即便存在于緩存中的操作數,也必須先被全部或部分地裝載到寄存器 中后,才能被運算單元使用,并沒有一種由緩存直接向運算單元提供全部操作數并將執行 結果直接寫回緩存的處理器體系結構。根據統計,在傳統處理器的程序中,裝載指令和存儲指令占程序中指令總數30% 左右。由于裝載指令和存儲指令本身并不涉及算術邏輯運算,因此這類指令的比重越大,處 理器運算單元的利用率越低,處理器的運算能力越無法得到充分的發揮。專門的裝載/存儲單元(load store unit)的提出在一定程度上實現了裝載/存 儲指令與算術邏輯運算指令的并行執行,提高了處理器運算單元的利用率。然而裝載/存 儲指令涉及的操作數與之后使用這些操作數的運算指令之間的數據相關性使得裝載/存 儲單元帶來的性能提升并不理想。此外,額外的裝載/存儲單元增加了處理器的復雜性。本發明公開了全新的處理器體系結構,從根本上解決處理器的效率問題。
發明內容
本發明提出了一種基于直接支持運算單元(Execution Unit)的零級存儲器新的 處理器體系結構。所述處理器體系結構與現有的傳統處理器體系結構相比,有以下不同(1)沒有對操作數的裝載指令;(2)沒有對執行結果的存儲指令;(3)用零級存儲器代替傳統處理器體系結構中的通用寄存器堆(RegisterFile); 所述零級存儲器的端口數大于或等于三個。在傳統處理器體系結構的存儲層次中,比一級緩存更低存儲層次的是通用寄存器 堆。本發明所述的零級存儲器在對運算單元的運算支持效果上相當于通用寄存器堆,但本 質上是存儲器,內容是更低層次存儲器中一部分內容的鏡像,由存儲機制自動填充和替換, 不需要專門的指令進行裝載和存儲。本發明所述的寄存器需要專門的裝載/存儲指令按寄存器號尋址進行裝載或存儲數據,如寄存器堆和處理器狀態寄存器(processor status registers);而本發明所述 存儲器是整個系統存儲器中一部分內容的鏡像,由存儲地址尋址,所述存儲器中數據的填 充和替換按某種機制自動進行,不需要專門的指令明示(explicit),如各級緩存和內存。本發明所述的處理器體系結構中的運算單元能直接從存儲器取得操作數、并將執 行結果寫回存儲器。此外,所述處理器體系結構包含下列部分特征或全部特征(1)沒有寄存器堆;(2)沒有將操作數從存儲器裝載(load)到寄存器堆的指令;(3)沒有將執行結果從寄存器堆存儲(store)到存儲器中的指令;(4)對存儲器的尋址方式包括立即數直接尋址、基地址加偏移量方式尋址。本發明所述的處理器體系結構支持復數個流水線段同時對邏輯意義上的同一個 存儲器進行取操作數或寫回執行結果的訪問,可以是同時進行單數個或復數個數據的讀取 和寫回。本發明所述處理器體系結構中的指令格式可以只支持單數據尋址,也可以支持雙 數據尋址,還可以支持三數據尋址或更多數據尋址。所述數據尋址包括對運算單元所需的 操作數的尋址和對運算單元執行結果的尋址。本發明所述處理器體系結構中的尋址方式可以是通過指令碼中的立即數直接尋 址。本發明所述處理器體系結構中的尋址方式也可以通過基地址加指令碼中的立即 數得到的地址尋址。基于本發明所述的處理器體系結構構成的處理器包含零級存儲器;所述零級存儲 器具有同時支持讀取至少兩個數據并寫回至少一個數據的功能,可以由一個單獨的多端口 存儲器構成,也可以由復數個單端口或多端口存儲器構成。本發明所述的零級存儲器中儲存的是處理器對應的主存儲器中內容的子集,即所 述零級存儲器是部分主存儲器的鏡像,具有同時進行多個數據讀寫的功能,具體來說,至少 能支持同時讀取兩個數據并寫入一個數據。所述零級存儲器的工作頻率應適應運算單元工作頻率,指所述零級存儲器能以運 算單元能達到的最高時鐘頻率不間斷地提供操作數并接收執行結果。舉例而言,若對應所述體系結構的指令中最多一次用到三個數據尋址,當零級存 儲器支持在同一時鐘周期內完成讀取兩個數據并寫入一個數據,那么所述零級存儲器的時 延應當小于或等于運算單元的時延。若達不到所述的時延,則零級存儲器即為制約處理器 性能的瓶頸。當本發明所述零級存儲器由復數個單端口或多端口存儲器構成時,所述多端口存 儲器至少由一個具有單數個端口或復數個端口的第一存儲器和一個具有復數個端口的第 二存儲器構成。當本發明所述零級存儲器由復數個單端口或多端口存儲器構成時,所述多端口存 儲器還可以包括一個具有單數個端口或復數個端口的第三存儲器,用于暫存第一存儲器的 輸出數據,以供運算單元獲取操作數。本發明所述第一存儲器的端口越少,則第二存儲器的端口就越多以補償。根據本發明技術方案,以三端口零級存儲器為例,可以有以下幾種構成情況的實施例。此外還可以有更多的構成情況,均在本發明技術方案的范圍內。(1)由一個具有三個端口的存儲器構成,所述具有三個端口的存儲器可以同時支 持兩個讀數據操作和一個寫數據操作,以實現向運算單元提供操作數并寫回執行結果的功 能;(2)由一個具有兩個端口的第一存儲器和一個具有三個端口的第二存儲器構成, 所述第一存儲器用于向運算單元提供操作數,并接收從第二存儲器來的寫回數據,所述第 二存儲器用于向運算單元提供操作數并接收執行結果,以及將數據寫回第一存儲器;(3)由一個具有三個端口的第一存儲器和一個具有兩個端口的第二存儲器構成, 所述第一存儲器用于向運算單元及所述第二存儲器提供操作數并接收執行結果,所述第二 存儲器用于接收從所述第一存儲器來的操作數并向運算單元提供操作數。本發明所述的第一存儲器或第二存儲器可以由復數個大小相同或不同的存儲器 構成;當所述第一存儲器由復數個不同大小的存儲器構成時,較小的存儲器可以存有較大 的存儲器中的一部分數據。當本發明所述的第一存儲器或第二存儲器是由復數個存儲器構成時,若要寫入數 據,則通過復數個所述存儲器的端口向相同地址寫入同樣的數據,若要讀出數據,則可以根 據地址的不同,通過復數個所述存儲器的端口讀出不同的復數個數據,或只通過復數個所 述存儲器中的一個的端口讀出數據。本發明所述的第二存儲器具有以下特征(1)用于存儲操作數及所述操作數對應的地址信息;所述地址信息可以是地址 值,也可以是基地址值及偏移量;還可以是基指針寄存器號及偏移量;(2)所述用于存儲操作數的操作數存儲單元與用于存儲操作數地址的地址信息存 儲單元一一對應;(3)具有讀、寫指針,可以按特定算法寫入或讀出操作數;(4)可以將單數個或復數個輸入地址信息與存儲的地址信息進行匹配,并輸出匹 配成功的單數個或復數個對應操作數;所述輸入地址信息可以是地址值,也可以是基地址 值及偏移量,還可以是基指針寄存器號及偏移量。本發明所述的第二存儲器還可以具有寫融合(write merge)功能,即被寫入的數 據對應的地址信息在所述第二存儲器中已存在,則可以將所述寫入的數據替換部分或全部 已存在的數據。舉例而言,所述第二存儲器可以由操作數存儲單元和地址信息存儲單元構成。按 循環順序寫入操作數時,將操作數寫入寫指針指向的操作數存儲單元,并將所述操作數對 應的地址信息寫入所述操作數存儲單元對應的地址信息存儲單元,再將寫指針前移,即增 加寫指針對應的地址。按循環順序讀出操作數時,則將讀指針指向的操作數存儲單元及其 對應的地址信息讀出,再將讀指針前移。當所述寫指針或讀指針已指向所述第二存儲器的 最后一項操作數存儲單元時,若前移指針,則所述寫指針或讀指針將指向所述第二存儲器 的第一項操作數存儲單元。此時,所述第二存儲器類似一個循環先入先出隊列(FIFO),具備 循環先入先出隊列寫入、讀出,及數據有效性、隊列滿、隊列空等特性。所述寫入用于接收運 算單元的執行結果。所述讀出,用于將數據寫回所述第一存儲器。當從所述第二存儲器向運算單元提供操作數時,所述第二存儲器中的全部有效地
7址信息存儲單元并行與輸入的地址信息進行匹配,并輸出匹配成功的地址信息對應的操作 數存儲單元中的操作數。此時,所述第二存儲器的結構形式類似一個內容尋址存儲器,特征 是存儲的每一組地址均可以與復數組輸入地址并行匹配,輸出所述復數組輸入地址匹配成 功時對應的數據。所述匹配成功而輸出的操作數即運算單元所需的操作數。基于本發明所述的處理器體系結構構成的處理器還可以包含基指針(BP,Base Pointer)寄存器,用于存儲對零級存儲器進行的以基地址加偏移量方式尋址時的基地址。本發明所述的處理器體系結構中每個有效的基指針寄存器存儲與所述零級存儲 器中的一部分數據存儲單元對應的基地址;若所述第二存儲器存儲的地址信息是基指針寄 存器號及偏移量、且所述有效的基指針寄存器的內容被改寫后,第二存儲器中對應于基指 針寄存器原基地址的數據存儲單元中的數據應被無效化;若所述數據存儲單元中的數據 應該但還沒有寫回第一存儲器時,則需要先將被更改過的數據寫回第一存儲器后再被無效 化。舉例而言,根據本發明所述處理器體系結構,可以由指令碼中對應操作數或執行 結果的基指針寄存器號找到對應的地址寄存器,從而得到該操作數或執行結果的基地址。 再將該基地址與指令碼中對應操作數或執行結果的偏移地址相加,從而得到對應操作數或 執行結果的實際地址,進而完成尋址。本發明所述處理器體系結構可以具有專門的基地址裝載指令,通過所述地址裝載 指令可以將需要用到的基地址裝載到所述基指針寄存器中;也可以以當前基地址為指針, 根據程序運行的實際情況,加上一定的偏移量,從而得到新的基地址,并自動將所述新的基 地址裝載到所述基指針寄存器中。根據本發明所述技術方案,使用復數個基指針寄存器,可以使運算單元能獲取到 數據的地址空間不連續的,用較少的指令位數實現對位置上分散的數據的訪問,能有效地 縮短所述指令的字長,增大代碼密度。本發明所述處理器體系結構的指令中不同的操作數或執行結果可以共用同一組 基指針寄存器,也可以具有各自獨立或部分獨立的基指針寄存器。即所述基指針寄存器可 以僅由一組地址寄存器構成,用于操作數一、操作數二和執行結果的尋址;也可以由三組地 址寄存器構成,所述三組地址寄存器分別用于操作數一、操作數二和執行結果的尋址。此外 由不同操作數共用一組基指針寄存器、執行結果用另一組基指針寄存器,或者一個操作數 與執行結果共用一組基指針寄存器,另一個操作數用另一組基指針寄存器的情況也類似。所述基指針寄存器可以全部用來存儲基地址,也可以有單數個或復數個基指針寄 存器用于表示向所述基指針寄存器對應的存儲空間不可寫入。舉例而言,當對指令譯碼得到的對應于執行結果的基指針寄存器號對應的地址寄 存器是用于表示不可寫入的,那么所述執行結果不會被真正寫入所述零級存儲器中,即所 述執行結果被舍棄。本發明所述的第二存儲器中的一部分可以作為執行結果的暫存空間,對所述暫存 空間的內容不做寫回第一存儲器的操作。所述第二存儲器中的暫存空間中的內容只供運算 單元執行后續指令時作為操作數使用。在所述處理器體系結構中,還可以指定單數個或復數個基指針寄存器號,使所述 基指針寄存器對應第二存儲器中的存儲空間為暫存空間,對所述暫存空間的內容不做寫回第一存儲器的操作。所述第二存儲器中的暫存空間中的內容為中間結果只供運算單元執行 后續指令時作為操作數使用。所述處理器體系結構也可以具有用于暫存執行結果的計算/轉移/狀態寄存器。 所述計算/轉移/狀態寄存器中的內容只供執行后續指令時判斷轉移條件、讀寫處理器狀 態或進行后續指令運算時作為操作數使用。在傳統的處理器體系結構中,用于暫存執行結果的寄存器中的值是可以被寫回到 存儲器中的,用于暫存執行結果的存儲器中的內容也可以被寫回到更低存儲層次的存儲器 中。根據本發明技術方案,所述暫存空間或計算寄存器的內容可以不被寫回到第一存儲器, 因此也就不會被寫回到更低存儲層次,可以降低具體設計的復雜度,并提高處理器整體效率。本所述的處理器體系結構中還可以有基指針模式寄存器。所述基指針模式寄存 器也可以作為線程寄存器用于表示當前運行的線程的號碼。根據本發明技術方案,可以將 基指針寄存器分為復數組供不同的處理器線程使用,所述基指針模式寄存器中的不同值對 應基指針寄存器的不同組別,所述基指針模式寄存器中每個模式代表一個線程。此時所述 基指針模式寄存器中內容就是線程號碼(PID)。在不同線程對應的指令與數據都能被明確 區分的情況下(如發明“一種低缺失率、低缺失懲罰的緩存方法和裝置”,中國專利申請號 200910247204. 4),采用本發明技術方案可以實現線程的快速切換。本所述的復數組基指針寄存器的數量與所述基指針模式寄存器中能表示的模式 的個數、即模式寄存器位寬有關。舉例而言,兩者關系可以是所述復數組的數量等于以2 為底、以所述基指針模式寄存器位寬為冪的數。本所述的處理器體系結構中還可以有個數等于所述處理器體系結構能支持的最 大線程數的復數組處理器狀態寄存器組,用于在線程切換時保存處理器狀態,并提供與新 線程配套的處理器狀態。所述基指針模式寄存器中的不同值對應不同的處理器狀態寄存器組。在傳統處理器體系結構中,一旦需要切換線程,必須將原線程的狀態保存到存儲 器中或專用的狀態寄存器中,再切換成新的線程,并將事先儲存的狀態恢復后才能執行新 線程中的指令。本發明所述體系結構可以在切換線程的同時保存并更新狀態,以滿足快速 線程切換的要求。當所述處理器中有所述基指針模式寄存器時,可以具有用于裝載所述基指針模式 寄存器的指令。所述用于裝載所述基指針模式寄存器的指令可以是專門的基指針模式裝載 指令,也可以是與所述基地址裝載指令相同操作碼、但目標寄存器號不同的指令。根據本發明所述技術方案,使用基指針模式寄存器可以增加對應操作數或執行結 果的當前可用的基地址的數量,減少基地址的裝載次數及對應在所述零級存儲器中數據寫 回所述存儲層次中較低層次的次數,能提高效率。本發明所述處理器體系結構中的全部指令可以都不包含存儲數據的通用寄存器 號,可以包含基指針寄存器號和偏移地址,也可以只包含偏移地址。所述指令格式中可以不明示基指針寄存器號,此時基地址是默認的。例如指令中 的基指針寄存器號和偏移地址的位置可以一同被用于構成更長長度的偏移地址。但此時相 應的基地址寄存器依然存在并可以被基地址裝載/存儲指令裝載或讀出,此時在所述基地址寄存器中的基地址就是在讀取操作數或寫回執行結果時默認的基地址,不需要在運算指 令中明示。本發明所述體系結構的處理器可應用于上海芯豪微電子有限公司的發明 “基于單一指令集微處理器運算單元的可配置多核/眾核系統”(中國專利申請號 200810203778. 7)、“針對多核/眾核處理器程序分割的后編譯系統”(中國專利申請號 200810203777. 2)、“一種數據處理的方法與裝置”(中國專利申請號200910046117. 2)、“一 種數據處理的方法與裝置”(中國專利申請號200910208432. 0),構成前一個處理器的執行 結果直接作為輸入送給后一個處理器的串行連接多核結構,所述串行連接多核結構中的每 個處理器分別執行完整程序的一部分,所有處理器接力實現完整程序的功能。所述處理器 核均沒有寄存器堆,也沒有將操作數從存儲器裝載到寄存器堆或將執行結果從寄存器堆存 儲到存儲器的指令。當由基于傳統體系結構的處理器構成串行連接多核結構時,數據可以由裝載和存 儲指令通過兩個處理器核之間的共享存儲器進行傳遞,但前一個處理器核中通用寄存器堆 的值必須通過額外的存儲、裝載指令,或通過專門的數據通道傳遞到后一個處理器核的通 用寄存器堆中,使所述后一個處理器核能在與前一個處理器核相同狀態的前提下進行后續 的程序執行。當采用基于本發明所述處理器體系結構的處理器構成串行連接多核結構時,由于 處理器內部沒有傳統體系結構中的通用寄存器,每個處理器的所有執行結果都被直接傳遞 所述處理器與后一個處理器之間共享的零級存儲器中,因此能更高效率地實現所述串行連 接多核結構。本發明所述處理器體系結構的流水線段可以依次為(1)指令讀取段,從指令存儲器讀取指令;(2)指令譯碼段,指令譯碼,得到操作數地址信息;(3)數據讀取段,根據指令里包含的操作數地址信息從零級存儲器中讀出單數個 或復數個操作數;(4)執行段,運算器執行指令定義的運算;操作數可以是從零級存儲器中讀出的 單數個或復數個操作數,或者是從指令譯碼得到的單數個或復數個立即數;(5)數據寫回段,根據指令指定的地址信息將執行結果寫入零級存儲器。對于上述任意一種流水線,若零級存儲器不能在提供操作數的同時被寫入,則可 以在數據寫回段將執行結果寫入第二存儲器,當第一存儲器用來接收第二存儲器送來的數 據的輸入端口有空閑時,第二存儲器將存儲的數據依次寫回第一存儲器。根據本發明技術方案,可以直接用基指針寄存器號與偏移地址對第一存儲器進行 索引尋址,因此可以將上述的指令譯碼段和數據讀取段合并為譯碼取數段,使流水線更為 緊湊。本發明所述處理器體系結構的流水線段還可以依次為(1)指令讀取段,從指令存儲器讀取指令;(2)譯碼取數段,指令譯碼,并根據指令里包含的操作數地址信息從零級存儲器中 讀出單數個或復數個操作數;(3)執行段,運算器執行指令定義的運算;操作數可以是從零級存儲器中讀出的單數個或復數個操作數,或者是從指令譯碼得到的單數個或復數個立即數;(4)數據寫回段,根據指令指定的地址信息將執行結果寫入零級存儲器。上述兩種流水線的共性都在于沒有使用寄存器堆,都支持復數個流水線段同時對 同一個存儲器進行取操作數或寫回執行結果的訪問,可以是同時進行單數個或復數個數據 的讀取和寫回。在上述兩種流水線結構的基礎上增加流水線段依然屬于本發明技術方案的 一部分。有益效果本發明所述處理器體系結構及基于所述體系結構實現的處理器與現有的體系結 構及對應的傳統處理器相比,沒有對操作數的裝載、存儲指令。根據統計,在傳統處理器的 程序中,裝載和存儲指令占程序中指令總數30%左右,由于本發明所述處理器沒有這類指 令,因此能提高程序運行效率及程序代碼的密度。
雖然該發明可以以多種形式的修改和替換來擴展,說明書中也列出了一些具體的 實施圖例并進行詳細闡述。應當理解的是,發明者的出發點不是將該發明限于所闡述的特 定實施例,正相反,發明者的出發點在于保護所有基于由本權利聲明定義的精神或范圍內 進行的改進、等效轉換和修改。圖1是本發明所述體系結構的基本實施例。圖2是本發明所述體系結構的改進實施例。圖3是本發明所述處理器體系結構中第二存儲器的一種具體實現的實施例。圖4是本發明所述處理器體系結構中處理器運算單元與零級存儲器連接方式的8 種實施例。圖5是本發明所述處理器體系結構對應流水線劃分的兩種實施例。圖6是本發明所述處理器體系結構指令集中指令格式的實施例。圖7是基于本發明所述處理器體系結構的處理器構成的串行連接多核結構的實 施例。
具體實施例方式圖1是本發明所述體系結構的基本實施例。圖1(a)中的零級存儲器(100)向處 理器核(CPU core) (101)提供兩個操作數(111、112),并接受處理器核的執行結果(114), 零級存儲器(100)由處理器核產生的地址(11 尋址。圖2是本發明所述體系結構的改進實施例。圖2(a)和圖2(b)中的零級存儲器 (100)向處理器核(101)提供兩個操作數(111、112),并接受處理器核的執行結果(114), 零級存儲器(100)由處理器核產生的地址(11 尋址。圖2(a)顯示了零級存儲器重填 (refill)的途徑,其中從更低級存儲器來的重填總線(116)將重填數據從低級存儲器傳輸 到零級存儲器(100),選擇器(115)選擇將重填總線(116)或處理器核給出總線(114)上的 數據送給零級存儲器。圖2(b)與圖2(a)類似,差別在零級存儲器(1001)有兩個寫入,重填 總線(116)與結果總線(114)各自接到自己的寫口。后續圖例為便于說明起見,不再列出 重填路徑。大規模三端口存儲器的成本較高,圖2(c)中零級存儲器由一個只有一個讀口和一個寫口,或者只有一個讀/寫口的第一存儲器(100 與一個后置的第二存儲器(102)構 成,協作完成如圖1、圖2(a)和圖2(b)中三端口存儲器的同樣功能。此例中處理器核(101) 提供地址(11 供第一存儲器(100 及第二存儲器(10 尋址。處理器核(101)的執行 結果通過總線(117)存入第二存儲器(102)。第一存儲器(1002)通過總線(111)提供一個 操作數給處理器核(101),第二存儲器(102)通過總線(112)提供另一個操作數(即以前運 算的結果)給處理器核(101)。當第一存儲器(1002)的寫口有空閑時,暫存在第二存儲器 (102)中的結果也可通過總線(112)寫回至第一存儲器(1002)。請參閱圖3,本實施例為本發明所述處理器體系結構中第二存儲器的一種具體實 現的實施例。在本實施例中,地址通過寫地址總線(1401)寫入指定項。兩個取地址總線(1410、 1402)可同時輸入兩個地址與地址存儲器所有項進行比較,產生的比較結果(140 控制數 據存儲器的相應項將對應數據取出到取數據總線(1404)和取數據總線(1411)上。數據通 過寫數據總線(1405)寫入指定項。指向當前寫入項的寫指示器(1406)為FIFO結構,以實 現多項的連續寫入。數據通過讀數據總線(1407)讀出,對應的地址通過讀地址總線(1409) 讀出。指向當前讀出項的讀指示器(1408)亦為FIFO結構,以實現多項的連續讀出。讀寫 機制保證所有項的讀出值一定為寫入的最新值。根據本發明技術方案,對第二存儲器進行寫融合匹配需要對每個地址額外增加一 個比較器,所述比較器在本實施例中被省略。圖4是本發明所述處理器體系結構中處理器運算單元與零級存儲器連接方式的8 種實施例。在圖4(a)中,與處理器運算單元(30 連接的零級存儲器由第一存儲器(301)和 第二存儲器(303)組成。運算單元(302)需要兩個操作數,并產生一個執行結果。在本實 施例中,第一存儲器(301)支持同時提供或接收兩個數據。第一存儲器(301)可以是四端 口的存儲器,即具有兩組輸出數據總線和兩組輸入數據總線,且支持同時輸出兩組數據、或 同時輸入兩組數據、或同時輸入一組數據并輸出一組數據;第一存儲器(301)也可以是兩 端口的存儲器,即具有兩組輸入/輸出數據總線,支持同時輸出兩組數據、或同時輸入兩組 數據、或同時輸入一組數據并輸出一組數據。第二存儲器(30 支持同時提供三個輸出數 據(316、317、318)并接收一個輸入數據(315),是四端口的存儲器。第一存儲器(301)和第 二存儲器(30 所需數據尋址地址均由運算單元(30 產生。為便于描述,下面將以第一 存儲器(301)是四端口的存儲器為例進行說明,當第一存儲器(301)是兩端口的存儲器時, 情況類似。運算單元(302)所需的一個操作數(313)的來源可以是第一存儲器(301)的輸出 數據(308)或第二存儲器(303)的輸出數據(316),經多路選擇器(306)選擇得到;另一個 操作數(314)的來源可以是第一存儲器(301)的輸出數據(310)或第二存儲器(303)的輸 出數據(317),經多路選擇器(307)選擇得到。運算單元(302)的執行結果(315)作為輸入 數據送到第二存儲器(303)。第一存儲器(301)的一個輸入數據(309)的來源可以是從外部存儲器讀取來的數 據(31 或從第二存儲器(30 來的輸出數據(318),經多路選擇器(304)選擇得到;另一 個輸入數據(311)的來源可以是從外部存儲器讀取來的數據(31 或從第二存儲器(303)來的輸出數據(318),經多路選擇器(30 選擇得到。第一存儲器(301)的兩個輸出數據 (308,310)分別送往與運算單元(30 連接的兩個多路選擇器(306、307)。第二存儲器(303)的輸入數據(31 來自運算單元的輸出。第二存儲器(303) 的一個輸出數據(318)送往與第一存儲器(301)連接的多路選擇器(304)和多路選擇器 (305);另外兩個輸出數據(316、317)分別送往與運算單元(30 連接的兩個多路選擇器 (306,307)。對所述第二存儲器的尋址是通過地址信息的匹配來實現的,并不是通過地址進 行索引(index)尋址。在本實施例中,運算單元最初只能從第一存儲器(301)獲得操作數,并將執行結 果寫入第二存儲器(303)。由于之前運算的結果通常會被用做后續運算的操作數,因此,之 后的部分運算會從第二存儲器(30 獲得部分或全部操作數,并將執行結果寫入第二存儲 器(30 。當運算單元從第二存儲器(30 取操作數時,第一存儲器(301)可以進行從外部 存儲器獲取新數據的操作,或將第二存儲器(30 送來的數據寫入第一存儲器(301)。如此 即可根據本發明技術方案,實現存儲器不經過寄存器堆而直接向運算單元提供操作數并寫 回執行結果。圖4(b)與圖4(a)在結構上基本類似,差別在于第二存儲器(3031)支持同時提供 兩個輸出數據(317、3181)并接收一個輸入數據(315),是三端口的存儲器,且外部存儲器 的輸入數據(3121)不與第二存儲器(3031)的輸出數據(3181)選擇,直接送到第一存儲器 (301)的輸入端口。此外第二存儲器(3031)的輸出數據(3181)直接送到第一存儲器(301) 的另一個輸入端口及與運算單元(30 連接的多路選擇器(306)。在本實施例中,運算單元最初只能從第一存儲器(301)獲得操作數,并將執行結 果寫入第二存儲器(3031)。之后的部分運算會從第二存儲器(30 獲得部分或全部操作 數,并將執行結果寫入第二存儲器(303)。當運算單元(30 選擇第二存儲器(3031)的輸 出數據(3181)為操作數(313)時,輸出數據(3181)同時被寫回第一存儲器(301);當運算 單元(30 選擇第二存儲器(3031)的輸出數據(317)為操作數(314)時,外部存儲器的輸 入數據(3121)可以被同時寫入第一存儲器(301)。如此即可根據本發明技術方案,實現存 儲器不經過寄存器堆而直接向運算單元提供操作數并寫回執行結果。圖4(c)與圖4(a)在結構上基本類似,差別在于第一存儲器(3011)支持同時提供 兩個數據,或同時提供一個數據并接收一個數據,且外部存儲器的輸入數據(312 和第二 存儲器(30 的輸出數據(318 均只送到與第一存儲器(3011)連接的多路選擇器(305), 經選擇后作為第一存儲器(301)的輸入數據(311)。在本實施例中,從外部存儲器或第二存儲器(30 寫回第一存儲器(3011)的途徑 少了,但第一存儲器(3011)的結構更為簡單,且能夠實現存儲器不經過寄存器堆而直接向 運算單元提供操作數并寫回執行結果。圖4(d)與圖4(b)在結構上基本類似,差別在于第一存儲器(3012)在一個時刻只 支持提供一個數據,或接收一個數據,且接收的輸入數據來源是從外部存儲器來的輸入數 據(3122),或第二存儲器(3031)的輸出數據(3183),經多路選擇器(30 選擇得到。此外, 第二存儲器(3031)的輸出數據(3171)被分別送往與運算單元(30 連接的兩個多路選擇 器(306、307)作為可能的操作數。由于處理器支持的指令中有些是單操作數指令,還有一些指令中只有一個操作數
13來源于存儲器,另一個來源于指令解碼得到的立即數,因此并不是每條指令都需要從存儲 器獲取兩個操作數。在本實施例中,運算單元(302)最初可以執行上述只需要從存儲器獲 取一個操作數的指令,即從第一存儲器(3012)獲取一個操作數,并將執行結果寫入第二存 儲器(3031);或通過運算單元(30 將操作數從第一存儲器(301 移動(move)到第二 存儲器(3031),之后的部分運算會從第二存儲器(3031)獲得部分或全部操作數,并將執行 結果寫入第二存儲器(3031)。第一存儲器(301 不支持同時讀寫數據,因此當運算單元 (302)不需要從第一存儲器(3012)獲取操作數時,第一存儲器(3012)可以寫入從外部存儲 器來的輸入數據(312 或從第二存儲器(3031)來的輸出數據(318 。如此即能實現存儲 器不經過寄存器堆而直接向運算單元提供操作數并寫回執行結果。圖4(e)與圖4(d)在結構上基本類似,差別在于第二存儲器(3032)只支持同時 提供一個輸出數據(3184)并接收一個輸入數據(315),是兩端口的存儲器。此外,第二存 儲器(3032)的輸出數據(3184)被送往運算單元(302)作為一個操作數,并被送往與運算 單元(30 連接的多路選擇器(307)作為可能的另一個操作數,以及被送往與第一存儲器 (3012)連接的多路選擇器(305)作為可能的輸入數據。在本實施例中,第二存儲器(303 無法同時向運算單元(30 提供兩個不同的操 作數,因此一旦執行到需要從存儲器獲取兩個不同的操作數的指令時,必須由第一存儲器 (3012)和第二存儲器(3032) —同提供操作數。這樣減少了數據從第二存儲器(3032)寫回 第一存儲器(3012)的機會,但簡化了設計的復雜度,本實施例在單操作數指令出現頻率較 高的情況下是有優勢的。圖4(f)與圖4(e)在結構上基本類似,差別在于增加了一個較小的在功能上類似 旁路緩沖(look aside buffer)的第三存儲器(320)。第三存儲器也具有地址匹配功能,根 據本發明技術方案,在從第一存儲器(301 讀取數據之前會先在第三存儲器(320)中進行 尋址匹配,只有當第三存儲器(320)中沒有所需數據,才會從第一存儲器(301 讀取。第 三存儲器(320)的尋址地址同樣由運算單元(30 產生,接收來自第一存儲器(301 的輸 出數據(310)作為自身的輸入數據,并將輸出數據(3081)送往與運算單元(302)連接的多 路選擇器(306)作為可能的操作數。當運算單元(302)需要從第一存儲器(3012)獲得兩 個操作數時,根據本發明技術方案,將其中一個操作數從第一存儲器(301 讀出暫存到第 三存儲器(320),下一周期由第一存儲器(301 和第三存儲器(320) —同提供所需的兩個 操作數。這種情況類似于處理器流水線等待一個周期。此外,第二存儲器(303 的輸出數 據(318 被分別送往與運算單元(30 連接的多路選擇器(306、307)作為可能的操作數, 并被送往與第一存儲器(3012)連接的多路選擇器(305)作為可能的輸入數據。本實施例是對圖4(e)實施例的一種改進。第三存儲器(320)可以暫存第一存儲 器(3012)的輸出數據(310)。之后,當指令需要從第一存儲器(3012)獲取同樣操作數時, 可以從第三存儲器(320)輸出該操作數,使第一存儲器(301 能有空閑寫入來自第二存儲 器(303 的輸出數據(3185),從而適應更廣泛的程序。圖4(g)與圖4(d)在結構上基本類似,差別在于第一存儲器(3012)的輸出數據 (3101)除了被送往與運算單元(30 連接的多路選擇器(307)作為可能的操作數外,還與 從運算單元輸出的執行結果(315 —同被送往與第二存儲器(3031)連接的多路選擇器 (3153),經選擇后得到第二存儲器(3031)的輸入數據(3151)。
本實施例是對圖4(d)和圖4(f)實施例的一種改進。在本實施例中,第一存儲器 (3012)中的數據能夠不經過運算單元(30 直接旁路寫入第二存儲器(3031),避免了對運 算單元(302)的占用,因此能更好地提高運算單元(302)的利用率。此外本實施例不需要 用到第三存儲器,本質上是將第三存儲器合并到第二存儲器(3031)中,簡化了設計并節省 了面積。圖4(h)與圖4(a)在結構上基本類似,差別在于第一存儲器由兩個大小不同的存 儲器(321)和存儲器(32 構成,這兩個存儲器都只支持同時提供一個數據或接收一個數 據。存儲器(321)的輸出數據(308 被送往與運算單元(30 連接的多路選擇器(306) 作為可能的操作數;存儲器(322)的輸出數據(310)被送往與運算單元(30 連接的另一 個多路選擇器(307)作為可能的另一個操作數。同時存儲器(321)的輸入數據來源除了從 外部存儲器來的輸入數據(31 和第二存儲器(303)的輸出數據(318)外,還可以是存儲 器(32 的輸出數據(3101),三者經多路選擇器(3041)選擇后得到實際寫入存儲器(321) 的輸入數據(3091)。在本實施例中,存儲器(321)和存儲器(322)結構都比較簡單,易于實現。存儲器 (322)儲存了圖4(a)實施例中第一存儲器(301)中的全部數據,存儲器(321)通過從存儲 器(32 寫入存儲器(321)的方式儲存了存儲器(322)中當前使用率較高的一部分數據, 這樣保證了運算單元(302)可以從不同的存儲器中獲取任意需要的操作數。在本實施例 中,所述當前使用率較高的一部分數據是當前基指針寄存器指向的數據段。此時,若要將數 據寫入第一存儲器,則必須對存儲器(321)和存儲器(32 各自對應地址寫入同樣的數據, 若要讀出數據,則可以根據需要從兩個存儲器中同時讀出相同或不同的數據。圖5是本發明所述處理器體系結構對應流水線劃分的兩種實施例。圖5(a)中,流水線為5段流水線,分別是指令讀取(I) (501)、指令譯碼(D) (502)、 數據讀取(R) (503)、執行(E) (504)和數據寫回(W) (505)。在本實施例中,零級存儲器由 第一存儲器和第二存儲器構成,其中第一存儲器采用與現有緩存類似的標志(tag)匹配結 構。在指令讀取段(501),進行指令標志匹配(507),并同時讀取指令,再根據指令標 志的匹配結果得到正確的指令。在指令譯碼段(502),在第二存儲器中對需要讀取的數據的地址信息進行讀匹配 (512),同時將所述地址信息中的基地址和偏移地址相加以獲得完整的數據地址(513)。在數據讀取段(503),如果指令譯碼段(502)的地址信息匹配成功,則可以直接從 第二存儲器中讀取到所需的數據(514);如果匹配不成功,則用指令譯碼段(502)產生的完 整數據地址進行數據讀標志匹配(515),并對第一存儲器進行索引尋址以讀取所需的數據 (516),再根據數據標志的匹配結果得到正確的數據。在本流水線段中,從第二存儲器中讀 取數據的操作(514)與數據讀標志匹配(515)、從第一存儲器中讀取數據的操作(516)也可 以同時進行,在增加一些功耗的情況下提高一些性能。在執行段(504),除運算器執行指令定義的運算(517)外,第二存儲器對執行結果 將被寫入的地址進行寫融合匹配(519),同時將執行結果地址信息中的基地址和偏移地址 相加以獲得完整的數據地址(518)。在寫回段(505),執行結果被寫入第二存儲器(520)。此后,當第一存儲器用來接收第二存儲器送來的數據的輸入端口有空閑時,第二存儲器將存儲的數據依次經數據標志 匹配后寫回第一存儲器。根據本發明技術方案,也可以對所述流水線進行部分改進。可以在指令讀取段 (501)之前進行指令標志匹配、在數據讀取段(50 前進行數據讀標志匹配,從而在指令讀 取段(501)和數據讀取段(50 有更充分的時間用于訪問第一存儲器。此外,也可以在指 令中不含有基指針寄存器號、第一存儲器的容量足夠容納所有數據的情況下不進行數據標 志的匹配。圖5(b)是將本發明技術方案應用于發明“一種低缺失率、低缺失懲罰的緩存方法 和裝置”(中國專利申請號200910M7204. 4)的流水線實施例。本實施例的流水線與圖5 (a) 中的流水線類似,也分為指令讀取段(501)、指令譯碼段(521)、數據讀取段(503)、執行段 (522)和數據寫回段(505)。在指令讀取段(501),從指令存儲器讀取指令。在指令譯碼段(521),在第二存儲器中對需要讀取的數據的地址信息進行讀匹配, 同時用包含基地址和偏移地址的地址信息直接在第一存儲器中進行讀數據的尋址(523)。在數據讀取段(503),如果指令譯碼段(521)的地址信息匹配成功,則可以直接從 第二存儲器中讀取到所需的數據;如果匹配不成功,則從第一存儲器讀取所需的數據。在執行段(52 ,除運算器執行指令定義的運算外,第二存儲器對執行結果將被寫 入的地址進行寫融合匹配,同時用包含基地址和偏移地址的地址信息直接在第一存儲器中 進行寫數據的尋址(5M)。在寫回段(505),執行結果被寫入第二存儲器。此后,當第一存儲器用來接收第二 存儲器送來的數據的輸入端口有空閑時,第二存儲器將存儲的數據依次根據基地址和偏移 地址尋址寫回第一存儲器。本實施例與圖5(a)實施例的差別在于由于采用了不同于傳統緩存結構的第一存 儲器,在指令譯碼段(521)和數據讀取段(50 不需要計算得到完整的地址,而是可以直接 在第一存儲器中用包含基地址和偏移地址的地址信息進行尋址(523、5M),使設計更為簡
單、高效。圖6是本發明所述處理器體系結構指令集中指令格式的實施例。為了便于說明, 本實施例僅列舉了兩種指令格式,省略了其他幾種可能格式。圖6(a)是三操作數指令的格式。操作數一和操作數二為運算單元執行的輸入,操 作數三為運算單元執行的結果。所述三操作數指令由指令碼(601)、第一個基指針寄存器號 (602)、第一個偏移地址(603)、第二個基指針寄存器號(604)、第二個偏移地址(605)、第三 個基指針寄存器號(606)和第三個偏移地址(607)構成,其中基指針寄存器號(602)中對 應的基地址加上偏移地址(60 可以得到操作數一的地址,基指針寄存器號(604)中對應 的基地址加上偏移地址(60 可以得到操作數二的地址,基指針寄存器號(606)中對應的 基地址加上偏移地址(607)可以得到執行結果的地址。對于兩操作數指令,也可以具有類 似的、但少一組基指針寄存器號和偏移地址的指令格式。圖6(b)是立即數指令或條件轉移指令的格式。在本實施例中,立即數指令的指 令格式與三操作數指令格式的差別在于前者只需要從存儲器獲取一個操作數并寫入執行 結果,另一個操作數來源于指令中的立即數,因此立即數指令由立即數(608)、第二個基指針寄存器號(604)、第二個偏移地址(605)、第三個基指針寄存器號(606)和第三個偏移地 址(607)構成,操作數和執行結果地址的產生與圖6(a)實施例相同。條件轉移指令只需 要從存儲器獲取兩個操作數,而不必有寫回操作,因此指令格式也由立即數(即轉移偏移 量)(608)、第二個基指針寄存器號(604)、第二個偏移地址(605)、第三個基指針寄存器號 (606)和第三個偏移地址(607)構成,操作數和執行結果地址的產生與圖6(a)實施例相同。 對于無條件轉移指令,可以有專門的指令格式,也可以將其視為條件轉移指令的特例,即轉 移條件始終成立的條件轉移指令,在具體的指令格式上,可以對第二和第三個基指針寄存 器號給予同樣的值,并對第二和第三個偏移地址給予同樣的值。對于基地址裝載指令,可以用一組基指針寄存器號及偏移地址對存儲器尋址得到 的數據寫入另一個基指針寄存器號對應的基指針寄存器中。根據本發明所述技術方案,還 可以有同時裝載兩組基地址的基地址裝載指令,即在指令格式中包含四個基指針寄存器號 和兩個偏移地址,同時用兩組基指針寄存器號及偏移地址對存儲器尋址得到兩組數據寫入 另外兩個基指針寄存器號對應的基指針寄存器中,所述另外兩個基指針寄存器號在指令中 的位置可以是圖6(b)指令格式中的立即數(608)的位置。此外,所述指令格式中可以不明示基指針寄存器號,此時基地址是默認的。例如圖 6(b)指令格式中第三個基指針寄存器號(606)和第三個偏移地址(607)的位置可以全部用 于構成更長長度的偏移地址。但此時基地址寄存器依然是存在并可以被基地址裝載/存儲 指令裝載或讀出,只是沒有在指令中被明示。需要注意的是,本發明所述處理器體系結構指令集中的指令格式并不僅限于本實 施例中列舉的指令格式,其他的指令格式也與此相似。圖7是基于本發明所述處理器體系結構的處理器構成的串行連接多核結構的實 施例。處理器核(1101)由本地指令存儲器(1103)、運算單元(1105)、數據地址產生模塊 (1107)、程序計數器(1108)、輸出緩沖(1110)以及零級存儲器組成。所述零級存儲器由第 一存儲器(110 和第二存儲器(1109)組成。第一存儲器(1104)是接在處理器核(1101) 后一級的處理器核對應的零級存儲器的一部分。本地指令存儲器(110 存儲有處理器核(1101)執行所需的指令。處理器核 (1101)中運算單元(1105)所需的操作數可以來自第一存儲器(1102)、第二存儲器(1109)、 第一存儲器(1104),或來自指令中的立即數;執行結果寫回第二存儲器(1109)。在本實施例中,處理器核對應的第一存儲器(110 中的數據、第二存儲器(1109) 中的數據(1115)、后一個處理器核對應的第一存儲器(1104)中的數據和外部的共享存 儲器中的數據(1111)通過多路選擇器(1116、1117)選擇后,作為操作數輸入到運算單元 (1105)中。第二存儲器(1109)接收的數據有三個來源從運算單元(110 來的數據、從第 一存儲器(110 來的數據、以及從外部的共享存儲器來的數據(1111)。所述從運算單 元(110 來的數據、從第一存儲器(110 來的數據、以及從外部的共享存儲器來的數據 (1111)通過多路選擇器(1112)選擇后輸入到第二存儲器(1109)。在本實施例中,第一存儲器只接收從前一處理器核中的第二存儲器來的數據輸 入。如第一存儲器(1104)接收來自處理器核(1101)中第二存儲器(1109)來的數據輸入 (1118)。
第一存儲器(110 接收的地址也有三個來源從前級處理器核第二存儲器中地 址存儲部分來的用于存儲數據的地址、從前級處理器核數據地址產生模塊來的用于讀取數 據的地址、從本級處理器核數據地址產生模塊(1107)來的用于讀取數據的地址。上述地址 通過多路選擇器選擇后,輸入到第一存儲器(110 中的地址接收模塊。相應地,第一存儲器(1104)接收的地址有三個來源從前級處理器核第二存儲 器(1109)中地址存儲部分來的用于存儲數據的地址、從前級處理器核數據地址產生模塊 (1107)來的用于讀取數據的地址、從本級處理器核數據地址產生模塊來的用于讀取數據的 地址(111 。上述地址通過多路選擇器(1114)選擇后,輸入到第一存儲器(1104)中的地 址接收模塊。根據本發明技術方案,在本實施例中,處理器核(1101)的前一級處理器核的執行 結果會被寫入第一存儲器(110 ;第一存儲器(110 能夠直接向處理器核(1101)的運 算單元(110 提供操作數,或直接將數據旁路到第二存儲器(1109);運算單元(1105)的 執行結果可以被直接寫入第二存儲器(1109)。第二存儲器(1109)能根據地址產生模塊 (1107)產生的地址輸出數據(1115)作為操作數供運算單元(1105)使用。本實施例實現的 是多個處理器核構成的串行連接多核結構,因此第二存儲器(1109)并不需要將數據寫回 處理器核(1101)對應的第一存儲器(1102),而是將數據寫入后一個處理器核對應的第一 存儲器(1104),從而實現數據的傳遞。
權利要求
1.一種處理器體系結構,其特征在于運算單元直接從存儲器取得操作數、并將執行結 果寫回存儲器,此外還包含下列部分特征或全部特征(1)沒有寄存器堆(RegisterFile);(2)沒有將操作數從存儲器裝載(load)到寄存器堆的指令;(3)沒有將執行結果從寄存器堆存儲(store)到存儲器中的指令;(4)對存儲器的尋址方式包括立即數直接尋址、基地址加偏移量方式尋址。
2.根據權利要求1所述的處理器體系結構,其特征在于支持復數個流水線段同時對邏 輯意義上的同一個存儲器進行取操作數或寫回執行結果的訪問,可以是同時進行單數個或 復數個數據的讀取和寫回。
3.根據權利要求1所述的處理器體系結構,其特征在于基于所述處理器體系結構構成 的處理器包含零級存儲器;所述零級存儲器具有同時支持讀取至少兩個數據并寫回至少一 個數據的功能,可以由一個單獨的多端口存儲器構成,也可以由復數個單端口或多端口存 儲器構成。
4.根據權利要求3所述的處理器體系結構,其特征在于當所述零級存儲器由復數個單 端口或多端口存儲器構成時,所述多端口存儲器至少由一個具有單數個端口或復數個端口 的第一存儲器和一個具有復數個端口的第二存儲器構成。
5.根據權利要求3所述的處理器體系結構,其特征在于當所述零級存儲器由復數個單 端口或多端口存儲器構成時,所述多端口存儲器還可以包括一個具有單數個端口或復數個 端口的第三存儲器,用于暫存第一存儲器的輸出數據,以供運算單元獲取操作數。
6.根據權利要求4所述的處理器體系結構,其特征在于所述第一存儲器或第二存儲器 可以由復數個大小相同或不同的存儲器構成;當所述第一存儲器由復數個不同大小的存儲 器構成時,較小的存儲器可以存有較大的存儲器中的一部分數據。
7.根據權利要求4所述的處理器體系結構,其特征在于所述第二存儲器具有以下特征(1)用于存儲操作數及所述操作數對應的地址信息;所述地址信息可以是地址值,也 可以是基地址值及偏移量;還可以是基指針寄存器號及偏移量;(2)所述用于存儲操作數的操作數存儲單元與用于存儲操作數地址的地址信息存儲單 元--對應;(3)具有讀、寫指針,可以按特定算法寫入或讀出操作數;(4)可以將單數個或復數個輸入地址信息與存儲的地址信息進行匹配,并輸出匹配成 功的單數個或復數個對應操作數;所述輸入地址信息可以是地址值,也可以是基地址值及 偏移量,還可以是基指針寄存器號及偏移量。
8.根據權利要求4所述的處理器體系結構,其特征在于所述第二存儲器還可以具有寫 融合(write merge)功能,即被寫入的數據對應的地址信息在所述第二存儲器中已存在,則 可以將所述寫入的數據替換部分或全部已存在的數據。
9.根據權利要求1所述的處理器體系結構,其特征在于基于所述處理器體系結構構成 的處理器還可以包含基指針(BP,Base Pointer)寄存器,用于存儲對零級存儲器進行的以 基地址加偏移量方式尋址時的基地址。
10.根據權利要求3、9所述的處理器體系結構,其特征在于每個有效的基指針寄存器存儲與所述零級存儲器中的一部分數據存儲單元對應的基地址;若所述第二存儲器存儲的 地址信息是基指針寄存器號及偏移量、且所述有效的基指針寄存器的內容被改寫后,第二 存儲器中對應于基指針寄存器原基地址的數據存儲單元中的數據應被無效化;若所述數據 存儲單元中的數據應該但還沒有寫回第一存儲器時,則需要先將被更改過的數據寫回第一 存儲器后再被無效化。
11.根據權利要求9所述的處理器體系結構,其特征在于所述處理器體系結構的指令 中不同的操作數或執行結果可以共用同一組基指針寄存器,也可以具有各自獨立或部分獨 立的基指針寄存器;所述基指針寄存器可以全部用來存儲基地址,也可以有單數個或復數 個基指針寄存器用于表示向所述基指針寄存器對應的存儲空間不可寫入。
12.根據權利要求3、9所述的處理器體系結構,其特征在于所述第二存儲器中的一部 分可以作為執行結果的暫存空間,對所述暫存空間的內容不做寫回第一存儲器的操作;在 所述處理器體系結構中,還可以指定單數個或復數個基指針寄存器號,使所述基指針寄存 器對應第二存儲器中的存儲空間為暫存空間,對所述暫存空間的內容不做寫回第一存儲器 的操作;所述第二存儲器中的暫存空間的內容只供運算單元執行后續指令時作為操作數使 用;所述處理器體系結構也可以具有用于暫存執行結果的計算/轉移/狀態寄存器;所述 計算/轉移/狀態寄存器中的內容只供執行后續指令時判斷轉移條件、讀寫處理器狀態或 進行后續指令運算時作為操作數使用。
13.根據權利要求3所述的處理器體系結構,其特征在于還可以有基指針模式寄存器; 當基指針寄存器被分為復數組供不同的處理器線程使用時,所述基指針模式寄存器中的不 同值對應基指針寄存器的不同組別;所述基指針模式寄存器中每個模式代表一個線程。
14.根據權利要求13所述的處理器體系結構,其特征在于還可以有個數等于所述 處理器體系結構能支持的最大線程數的復數組處理器狀態寄存器組(processor status registers),用于在線程切換時保存處理器狀態,并提供與新線程配套的處理器狀態;所述 基指針模式寄存器中的不同值對應不同的處理器狀態寄存器組。
15.根據權利要求3、9所述的處理器體系結構,其特征在于所述處理器體系結構中的 全部指令可以都不包含存儲數據的通用寄存器號,可以包含基指針寄存器號和偏移地址, 也可以只包含偏移地址。
16.根據權利要求1所述的處理器體系結構,其特征在于基于所述體系結構的處理器 可以構成前一個處理器核的執行結果直接作為輸入送給后一個處理器核的串行連接多核 結構,所述串行連接多核結構中的每個處理器核分別執行完整程序的一部分,所有處理器 接力實現完整程序的功能;所述處理器核均沒有寄存器堆,也沒有將操作數從存儲器裝載 到寄存器堆或將執行結果從寄存器堆存儲到存儲器的指令。
17.根據權利要求1所述的處理器體系結構,其特征在于流水線段可以依次為(1)指令讀取段,從指令存儲器讀取指令;(2)指令譯碼段,指令譯碼,得到操作數地址信息;(3)數據讀取段,根據指令里包含的操作數地址信息從零級存儲器中讀出單數個或復 數個操作數;(4)執行段,運算器執行指令定義的運算;操作數可以是從零級存儲器中讀出的單數 個或復數個操作數,或者是從指令譯碼得到的單數個或復數個立即數;(5)數據寫回段,根據指令指定的地址信息將執行結果寫入零級存儲器。
18.根據權利要求1所述的處理器體系結構,其特征在于流水線段還可以依次為(1)指令讀取段,從指令存儲器讀取指令;(2)譯碼取數段,指令譯碼,并根據指令里包含的操作數地址信息從零級存儲器中讀出 單數個或復數個操作數;(3)執行段,運算器執行指令定義的運算;操作數可以是從零級存儲器中讀出的單數 個或復數個操作數,或者是從指令譯碼得到的單數個或復數個立即數;(4)數據寫回段,根據指令指定的地址信息將執行結果寫入零級存儲器。
全文摘要
一種可以從存儲器直接向運算單元提供操作數,并將運算單元執行結果寫回存儲器的處理器體系結構,沒有對操作數的裝載(load)、存儲(store)指令,能提高程序運行效率及程序代碼的密度。
文檔編號G06F9/34GK102141905SQ201010104030
公開日2011年8月3日 申請日期2010年1月29日 優先權日2010年1月29日
發明者任浩琪, 林正浩 申請人:上海芯豪微電子有限公司