將空間陣列納入一個或多個可編程處理器核的制作方法
【專利說明】將空間陣列納入一個或多個可編程處理器核
[0001]背景
[0002]可編程處理器核可用于執行指令組或指令塊作為原子單元。這種指令被映射到核內的功能單元,并且當創建其中同一進程被不斷重復的執行循環時通常可以實現顯著效率。新數據可以作為流被持續接收和處理,而無須取得新指令。盡管以此方式改進了效率,用于例如通過旁路網絡承載指令的典型通信路徑仍然是相當低效的。
[0003]提供本背景來介紹以下概述和詳細描述的簡要上下文。本背景不旨在幫助確定所要求保護的主題的范圍,也不旨在被看作將所要求保護的主題限于解決以上所提出的問題或缺點中的任一個或全部的實現。
[0004]概述
[0005]一個或多個處理器核內布置的功能單元使用共享旁路網絡和交換網絡兩者在通信上耦合。在交換網絡允許其中功能單元被配置為空間陣列的專用處理的同時,共享旁路網絡允許功能單元能被常規地操作用于通用處理。在空間陣列配置中,一個功能單元所產生的操作數可以僅被發送至功能單元中依賴指令(dependent instruct1ns)已經先驗地被映射至的一個子集。功能單元可以在運行時被動態地重配置以便在于通用配置中運行以及作為空間陣列運行之間切換。用于控制各個運行配置之間的切換的信息可以在功能單元所接收的指令中被編碼、在與指令塊相關聯的控制狀態中提供、在程序二進制文件中嵌入的其他控制狀態中提供、或者被硬件動態地推斷。
[0006]在各種說明性示例中,一個或多個可編程處理器核被配置成按塊來接收和處理指令。核內的功能單元可以使用傳統旁路網絡被耦合用于功能單元間的通信,并且也可以與單獨控制的輕量交換網絡耦合,所述輕量交換網絡提供一組專用數據路徑以便在功能單元被配置為空間陣列時促進通信。網格是例如良好地適用于該交換網絡的常用拓撲結構。交換網絡的每個節點一般包括復用器和配置存儲器,它們被用于實現專用數據路徑上的高效指令通信。指令塊可以包括嵌入的控制信息(用于切換功能單元的操作配置),并且還可以包括靜態執行調度信息,所述靜態執行調度信息用于在功能單元被配置為空間陣列時將計算映射至功能單元。
[0007]專用編譯器(即,標準編譯器內的專用映射功能)被安排以識別在運行時可能在空間陣列上被最優執行的代碼,并且可以自動將控制和調度信息嵌入作為編譯器輸出而產生的指令集。或者,專用編譯器可被安排以向代碼開發者提出關于哪個配置(即,通用處理或空間陣列)更可能以最高效率(或其他品質因數)執行特定計算的建議。
[0008]當指令塊在運行時被解碼時,功能單元通過根據已嵌入的控制指令在通用處理和空間陣列配置之間切換,而被動態地重新配置。當被配置為空間陣列時,靜態執行調度被解碼以將計算映射至陣列并且設立通過交換網絡的路由路徑。然后,空間陣列可以高效地流經自連至交換網絡的數據隊列中讀出的數據集。
[0009]當前將空間陣列納入一個或多個可編程處理器核可以被用作新處理器微體系結構和ISA(指令集體系結構)的基礎。在一些實現方式中,跨多個可編程處理器核的功能單元可被共同配置,以便提供比單個核中的功能單元數量所允許的空間陣列更大的單個空間陣列。在一些應用中,通過擴展交換網絡以便使用位于沿網絡的各個點處的中繼器來覆蓋更多核中的功能單元,可以創建更大的空間陣列。靜態執行調度被配置成在映射專用數據路徑時考慮這一較大空間陣列中的任何傳播延遲。
[0010]有利的是,當前將空間陣列納入一個或多個可編程處理器核允許空間陣列中的并行處理所提供的高效率,而沒有用重復的功能單元實現一個單獨空間陣列的復雜度和成本。通過將交換網絡覆蓋于常規旁路網絡上,通用核的功能單元可以在正常操作和空間陣列之間在傳輸過程中被有效地重新調整(r印urpose),以便高效且有效地滿足給定進程/計算的要求。通過將控制信息嵌入于指令塊中(例如,通過重新調整原本未使用的字段/位位置),到空間陣列的指令接口與功能單元在通用處理配置中正常操作時使用的ISA完全一致。
[0011]當前將空間陣列納入一個或多個可編程處理器核的應用說明性地包括小形因子計算機、照相機、移動電話、智能電話、可穿戴計算機等等,其中采用了能很好地利用空間陣列所提供的處理并行化的圖像處理及類似類型的處理。
[0012]應當理解,上述主題可被實現為計算機控制的裝置、計算機進程、計算系統或諸如一個或多個計算機可讀存儲介質等制品。通過閱讀下面的詳細描述并審閱相關聯的附圖,這些及各種其他特征將變得顯而易見。
[0013]提供本概述以便以簡化的形式介紹以下在詳細描述中進一步描述的一些概念。該概述不旨在標識所要求保護的主題的關鍵特征或基本特征,也不旨在被用來幫助確定所要求保護的主題的范圍。而且,所要求保護的主題不限于解決該公開的任一部分中所注的任何或全部缺點的實現方式。
[0014]附圖簡述
[0015]圖1示出可以實現本發明將空間陣列納入一個或多個可編程處理器核的各個方面的說明性使用環境;
[0016]圖2示出一組說明性的可編程處理器核,每個可編程處理器核包括可以常規方式操作以用于通用處理的多個功能單元;
[0017]圖3示出一說明性的交換網絡,所述交換網絡被配置成覆蓋功能單元以啟用它們作為空間陣列的配置;
[0018]圖4示出在覆蓋于功能單元上時的交換網絡;
[0019]圖5示出替代的覆蓋網絡拓撲結構,其中各組功能單元在操作上耦合至交換網絡中的交換節點;
[0020]圖6示出交換網絡中的說明性交換節點的細節;
[0021]圖7示出一說明性的指令塊,其中該塊的一區域已編碼了配置控制信息以及嵌入其中的靜態執行調度;
[0022]圖8是可由專用編譯器或者由標準編譯器內的專用映射功能所采用的說明性方法的流程圖;
[0023]圖9示出可由功能單元在運行時期間采用的說明性方法的流程圖;
[0024]圖10示出其中空間陣列體系結構可使用中繼器被擴展以包括附加功能單元的布局;
[0025]圖11示出一個或多個固定空間陣列被安排在核外部的說明性配置;以及
[0026]各附圖中相同的附圖標記指示相同的元素。除非另外指明否則各元素不是按比例繪制的。
[0027]詳細描述
[0028]圖1示出可以實現本發明中將空間陣列納入一個或多個可編程處理器核的各個方面的說明性使用環境100。環境100包括開發環境106和運行時環境112。在開發環境中,開發者115 —般采用工具121、開發框架等來創建經由編譯器131編譯成可執行機器代碼133的軟件代碼125。然后,可執行機器代碼133在運行時環境112中執行時,可以在設備138上被實例化,所述設備138為設備用戶143提供各種功能和特征。
[0029]圖2示出一組說明性的可編程處理器核20(^.4,每個可編程處理器核20(^.4包括可以常規配置操作以用于通用處理的多個功能單元205L.J。核200可以是被包括作為例如設備138(圖1)的硬件組件155的一部分的處理器。核200的數量以及核中采用的功能單元205的數量在圖中僅為說明性目的而示出。因此,實際實現方式中使用的核200和功能單元205的數量可以根據這種實現方式的具體要求而不同于所示的數量。功能單元205在一些情況下可以被實現為算