TWI603262B - 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令 - Google Patents

緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令 Download PDF

Info

Publication number
TWI603262B
TWI603262B TW105109855A TW105109855A TWI603262B TW I603262 B TWI603262 B TW I603262B TW 105109855 A TW105109855 A TW 105109855A TW 105109855 A TW105109855 A TW 105109855A TW I603262 B TWI603262 B TW I603262B
Authority
TW
Taiwan
Prior art keywords
data
fir filter
fir
processor
instruction
Prior art date
Application number
TW105109855A
Other languages
English (en)
Other versions
TW201701151A (zh
Inventor
愛德溫 戴倫
馬帝努斯 威茲藍伯格
史蒂芬 魯斯
愛德華 葛羅秋斯基
莫旭 馬歐
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201701151A publication Critical patent/TW201701151A/zh
Application granted granted Critical
Publication of TWI603262B publication Critical patent/TWI603262B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0202Two or more dimensional filters; Filters for complex signals
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H2017/0298DSP implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Computer Hardware Design (AREA)

Description

緊縮有限脈衝響應(FIR)濾波器處理器,方法,系統及指令
通言之,本文描述的實施例與處理器有關。更特定地,本文描述的實施例一般地與用於濾波資料的處理器有關。
在資料或信號處理中通常會用到濾波器。一般來說,可藉由使用濾波器去除資料或信號中不想要的分量或部分來改變資料或信號,例如,增進資料或信號的品質、去除雜訊或干擾分量、增強或表現資料或信號的某些屬性、或其類似的屬性。
有些濾波器是無限脈衝響應(IIR)濾波器。IIR濾波器具有的脈衝響應在經過一段有限的時間週期並不必然變成正好為零,反而可能無限制地繼續下去,但通常會衰減或縮小。一般來說,之所以會如此,部分原因是IIR濾波器具有內部反饋,其使得IIR濾波器“記得”先前的結果,此可能導致長的脈衝響應,或潛在的錯誤或信號的混合。 其它的濾波器係有限脈衝響應(FIR)濾波器。FIR濾波器的特徵為脈衝對有限長度的輸入響應,此輸入的持續時間有限,且其在有限的時間內最後安置於零。換言之,FIR濾波器對於有界的輸入具有有界的輸出。
100‧‧‧有限脈衝響應影像濾波方法
102‧‧‧輸入的數位影像
104‧‧‧水平FIR影像濾波操作
106‧‧‧經水平濾波的影像
108‧‧‧垂直FIR影像濾波操作
110‧‧‧經垂直與水平濾波的影像
220‧‧‧處理器
222‧‧‧緊縮FIR濾波器指令
232‧‧‧附加資料元素
228‧‧‧第一源緊縮資料運算元
230‧‧‧第二源緊縮資料運算元
225‧‧‧緊縮資料暫存器
224‧‧‧解碼單元
226‧‧‧緊縮SIMD FIR濾波執行單元
235‧‧‧純量暫存器
236‧‧‧FIR濾波器
234‧‧‧FIR濾波器係數
238‧‧‧結果緊縮資料運算元
436‧‧‧FIR濾波器
450‧‧‧加法器單元
452‧‧‧移位單元
454‧‧‧移位量
456‧‧‧飽和單元
458‧‧‧飽和指示
536‧‧‧FIR濾波器
M‧‧‧乘法器單元
I‧‧‧符號反轉單元
536‧‧‧FIR濾波器
552‧‧‧移位單元
554‧‧‧移位量
550‧‧‧加法器單元
556‧‧‧飽和單元
558‧‧‧飽和指示
626‧‧‧緊縮FIR濾波器執行單元
660‧‧‧乘法器
662‧‧‧互連
664‧‧‧資源
638‧‧‧結果緊縮資料運算元
766‧‧‧緊縮FIR濾波器操作
729‧‧‧輸入資料元素
738‧‧‧結果緊縮資料運算元
822‧‧‧緊縮FIR濾波器指令
870‧‧‧運算碼
871‧‧‧第一源說明欄
872‧‧‧第二源說明欄
873‧‧‧目的地說明欄
874‧‧‧立即值
875‧‧‧第三源說明欄
978‧‧‧32位元運算元
954‧‧‧移位量
980‧‧‧符號反轉控制
1082‧‧‧32位元運算元
1084‧‧‧32位元運算元
1080‧‧‧符號反轉控制
1054‧‧‧移位量
1100‧‧‧處理器管線
1102‧‧‧提取級
1104‧‧‧長度解碼級
1106‧‧‧解碼級
1108‧‧‧配置級
1110‧‧‧更名級
1112‧‧‧排程級
1114‧‧‧暫存器讀取/記憶體讀取級
1116‧‧‧執行級
1118‧‧‧寫回/記憶體寫入級
1122‧‧‧異常處置級
1124‧‧‧確認級
1130‧‧‧前端單元
1190‧‧‧處理器核心
1132‧‧‧分支預測單元
1134‧‧‧指令快取單元
1136‧‧‧指令轉譯後備緩衝區
1138‧‧‧指令提取單元
1140‧‧‧解碼單元
1150‧‧‧執行引擎單元
1152‧‧‧更名/配置單元
1154‧‧‧止用單元
1156‧‧‧排程器單元
1158‧‧‧實體暫存器檔案單元
1160‧‧‧執行叢集
1162‧‧‧執行單元
1164‧‧‧記憶體存取單元
1170‧‧‧記憶體單元
1172‧‧‧資料TLB單元
1174‧‧‧資料快取單元
1176‧‧‧2階(L2)快取單元
1200‧‧‧指令解碼器
1202‧‧‧晶粒上的互連網路
1204‧‧‧2階(L2)快取單元
1206‧‧‧1階(L1)快取
1208‧‧‧純量單元
1210‧‧‧向量單元
1212‧‧‧純量暫存器
1214‧‧‧向量暫存器
1220‧‧‧攪拌單元
1222‧‧‧數值轉換單元
1224‧‧‧複製單元
1226‧‧‧寫入遮罩暫存器
1228‧‧‧向量處理單元
1300‧‧‧處理器
1302‧‧‧核心
1304‧‧‧快取單元
1306‧‧‧共用快取單元
1308‧‧‧特殊用途邏輯
1310‧‧‧系統代理
1312‧‧‧環狀式互連單元
1314‧‧‧整合式記憶體控制器單元
1316‧‧‧匯流排控制器單元
1400‧‧‧系統
1410‧‧‧處理器
1415‧‧‧處理器
1420‧‧‧控制器集線器
1440‧‧‧記憶體
1445‧‧‧協同處理器
1450‧‧‧輸入/輸出集線器
1460‧‧‧輸入/輸出裝置
1490‧‧‧圖形記憶體控制器集線器
1500‧‧‧多處理器系統
1550‧‧‧點對點互連
1570‧‧‧第一處理器
1580‧‧‧第二處理器
1538‧‧‧共處理器
1576‧‧‧匯流排控制器單元點對點介面
1578‧‧‧匯流排控制器單元點對點介面
1586‧‧‧點對點(P-P)介面
1588‧‧‧點對點(P-P)介面
1550‧‧‧點對點(P-P)介面
1532‧‧‧記憶體
1534‧‧‧記憶體
1572‧‧‧整合式記憶體控制器
1582‧‧‧整合式記憶體控制器
1594‧‧‧點對點介面電路
1598‧‧‧點對點介面電路
1552‧‧‧點對點(P-P)介面
1554‧‧‧點對點(P-P)介面
1590‧‧‧晶片組
1539‧‧‧高性能介面
1596‧‧‧介面
1516‧‧‧第一匯流排
1514‧‧‧輸入/輸出裝置
1520‧‧‧第二匯流排
1518‧‧‧匯流排橋接器
1515‧‧‧附加的處理器
1524‧‧‧音頻輸入/輸出
1522‧‧‧鍵盤及/或滑鼠
1527‧‧‧通訊裝置
1528‧‧‧儲存單元
1530‧‧‧指令/碼與資料
1600‧‧‧系統
1614‧‧‧輸入/輸出裝置
1615‧‧‧舊有的輸入/輸出裝置
1572‧‧‧整合式記憶體與I/O控制邏輯
1582‧‧‧整合式記憶體與I/O控制邏輯
1700‧‧‧系統單晶片
1710‧‧‧應用處理器
1720‧‧‧共處理器
1730‧‧‧靜態隨機存取記憶體單元
1732‧‧‧直接記憶體存取單元
1740‧‧‧顯示單元
1702‧‧‧互連單元
1802‧‧‧高階語言
1804‧‧‧x86編譯器
1806‧‧‧x86二進制碼
1808‧‧‧替代的指令集編譯器
1810‧‧‧替代的指令集二進制碼
1812‧‧‧指令轉換器
1814‧‧‧不具有x86指令集核心的處理器
1816‧‧‧具有x86指令集核心的處理器
藉由參考以上的描述及用來說明實施例的附圖,可對本發明有最佳的瞭解。在附圖中:
圖1係FIR影像濾波方法之實施例的方塊圖,其中使用緊縮FIR濾波器指令。
圖2係處理器之實施例的方塊圖,其可操作以實施緊縮FIR濾波器指令的實施例。
圖3係實施緊縮FIR濾波器指令之實施例之方法之實施例的方塊流程圖。
圖4係FIR濾波器之第一例示實施例的方塊圖。
圖5係FIR濾波器之第二例示實施例的方塊圖。
圖6係緊縮FIR濾波器執行單元之實施例的方塊圖,其中,藉由為不同的結果重複使用乘積以減少乘法器單元的數量。
圖7係緊縮FIR濾波操作之例示實施例的方塊圖,其中,經FIR濾波的結果資料元素係基於FIR濾波對應組之交替非相連的源資料元素而產生。
圖8係緊縮FIR濾波器指令之例示實施例的實施例方塊圖。
圖9係32位元運算元之例示實施例的方塊圖,其提供三個FIR濾波器係數、選用的移位量、及選用的一組符號反轉控制。
圖10A係32位元運算元之例示實施例的方塊圖,其提供四個FIR濾波器係數。
圖10B係32位元運算元之例示實施例的方塊圖,其可連同圖10A的32位元運算元一起使用,且其提供一或多個額外的輸入參數。
圖11A的方塊圖說明循序管線的實施例與暫存器更名亂序發出/執行管線的實施例。
圖11B係處理器核心之實施例的方塊圖,其包括耦接至執行引擎單元的前端單元,且兩者皆耦接至記憶體單元。
圖12A係單處理器核心連同其連接至晶粒上互連網路及其2階(L2)快取記憶體之本地子集之實施例的方塊圖。
圖12B係圖12A之處理器核心中一部分展開圖之實施例的方塊圖。
圖13係具有多於一個核心之處理器之實施例的方塊圖,其可具有整合式記憶體控制器及可具有整合式圖形。
圖14係電腦架構之第一實施例的方塊圖。
圖15係電腦架構之第二實施例的方塊圖。
圖16係電腦架構之第三實施例的方塊圖。
圖17係電腦架構之第四實施例的方塊圖。
圖18係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集中之二進制指令的方塊圖。
【發明內容及實施方式】
本文揭示緊縮有限脈衝響應(FIR)濾波器指令;執行指令的處理器;當處理、執行、或實施指令時,處理器所實施的方法;以及,結合一或多個處理器用以處理、執行、或實施指令的系統。在以下的描述中,陳述了諸多的特定細節(例如,特定的指令操作、濾波器類型、濾波器配置、資料格式、處理器組構、微架構細節、操作順序等)。不過,實施這些實施例不用這些特定細節。在其它例中,並未顯示習知電路、結構、與技術的細節,以避免有礙於對本描述的瞭解。
圖1係FIR影像濾波方法100之實施例的方塊圖,在該方法中使用緊縮FIR濾波器指令。影像處理通常使用FIR濾波以去除雜訊、銳化影像、平滑影像、將影像去模糊、增進影像的視覺品質、或以其它方式改變影像的外觀。
輸入的數位影像102包括像素(P)的陣列。像素係按像素之列與像素之行的方式配置。在此簡單的例子中,輸入的影像具有P0到P15共16個像素,這些像素按4列與4行的方式配置。在黑白影像的情況中,每一個像素代表一灰階值。在彩色影像的情況中,每一個像素代表一組 顏色分量(例如,紅、綠、及藍(RGB)顏色分量;青、洋紅、及黃(CMY)顏色分量等)。在一些情況中,像素也包括一或多個額外的分量,諸如,例如,用來表達不透明度的阿爾發頻道。舉例來說,像素的每一個顏色及/或其它分量可用8位元、16位元、或32位元的值來表示。其它大小也適用。
很多維度較高的濾波工作可被因數化、分解、或以其它方式縮減成維度較低的濾波工作。通常,FIR影像濾波係二維(2D)處理。不過,2D FIR影像濾波通常可被因數化、分解、或以其它方式縮減成兩個一維(1D)FIR影像濾波操作,亦即,水平FIR影像濾波操作與垂直FIR影像濾波操作。較低階的濾波工作可按任何順序實施(例如,水平與垂直FIR影像濾波操作可按任何順序發生)。如圖所示,可首先實施水平FIR影像濾波操作104以產生經水平濾波的影像106,並接著對經水平濾波的影像106實施垂直FIR影像濾波操作108,以產生經垂直與水平濾波的影像110。水平影像FIR濾波操作可(例如,從像素之列)濾波輸入的水平序列像素。反之,垂直FIR影像濾波操作可(例如,從像素的行)濾波輸入的垂直序列像素。或者,在另一實施例中,可先實施垂直影像濾波操作以產生經垂直濾波的影像,並接著對經垂直濾波的影像實施水平的影像濾波操作。雖然也可能是實施多次的水平與垂直濾波操作,但為簡化說明,圖中僅顯示單次水平與單次垂直的影像濾波操作,該多次的操作可按各種不同的順 序實施(例如,水平#1、垂直#1、垂直#2、水平#2)。
如圖所示,在一些實施例中,在水平FIR影像濾波操作104期間使用本文所揭示的緊縮FIR濾波器指令。或者,在垂直FIR影像濾波操作108期間使用本文所揭示的緊縮FIR濾波器指令。在緊縮、向量、或SIMD處理器中實施水平影像濾波操作,其中像素的緊縮資料運算元值被平行濾波,否則(即,不使用本文所揭示的緊縮FIR濾波器指令),與垂直FIR影像濾波操作相較,其實施的效率傾向較差。關於此之一主要原因是輸入的數位影像102在記憶體中通常是以列主序而非行主序的方式儲存,且濾波係在向量的方向中實施。當水平地濾波按列主序儲存的影像時(或當按向量的方向及/或記憶體中資料儲存的順序濾波時),至少某些FIR濾波器,為了平行濾波像素的源緊縮資料運算元值,不僅使用源緊縮資料運算元的所有像素,還會使用鄰接之額外的先前像素。典型上,特定濾波階數的FIR濾波器會使用源緊縮資料運算元的所有像素,加上額外鄰近像素之濾波器階數。濾波器階數也與濾波器之分接頭的數量(NTAPS)有關。特別是,濾波器階數等於分接頭的數量少一(即,NTAPS-1)。例如,第四階濾波器具有5個分接頭。
因此,具有許多分接頭(NTAPS)的FIR濾波器會使用源緊縮資料運算元的所有像素,並加上(NTAPS-1)個額外的鄰近像素。例如,關於第四階(例如,5個分接頭)的FIR濾波器,為了為源緊縮資料運算元中每一個對 應的像素產生經FIR濾波的像素,源緊縮資料運算元的所有像素都會被使用,外加4個額外的鄰近像素。少了額外的鄰近像素,則無法對源緊縮資料運算元的所有像素濾波,及/或無法產生所有對應的結果經FIR濾波的像素。少了本文所揭示的緊縮FIR濾波器指令,這種在向量方向及/或按記憶體中資料儲存順序的濾波傾向昂貴,例如,由於需要重複地對齊資料。有利的是,本文所揭示的緊縮FIR濾波器指令可有助於消除很多這類的資料對齊,並從而增進整體的性能。在其它實施例中,本文所揭示的緊縮FIR濾波器指令可用於垂直影像濾波(例如,如果要被濾波之影像在記憶體中係按行主序的方式儲存則更為有用)。因此,本文所揭示的緊縮FIR濾波器指令可用於水平FIR濾波、垂直FIR濾波、或兩者。更一般來說,當在向量方向及/或按記憶體中資料儲存順序濾波時,本文所揭示的緊縮FIR濾波器指令可非常有效率地被使用。此外,本文所揭示的緊縮FIR濾波器指令並不限於影像處理或影像濾波,可更一般地用於濾波其它的資料或信號。
圖2係處理器220之實施例的方塊圖,其操作來實施緊縮FIR濾波器指令222的實施例。緊縮FIR濾波器指令可代表緊縮、向量、或SIMD指令。在一些實施例中,處理器可以是通用處理器(例如,通用微處理器或用於桌上型、膝上型、或其它電腦中的中央處理單元(CPU))。或者,處理器可以是特殊用途處理器。適合特殊用途處理器的例子包括但不限於影像處理器、像素處理器、圖形處 理器、信號處理器、數位信號處理器(DSPs)、與協同處理器。處理器可具有任何各種的複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、極長指令字(VLIW)架構、混合架構、其它類型的架構、或具有不同架構的組合(例如,不同的核心可具有不同的架構)。
在操作期間,處理器220接收緊縮FIR濾波器指令222。例如,透過匯流排或其它互連從記憶體接收指令。指令可代表巨指令、組合語言指令、機器碼指令、或處理器之指令集的其它指令或控制信號。在一些實施例中,緊縮FIR濾波器指令可明確指定(例如,經由一或多個欄位或一組位元)或以其它方示指示(例如,不明確指示)一或多個源緊縮資料運算元228、230。在一些實施例中,指令可選擇性地具有運算元說明欄或幾組位元來明確指定用於這些一或多個運算元的暫存器、記憶體位置、或其它儲存位置。或者,這些一或多個運算元的儲存位置可選擇性地隱含於指令(即,隱含於運算碼),且可被處理器瞭解而使用此儲存位置,不需要明確說明儲存位置。
一或多個源緊縮資料運算元可具有第一數量的資料元素(例如,P0至P7)以及第二數量的附加資料元素232(例如,P8至P11)。在一些實施例中,第二數量的附加資料元素232的數量可至少等於指令所要實施之FIR濾波器的階數(即比濾波器之FIR濾波器分接頭的數量少一)。總括來說,第一與第二數量的資料元素(例如,資料元素P0到P11)代表一組足以產生第一數量之經FIR 濾波之結果資料元素(例如,P0到P7)的資料元素。換言之,每一個第一數量的源資料元素有一個經FIR濾波的結果資料元素。
在圖示的實施例中,一或多個源緊縮資料運算元包括第一源緊縮資料運算元228與第二源緊縮資料運算元230。第一源緊縮資料運算元228具有第一數量的資料元素(例如,P0至P7),及第二源緊縮資料運算元230具有第二數量的附加資料元素(例如,P8至P11)。第一數量的資料元素(例如,P0至P7)橫跨第一源緊縮資料運算元的整個位元寬度。反之,第二數量的附加資料元素(例如,P8至P11)可群集在第二源緊縮資料運算元的一端。資料元素P8-P11可鄰接資料元素P0-P7,或至少在資料元素P0-P7附近,視所實施的特定FIR濾波器而定。也可選擇性地提供其它資料元素,但如圖中所示星號(*)指示,指令/操作並不需要或使用這些資料元素。可選地,如果其可使整體的演算法更有效率,則已存在於暫存器或運算元中的資料元素可選擇性地保留或直接忽略。在其它實施例中,第一與第二數量的資料元素可在一或多個源緊縮資料運算元中被不同地提供。例如,在另一實施例中,可選擇性地使用寬度比結果緊縮資料運算元寬出至少第二數量之資料元素之較寬的單一個源緊縮資料運算元來提供第一與第二數量之資料元素兩者。如另一例子,可選擇性地使用3個源緊縮資料運算元來提供第一與第二數量的資料元素。第一與第二個源緊縮資料運算元可呈現“空 間的”SIMD,其中,元素在運算元中一起轉移(例如,透過匯流排),且儲存在緊縮資料暫存器中,其在資料元素之間的進位鏈中具有斷點等。
在說明的例子中,資料元素的第一數量為8(即,P0到P7),但在其它實施例中也可選擇性地使用較少或更多的資料元素。例如,在各不同的實施例中,第一數量可以是4、8、16、32、64或128、或無冪的二個數。在說明的例子中,資料元素的第二數量為4(即,P8到P11),其可用於第四階或五分接頭的FIR濾波器,但在其它實施例中也可選擇性地使用較少或更多的資料元素。例如,第二數量可以等於濾波器的階數(即,NTAPS-1),且濾波器之階數的範圍可從1到大約11,但本發明的範圍無此限制。在一些實施例中,每一個資料元素(例如,P0到P11)可以是8位元、16位元、或32位元定點。例如,在一實施例中,每一個資料元素可具有整數或定點格式,其為2之補數形式之帶符號的8位元、16位元、及32位元的其中之一,但此非必要。
以FIR濾波來卷積通常依靠資料鄰接。在一些實施例中,在影像或其它資料結構(例如,影像之一列中之鄰接的像素)中第一數量資料元素的資料元素(例如,P0至P7)可代表鄰接/相連的資料元素,或至少是鄰近的資料元素(與特定的FIR濾波器一致)。同樣地,在相同的資料結構(例如,同一影像之同一列中鄰接的像素)中,第二數量資料元素的資料元素(P8至P11)可代表附加的鄰 接/相連的資料元素,或至少是鄰近的資料元素。此外,資料元素P8-P11可與資料元素P0-P7鄰接/相連,或至少是鄰近。例如,在像素的列中,資料元素P8可代表直接鄰接於像素P7的像素。在一些實施例中,鄰接可在多相位結構(poly-phase structure)的一或多次線性操作(例如,以一或多個置換矩陣來實施)描述之後實現。典型上,緊縮FIR濾波器指令222可用來濾波影像之像素的子集(例如,在此情況為8),且演算法可使用多個此指令來逐步地移動或“滑動”通過影像之像素的不同相連子集。例如,在演算法中,緊縮FIR濾波器指令之後續的例子可指示先前所執行之緊縮FIR濾波器指令222的第二源緊縮資料運算元230做為類似於運算元228之新的第一源緊縮資料運算元。在一些實施例中,資料元素可代表藉由數位照相機、手機、掃描器、或其中包括有處理器之系統中其它數位影像捕捉裝置所獲取的數位影像像素,或是經由網路介面、無線介面、或其中包括有處理器之系統的其它輸入/輸出裝置所接收的數位影像像素。其它實施例並不限於像素或影像處理。
再參閱圖2,處理器220也包括一組緊縮資料暫存器225。每一個緊縮資料暫存器可代表晶粒上的儲存位置,其可操作來儲存緊縮資料、向量資料、或單指令多資料(SIMD)資料。緊縮資料暫存器可代表架構上可見或其為軟體及/或程式設計員可見之架構暫存器及/或是藉由處理器之指令集之指令所指示的暫存器用來識別運算元。 在給定的微架構中,這些架構暫存器對比於其它的非架構暫存器(例如,暫時暫存器、重排序緩衝器,等)。緊縮資料暫存器可在不同的微架構中以不用的方式來實施,且不限於任何特定類型的設計。適合的暫存器類型之例子包括但不限於專用的實體暫存器、使用暫存器更名的動態配置實體暫存器、及這些暫存器的組合。緊縮資料暫存器之例示性大小包括但不限於64位元、128位元、256位元、512位元、或1024位元緊縮資料暫存器。
在一些實施例中,第一源緊縮資料運算元228可選擇性地儲存在第一緊縮資料暫存器中,第二源緊縮資料運算元230可選擇性地儲存在第二緊縮資料暫存器中,以及,用來儲存結果緊縮資料運算元238的目的地也可選擇性地是(無需不同的)緊縮資料暫存器。或者,記憶體位置或其它儲存位置也可選擇性地用於一或多個這些運算元。此外,在一些實施例中,用於第一與第二源緊縮資料運算元其中之一的儲存位置也可選擇性地重複使用做為結果緊縮資料運算元的目的地。例如,可藉由指令明確地指示一次源/目的地暫存器,且可隱含或暗示地被理解用於源運算元與結果運算元的暫存器。
再參考圖2,在一些實施例中,指令也可明確地指定或以其它方式指示(例如,隱含地指示)複數個FIR濾波器係數234。例如,如說明的實施例中所示,指令可指定或以其它方式指示用來儲存具有FIR濾波器係數的一或多個運算元之一或多個通用暫存器或其它的純量暫存器 235。或者,指令可具有用來提供FIR濾波器係數的立即運算元。也可選擇性地使用這些方法的組合。
濾波器係數通常對濾波器的品質有重大影響。為了增進濾波器的品質,一般以具有較多的濾波器係數且濾波器係數具有較多位元為理想。不過,濾波器係數愈多及濾波器係數的位元愈多,兩者都會增加提供濾波器係數所需的位元總數量。在一些實施例中,濾波器係數可選擇性地採用“壓縮”格式提供於指令的一或多個運算元中(例如,立即、一或多個純量暫存器等)。壓縮格式有助於容許以較少的位元提供更多的濾波器係數資訊。
實施例並不限於任何已知大小的FIR濾波器係數。在不同的實施例中可使用不同的大小。濾波器主要由係數定義或指定,因此實施例允許係數具有適合定義或指定各種不同類型之濾波器的大小。不過,在一些實施例中,為了簡化一些實施的設計,每一個FIR濾波器係數可為16位元或更少、12位元或更少、8位元或更少。例如,在各不同的實施例中,每一個FIR濾波器係數可為從4到7個位元,或從4到6個位元、或從4到5個位元,但此非必要。FIR濾波器係數也可選擇性地具有多個位元,然而此傾向增加執行單元的大小與複雜度(例如它的乘法器),特別是當分接頭的數量係大的時候。此外,此會增加提供係數所需之運算元的位元數量。
FIR濾波器係數可具有各種不同的編碼及/或資料格式,諸如,例如,1的補數、2的補數、整數、浮點等。 在一些實施例中,濾波器係數可選擇性地具有浮點格式,其中,它們每一個都具有小數部分、符號、及指數或移位因數。在一些實施例中,可選擇性地使用自訂或內部浮點格式。自訂或內部浮點格式可以不是標準的浮點格式,諸如16位元半精度、32位元單精度等。更精確地說,自訂或內部浮點格式可選擇性地是非標準浮點格式。在一些實施例中,浮點格式可少於16位元、少於12位元、或8位元或更少。
在一些實施例中,指令可選擇性地使用與FIR濾波器之分接頭數量(NTAPS)相同數量的FIR濾波器係數。在其它實施例中,指令可選擇性地使用數量比FIR濾波器之分接頭數量(NTAPS)少的FIR濾波器係數,且一或多個FIR濾波器係數可選擇性地用於多個分接頭,諸如,例如,在對稱組構中藉由鏡射或以其它方式再使用FIR濾波器係數、在半對稱組構中藉由鏡射及使FIR濾波器係數變負、等。例如,在各不同的實施例中,可以是一個FIR濾波器係數與兩個分接頭、3個FIR濾波器係數與5個分接頭、4個FIR濾波器係數與7個分接頭、或5個FIR濾波器係數與9個分接頭,僅舉數例來說明。在一些實施例中,指令可明確指定或隱含指示使用係數的方式,例如,如果這些係數是用於對稱、半對稱、或獨立係數的組構中。如一例子所示,可選擇性地使用指令的運算碼來單一地隱含指示使用係數的方式。如另一例,可使用運算碼連同指令的一或多個附加位元(例如,FIR濾波器指示欄 位),例如,以一或多個附加位元來在運算元可使用該等係數的多種不同方式之間做選擇或以其它方式指示其中之一。
再參閱圖2,處理器包括解碼單元或解碼器224。解碼單元可接收及解碼緊縮FIR濾波器指令。解碼單元可輸出一或多個相對較低階的指令或控制信號(例如,一或多個微指令、微操作、微碼登錄點、經解碼的指令或控制信號等),其反映、代表、及/或係導出自相對較高階的緊縮FIR濾波器指令。在一些實施例中,解碼單元可包括用來接收指令的一或多個輸入結構(例如,埠、互連、介面),指令識別與解碼邏輯耦接於其間,用以識別與解碼指令,以及用來輸出較低階指令或控制信號的一或多個輸出結構(例如,埠、互連、介面)耦接於其間。解碼單元可使用各種不同的機制來實施,包括但不限於微碼唯讀記憶體(ROM)、查找表、硬體實施、可程式邏輯陣列(PAL)、及適合實施解碼單元的其它機制。
在一些實施例中,可選擇性地使用指令仿真器、轉譯器、編譯器、解譯器、或其它指令轉換模組,而非將緊縮FIR濾波器指令直接提供給解碼單元。各種類型的指令轉換模組可在軟體、硬體、韌體、或其組合中實施。在一些實施例中,指令轉換模組可位於處理器的外部,諸如,例如,在獨立的晶粒上及/或記憶體中(例如,靜態、動態、或運行時間仿真模組)。舉例來說,指令轉換模組可接收緊縮FIR濾波器指令,其可以是第一指令集的指令, 並可仿真、轉譯、編譯、解譯、或以其它方式將緊縮FIR濾波器指令轉換成一或多個對應的立即指令或控制信號,其可以是對於處理器之解碼器為原生之第二不同的指令集。第二指令集之一或多個立即指令或控制信號可提供給解碼單元(例如,解碼單元224),其可將這些指令解碼成可藉由處理器之硬體(例如,一或多個執行單元)執行的一或多個較低階的指令或控制信號。
再參考圖2,緊縮SIMD FIR濾波執行單元226與解碼單元224的輸出耦接,與緊縮資料暫存器225耦接,或以其它方式與一或多個源運算元(例如,運算元228、230)耦接,及與純量暫存器235耦接,或以其它方式耦接以接收FIR濾波器係數234。執行單元可接收一或多個經解碼或經其它方式轉換的指令或控制信號,其代表及/或源自於緊縮FIR濾波器指令。執行單元也可接收一或多個源緊縮資料運算元(例如,運算元228與230)及FIR濾波器係數234。執行單元也可操作地回應及/或由於緊縮FIR濾波器指令(例如,回應解碼自其的一或多個指令或控制信號)而將結果緊縮資料運算元238儲存到指令所指示的目的地儲存位置。
結果緊縮資料運算元238可包括第一數量之經FIR濾波的資料元素(例如,R0至R7)。這些經FIR濾波的資料元素可代表指令的結果資料元素。在說明的例示實施例中,結果運算元選擇性地包括8個結果資料元素R0至R7,但在其它實施例中可選擇性地使用較少或更多的資料 元素。例如,第一源緊縮資料運算元228的每一個資料元素可具有一個經FIR濾波的資料元素。在一些實施例中,每一個經FIR濾波的資料元素可基於複數個FIR濾波器係數234與來自一或多個源緊縮資料運算元之資料元素之不同對應子集之乘法乘積的算術組合。每一個不同對應組之資料元素的數量等於FIR濾波器分接頭的數量。在一些實施例中,每一個經FIR濾波的資料元素也可選擇性地基於移位及/或飽和FIR濾波器係數與資料元素之不同對應組之對應的乘法乘積的對應算術組合。
參考圖2,在針對5個分接頭濾波器的說明例中,經FIR濾波的資料元素R0可基於複數個FIR濾波器係數與P0至P4資料元素組之乘法乘積的算術組合,經FIR濾波的資料元素R1可基於複數個FIR濾波器係數與P1至P5資料元素組之乘法乘積的算術組合,並依此類推。如圖所示,資料元素的每一個不同對應組都包括與所有其它組不同的資料元素。在此例中,針對此5個分接頭濾波器,每一個經FIR濾波的資料元素係基於對源運算元的5個資料元素FIR濾波,且是從對應之位元位置的資料元素開始(例如,R0與P0係在對應的位置,R2與P2係在對應的位置等)。此外,針對經FIR濾波之結果資料元素的不同資料元素位置(例如,P1-P5在關於R1之相同相關的資料元素位置中如同P0-P4關於R0,等),不同的對應組利用資料元素從相同相關的資料元素位置移動或滑移橫過第一與第二數量之資料元素(例如,P0至P7,及P8至 P11)的邏輯鏈接。R0係最低(或最高)有效經FIR濾波的資料元素,可基於第一源緊縮資料運算元中之NTAPS各自之最低(或最高)有效資料元素的對應組。如圖所示,在一些實施例中,某些經FIR濾波的資料元素(例如,說明例中的R0至R3)係非基於涉及任何附加資料元素232(例如,P8至P11)之濾波階數(例如,NTAPS-1)的FIR濾波,而其它經FIR濾波的結果(例如,說明例中的R4至R7)係基於涉及一或多個附加資料元素232(例如,P8至P11)之濾波階數(例如,NTAPS-1)的FIR濾波。
在一些實施例中,經FIR濾波的結果資料元素可選擇性地基於涉及針對每一個分接頭之不同FIR濾波器係數之乘積的組合。在其它實施例中,經FIR濾波的結果資料元素可選擇性地基於涉及比分接頭之數量少的FIR濾波器係數,且可針對一或多個分接頭重複使用一或多個FIR濾波器係數或變負並重複使用。在一些實施例中,指令可選擇性地指示一或多個符號值用來反轉或改變係數的符號或係數與資料元素的乘積。在各不同的實施例中,結果緊縮資料運算元可代表FIR濾波、多相FIR濾波(例如,基於濾波奇或偶位置的樣本)、或QMF濾波的結果。
在一些實施例中,每一個結果元素(R)可具有與源資料元素(P)相同的精度。在其它實施例中,每一個結果元素可具有源資料元素兩倍的精度。另一適合的結果格式是延伸精度格式,其中(整數)附加了最高有效位元以 提供加大的範圍(例如,當附加N項時,就附加了log2(N)個附加位元)。例如,在一特定的例示實施例中,源元素是2之補數形式的16位元有符號整數或固定點,及結果元素是2之補數形式的32位元有符號整數或固定點,雖然此並非必要。當源與結果元素的大小相同時,可使用具有與用於第一源緊縮資料運算元之暫存器大小相同的單一個暫存器做為目的地。反之,當結果元素的大小是源元素的兩倍時,則可使用兩倍大小的暫存器做為為目的地,或使用兩個與儲存第一源緊縮資料運算元之暫存器大小相同的兩個暫存器做為目的地。在各不同的實施例中,結果緊縮資料運算元可對應於表1-2及/或圖4-7中所示的任何濾波操作,但此非本發明之範圍的限制。
執行單元及/或處理器可包括專門或特定的邏輯(例如,電晶體、積體電路、或其它可以與韌體(例如,儲存在非揮發性記憶體中的指令)及/或軟體結合的硬體),其可操作來實施緊縮FIR濾波器指令,及/或回應於及/或由於緊縮FIR濾波器指令(例如,回應於自FIR濾波指令解碼的一或多個指令或控制信號)而儲存結果。舉例來說,執行單元可包括算術單元、算術邏輯單元、乘法與累加單元、或用以實施算術或算術與邏輯運算的數位電路、或類似物。在一些實施例中,執行單元可包括用以接收源運算元的一或多個輸入結構(例如,埠、互連、介面)、與其耦接用以接收及處理源運算元並產生結果運算元的電路或邏輯、以及與其耦接的一或多個輸出結構(例 如,埠、互連、介面),用以輸出結果運算元。
在一些實施例中,執行單元可包括用於第一源緊縮資料運算元中每一個資料元素(例如,P0至P7)及/或每一個結果資料元素(例如,R0至R7)之不同的對應FIR濾波器236。FIR濾波器236-0可對輸入元素P0至P4實施FIR濾波操作,用以產生結果元素R0,依此類推。緊縮資料運算元的元素可以使用“空間的”SIMD配置以平行或同時的方式處理,或元素的子集可選擇性地利用“時間的”類型的向量處理(例如,經過數個時鐘週期,其視要被處理之元素子集的數量而定)依序地處理。在一些實施例中,每一個FIR濾波器236包括圖4-6中任意者的電路、組件、或邏輯,這些是適合微架構的FIR濾波組構的說明例,但本發明的範圍並無此限制。
有利的是,緊縮FIR濾波器指令可有助於提升FIR濾波器的性能,及/或對於程式設計員來說較為容易,特別是當在“向量方向”中FIR濾波時,在此方向中使附加資料元素的濾波器階數超過源緊縮資料運算元中所需的那些濾波器階數。該等指令有助於簡化水平存取要求。通常,用來提供足以產生經FIR濾波之結果資料元素之結果緊縮資料運算元價值之所有資料元素所使用的源緊縮資料運算元不會超過兩個。此不需更多的外部資料相依性。對齊操作可省略,此有助於提升性能。
為避免模糊了本描述,顯示及描述了相對簡單的處理器220。不過,處理器可選擇性地包括其它的處理器組 件。例如,各種不同的實施例可包括針對圖11-13所顯示及描述之組件的各種不同組合與組態。處理器的所有組件都可耦接在一起。
圖3係實施緊縮FIR濾波器指令之實施例的方法340之實施例的方塊流程圖。在各不同的施例中,此方法可藉由處理器、指令處理設備、或其它數位邏輯裝置來實施。在一些實施例中,圖3的方法可藉由及/或在圖2的處理器中實施。本文針對圖2之處理器所描述之組件、特徵、及特定的選用細節亦可選擇性地適用於圖3的方法。或者,圖3的方法可藉由及/或在類似或不同的處理器或設備中實施。此外,圖2之處理器可實施那些與圖3相同、類似、或不同的方法。
此方法包括在方塊341接收緊縮FIR濾波器指令。在各態樣中,可在處理器或其某部分(例如,指令提取單元、解碼單元、匯流排介面單元等)處接收指令。在各不同的情況中,指令可接收自處理器外部及/或晶粒外部的來源(例如,來自記憶體、互連等),或接收自處理器上及/或晶粒上的來源(例如,來自指令快取、指令佇列等)。緊縮FIR濾波器指令可指定或以其它方式指示一或多個源緊縮資料運算元(例如,第一與第二源緊縮資料運算元)、複數個FIR濾波器係數、以及目的地暫存器或其它儲存位置。一或多個源緊縮資料運算元可包括第一數量的資料元素與第二數量的附加資料元素。第二數量比用來實施該指令之FIR濾波器之FIR濾波器分接頭的數量少 一。
此方法也包括在方塊342處回應於及/或由於緊縮FIR濾波器指令,將結果緊縮資料運算元儲存在目的地儲存位置。結果緊縮資料運算元可包括第一數量經FIR濾波的資料元素。每一個經FIR濾波的資料元素可基於複數個FIR濾波器係數與來自一或多個源緊縮資料運算元之不同對應組之資料元素之乘積的組合。對應組之資料元素的數量可等於FIR濾波器分接頭之數量。指令、一或多個源運算元、係數、結果運算元、及結果運算元之產生,都可選擇性地具有本文它處所揭示之任何選用的特性或特徵。
所說明的方法涉及架構操作(例如,從軟體觀點為可見的那些架構操作)。在其它實施例中,此方法可選擇性地包括一或多個微架構操作。舉例來說,指令可被提取、解碼、亂序排程,源運算元可被存取,執行單元可執行微架構操作以實施指令(例如,乘法、加法、移位、飽和、等)。在一些實施例中,用以實施指令的微架構操作可選擇性地包括圖4-6任一圖所顯示與描述的任何操作,但本發明的範圍無此限制。
圖4係FIR濾波器436之第一例示實施例的方塊圖。圖示說明的FIR濾波器係5個分接頭的濾波器,但在其它實施例中可選擇性地使用較少或更多的分接頭。FIR濾波器包括針對每一個分接頭之不同的對應乘法器。在此情況中,5個分接頭濾波器包括第一到第五乘法器單元M0至M4。在此實施例中,耦接FIR濾波器用以接收做為輸入 的5個資料元素P0至P4與5個係數C0至C4。5個資料元素P0至P4代表對應組的5個資料元素,其對應於經FIR濾波的結果資料元素R0。在此實施例中,這些5個資料元素的每一者都與5個係數中之不同的係數相乘。特別是,耦接M0用以接收並可操作地相乘P0與C0以產生並輸出第一乘積。耦接M1用以接收並可操作地相乘P1與C1以產生並輸出第二乘積。耦接M2用以接收並可操作地相乘P2與C2以產生並輸出第三乘積。耦接M3用以接收並可操作地相乘P3與C3以產生並輸出第四乘積。耦接M4用以接收並可操作地相乘P4與C4以產生並輸出第五乘積。
FIR濾波器的一或多個加法器單元450與乘法器的輸出耦接用以接收該些乘積。一或多個加法器單元係可操作來加、累積、或以其它方式組合所有的乘積,並用以輸出所有乘積的單一總和或其它的算術組合。舉例來說,一或多個加法器單元可包括進位儲存加法器單元樹。總的來說,乘法器單元與加法器單元可實施完整的乘法累加運算。在一些實施例中,可選擇性地包括中間選擇網路,以允許加法器單元(例如,加法器樹)能更自由或有彈性地選擇哪些乘積要被組合在一起。
在一些實施例中,FIR濾波器可選擇性地包括選用的移位單元452與一或多個加法器單元之最後一個的輸出耦接,用以接收乘積的總和或其它乘積之組合。選用的移位單元可操作地將總和向右移位若干個位元位置,其可用來 調整該總和。經FIR濾波的資料元素R0可基於對乘積之組合的移位。選擇性地,可在移位之前藉由在零向量中(緊跟在逗點之後)插入二進制“1”來實施捨入,並將該信號插入一或多個加法器單元。在一些實施例中,相關聯的緊縮FIR濾波器指令可指示具彈性的移位量454用於向右移位。
FIR濾波器可選擇性地包括選用的飽和單元456。如圖所示,飽和單元可與選用的移位單元的輸出耦接。或者,如果省略了移位單元,則飽和單元可與一或多個加法器單元的輸出耦接。選用的飽和單元可將其輸入值飽和或鉗限到與其輸出資料類型相關聯之最大與最小容許值其中之一。在一些實施例中,緊縮FIR濾波器指令可具有用以指示與控制飽和是被致能或被去能的飽和指示458(例如,指令的一個位元)。FIR濾波器可輸出最後經FIR濾波的像素或其它元素做為結果元素R0。結果元素R0可儲存在目的地暫存器或其它的目的地儲存位置。在一些實施例中,結果元素R0可等於乘積P0C0加P1C1加P2C2加P3C3加P4C4所有相加在一起,經N位元移位之總和的飽和(SAT)值。其它的結果元素也可具有類似的結果。不過,這僅是舉例。
FIR濾波器436的說明性例示實施例具有5個分接頭,但其它實施例可具有較少或多於5個分接頭。例如,在各不同的實施例中,FIR濾波器可選擇性地具有3、7、9、或一些其它數量的分接頭,以及相同數量的FIR濾波 器係數。此外,藉由將一或多個係數設定為零,具有給定數量分接頭的FIR濾波器可用來選擇性地實施分接頭數量較少的濾波器。反之,藉由結合兩或多個FIR濾波器操作,具有給定數量分接頭的FIR濾波器可選擇性地用來實施分接頭數量較多的濾波器。舉例來說,在操作內以排序器與暫存器來累積,其可用來在多個週期中建立較大的濾波器,同時,重複使用乘法器與加法器單元,使得較大的濾波器沒有佔用較大面積或較高製造成本的問題。
圖5係FIR濾波器536之第二例示實施例的方塊圖。在各不同的實施例中,FIR濾波器被使用來實施具有3個獨立的係數(C0至C2)之3個分接頭的FIR濾波器、來實施具有3個獨立的係數(C0至C2)之對稱之5個分接頭的FIR濾波器,且其中某些係數可被鏡射或以其它方式重複使用、來實施具有3個獨立的係數(C0至C2)之半對稱之5個分接頭的FIR濾波器,且其中某些係數可被鏡射或以其它方式重複使用及變負。
說明的FIR濾波器包括第一到第五乘法器單元M0至M4。在此說明性的5個分接頭FIR濾波器實施例中,FIR濾波器被耦接來接收5個資料元素P0至P4及僅3個係數C0至C2做為輸入。其它的實施例可使用其它數量的資料元素及/或其它數量的係數。M0被耦接來接收P0與C0,並可運算以相乘P0與C0來產生及輸出第一乘積P0*C0。M1被耦接來接收P1與C1,並可運算以相乘P1與C1來產生及輸出第二乘積P1*C1。M2被耦接來接收 P2與C2,並可運算以相乘P2與C2來產生及輸出第三乘積P2*C2。M3被耦接來接收P3與C1,並可運算以相乘P3與C1來產生及輸出第四乘積P3*C1。M4被耦接來接收P4與C0,並可運算以相乘P4與C0來產生及輸出第五乘積P4*C0。在說明中,P1C0、P1C1等僅是用於乘積的指示標籤,或代表用以儲存乘積之臨時的暫存器。
須注意,係數C0係提供給並供M0與M4兩者使用,且係數C1係提供給並供M1與M3兩者使用。僅指定3個獨立係數而非指定5個獨立係數,而另2個係數重複使用自或導出自該3個係數,並接著重複使用於兩個分接頭。有利的是,此有助於縮小FIR濾波器的尺寸及/或複雜度。在一些實施例中,此可容許使用較少的乘法器,其傾向大幅減少FIR濾波器的邏輯總量。例如,不需要將5個係數與5個資料元素相乘,僅將3個係數與5個資料元素相乘,且某些乘積在適合複數個經FIR濾波之結果資料元素處可被重複路由及重複使用。此將在下文中連同圖6進一步討論。
在一些實施例中,FIR濾波器可選擇性地包括一或多個選用的符號反轉單元,用以改變一或多個係數或與其相關聯之乘積的符號或對其實施符號反轉。在特定的說明例示性實施例中,FIR濾波器包括選用的第一符號反轉單元I0、選用的第二符號反轉單元I1、選用的第三符號反轉單元I2、選用的第四符號反轉單元I3、以及選用的第五符號反轉單元I4。在此實施例中,每一個分接頭都具有一個 符號反轉單元,但在替代的實施例中可包括較少或更多的符號反轉單元。在說明的實施例中,符號反轉單元被耦接以施加或不施加對應的符號值給對應的乘積或將其符號反轉。耦接第一符號反轉單元I0用以接收第一乘積P0C0,並可操作來施加或不施加符號反轉至P0C0。耦接第二符號反轉單元I1用以接收第二乘積P1C1,並可操作來施加或不施加符號反轉至P1至C1,依此類推。
有利的是,這種符號反轉可選擇性地用來有助於有效地產生不同的係數。嚴格來說,雖然給定的係數與該給定之係數之符號反轉的型式並非獨立係數,但它們仍然不同。因此,符號反轉有助於有效地產生額外不同的係數,而不需明確地指定更多的獨立係數。此外,由於實施符號反轉的成本低於完整乘法。藉由僅對乘積施加符號或實施符號反轉,以不同的(雖然或許不是絕對獨立)係數可實現有效的乘法,毋需實施不同的乘法。更確切的說,可使用相同乘積的兩個複製(copies),對乘積的其中一個複製實施符號反轉,但不對另一個複製實施符號反轉,其一般來說,所使用的邏輯要比實施兩個獨立乘法來的少。結果是,經由重複使用乘積及成本較低的符號反轉單元即有可能省去一些乘法器。另者,如有需要,可耦接符號反轉單元用以在乘法之前對於對應的係數施加或不施加符號反轉。舉例來說,可使用標準的2之補數方式來為每一個分接頭完成符號反轉,其中,負=(正XOR“1”)+1。此可藉由將反轉旗標(‘1’為"是")插入XOR而獲得,同時也 做為進位位元插入到接於其後的加法器單元。此種符號反轉對於某些類型的濾波器及當結合濾波器時很有用處。
在一些實施例中,符號反轉單元(在不同的實施例中有不同的數量)可使用固定或靜態符號反轉。例如,給定的FIR濾波器指令(例如,其運算碼)可具有用於符號反轉單元之特定的固定或靜態的符號反轉控制組。如有需要,指令集中可選擇性地包括具有不同運算碼之不同的指令,用以每一個提供不同的固定符號反轉控制組。例如,第一指令或運算碼可完全不使用符號反轉,第二指令或運算碼可僅對乘積P3*C1與P4*C0固定符號反轉,第三指令或運算碼可僅對乘積P0*C1與P1*C1固定符號反轉,等。另者,與其此種指令固定或運算碼固定的符號反轉,倒不如緊縮FIR濾波器指令可容許具有彈性或可程式的符號反轉控制。例如,指令的一或多個運算元,諸如,例如,立即運算元、指令所指示的暫存器、或類似物,可提供具彈性或可程式的符號反轉控制S0至S4(或視需要之其它數量的這種符號反轉控制)。符號反轉控制可代表符號值。如一例子所示,符號反轉控制S0至S4可分別代表暫存器或立即中的5個位元,其可個別被設定或被清除,用以致能或去能針對對應之符號反轉單元的符號反轉。也可與慣用的相反。
再參閱圖5,FIR濾波器536可包括一或多個加法器單元550與選用的符號反轉單元的輸出耦接。另者,如果未使用符號反轉單元,則一或多個加法器單元可選擇性地 與乘法器的輸出耦接。一或多個加法器單元可操作來加、累積、或以其它方式組合所有乘積並用以輸出所有乘積之單一總和或其它算術組合,如前文之描述。舉例來說,一或多個加法器單元可包括進位儲存加法器單元樹。在一些實施例中,可選擇性地包括中間選擇網路,以容許加法器單元(例如,加法器樹)以更自由地或有彈性地選擇哪些乘積要被組合在一起。
在一些實施例中,FIR濾波器可選擇性地包括選用的移位單元552與一或多個加法器單元的輸出耦接,用以接收乘積的總和或其它組合。選用的移位單元可被操作來將總和向右移位若干位元位置,其可用來調整該總和。經FIR濾波的資料元素R0可基於移位乘積的組合。在藉由在零向量(緊接在逗點後方)中插入二進制“1”而移位之前選擇性地實施捨入,並將該信號插入到一或多個加法器單元。在一些實施例中,相關聯的緊縮FIR濾波器指令可指示一有彈性的移位量554用於向右移位。
FIR濾波器可選擇性地包括選用的飽和單元556。如圖所示,飽和單元可與選用的移位單元的輸出耦接。或者,如果省略了移位單元,則飽和單元可與一或多個加法器單元之輸出耦接。選用的飽和單元可將其輸入值飽和或鉗限到與其輸出資料類型相關聯之最大與最小容許值其中之一。在一些實施例中,緊縮FIR濾波器指令可具有飽和指示558(例如,指令的一個位元),用以指示與控制飽和是被致能或被去能。FIR濾波器可輸出最後經FIR濾波 的像素或其它元素做為結果元素R0。結果元素R0可儲存在目的地暫存器或其它的目的地儲存位置。
FIR濾波器536的說明性例示實施例具有5個分接頭及3個係數,但其它實施例可具有較少或多於5個分接頭及/或其它數量的係數。例如,在各不同的實施例中,FIR濾波器可選擇性地代之以具有2個分接頭與1個係數、7個分接頭與4個係數、或9個分接頭與5個係數,僅舉幾個例來說明。本發明的範圍並不限於任何已知數量的分接頭或係數。在各不同實施例中,這些FIR濾波器可使用每一個都具有獨立係數的分接頭,鏡射係數以提供對稱的FIR濾波器,或鏡射係數並變負以提供半對稱的FIR濾波器。此外,藉由將一或多個係數設定為零,具有特定數量分接頭的FIR濾波器可用來選擇性地實施分接頭數量較少的濾波器。反之,藉由結合兩或多個FIR濾波器操作,具有特定數量分接頭的FIR濾波器可選擇性地用來實施分接頭數量較多的濾波器。舉例來說,在操作內以排序器與暫存器來累積,可用來在多個週期中建立較大的濾波器,同時,重複使用乘法器與加法器單元,使得較大的濾波器沒有佔用較大面積或較高製造成本的問題。
圖6係緊縮FIR濾波器執行單元626之實施例的方塊圖,其具有實質數量最少的乘法器660。在說明的實施例中,執行單元僅使用3個獨立係數(C0至C2)來實施FIR濾波,但在其它實施例中可選擇性地使用較少或多於3個係數。如本文它處所提及,可選擇性地使用對稱或半 對稱來增加有效不同(雖非絕對地獨立)係數的數量。
執行單元可接收一組資料元素P0至PT。這些資料元素P0至PT代表第一數量的資料元素(例如,第一數量的資料元素填充一向量)及第二數量的附加資料元素,其等於濾波器的階數(例如,比濾波器分接頭的數量少1(即,NTAPS-1))。如前文之討論,這些資料元素可集體地被最小化到足夠產生第一數量之經FIR濾波的結果資料元素。每一個源資料元素可對應於不同的緊縮或SIMD通道或資料路徑。在一些實施例中,執行單元可具有供多個此等緊縮或SIMD通道或資料路徑所共用的邏輯,以及專用於給定緊縮或SIMD通道或資料路徑的邏輯兩者。特別是,執行單元可包括一組乘法器單元660,其供多個緊縮或SIMD通道所共用,且其它資源664每一個專用於對應的單一的緊縮或SIMD通道或資料路徑。
在一些實施例中,乘法器單元組660可包括針對指定指令產生所有結果資料元素所需之實質最少數量的乘法器單元。使用最少數量的乘法器單元有助於大幅減少用來實施執行單元所需的邏輯總量。在一些實施例中,乘法器的數量可以等於或不超過或在一些情況中少於(例如,如果位於邊界處的乘法器被除去)將源資料元素P0至PT之數量乘以獨立係數的數量(例如,在此例中為3)。如前文提及,源資料元素P0至PT之數量可包括等於緊縮或SIMD通道之數量加上濾波器階數(例如,NTAPS-1)的附加資料元素之第一數量的資料元素。如圖所示,一組3 個乘法器M00、M01、及M02對應於資料元素P0,且用於分別以C0、C1、及C2乘以P0。同樣地,一組3個乘法器M10、M11、及M12對應於資料元素P1,且用於分別以C0、C1、及C2乘以P1。每一個其它的源資料元素都可採用類似的方法。實際上,乘法器單元組可操作來產生所有可能的獨立乘積,這些乘積分別以各自的標籤顯示於圖示中。一些位於邊界處的乘法器單元,如果其不是用於特定的實施,則可選擇性地被除去。
亦如圖所示,執行單元具有互連662。互連與每一個乘法器單元的輸出耦接。互連可操作來依據正被實施的特定FIR濾波器,將適當的乘積群組路由到適當的緊縮或SIMD通道或資料路徑。例如,為實施一特定的例示FIR濾波器,乘積P0C0、P1C1、P2C2、P3C1、及P4C0可路由到對應於結果資料元素R0的SIMD通道,其與資料元素P0在相同的相對位元位置。互連可將單一個乘積(例如,以P1*C0為一例子)路由到多個緊縮或SIMD通道以便其可被重複使用,用以產生多個經FIR濾波的資料元素,而不需要藉由多次的乘法來產生。在一些實施例中,互連及/或路由適合實現表1-2中所顯示的不同FIR濾波器。某些乘積被計算一次,並路由到多個不同的SIMD通道。換言之,乘法器及/或它們的乘積可在多個不同的SIMD通道之間被共用。
執行單元也包括資源664,其專用於對應的向量、緊縮、或SIMD通道或資料路徑。這些資源與互連的輸出耦 接,用以接收適合的乘積群組。這些資源可包括本文它處所描述之資源的各種不同組合,例如,一或多個加法器單元、選用的移位單元、選用的飽和單元、選用的符號反轉單元、類似物、以及它們各種不同的組合。可選擇性地使用這些資源之任何先前描述的組合。這些資源可實質地按本文它處的描述來操作。這些資源可輸出結果緊縮資料運算元638。
有各式各樣不同類型的FIR濾波器操作適合本文所揭示的緊縮FIR濾波器指令。表1列出適合用於具有4個係數(C0至C3)之緊縮FIR濾波器指令實施例之FIR濾波器操作的數個例子。如前所述,指令指示4個係數。濾波器1具有4個係數被組構成4個獨立的分接頭。濾波器2具有4個係數被組構成7個對稱的分接頭,其中用於分接頭2-0相同的係數分別被鏡射並重複使用於分接頭4-6。濾波器3具有4個係數被組構成7個半對稱的分接頭,其中用於分接頭2-0相同的係數分別變負或符號反轉並被鏡射與重複使用於分接頭4-6。濾波器4-6分別類似於濾波器1-3並使用指令所指示的移位量(N)對輸出實施額外的算術向右移位。濾波器7具有4個係數被組構成7個對稱的分接頭,其中與用於分接頭2-0相同的係數分別被鏡射並重複使用於分接頭4-6。使用藉由指令所指示之7個對應的符號反轉控制(S0至S6)施加符號反轉於每一個係數或每一個乘積。這些符號反轉控制或符號值容許程式設計員或編譯器改變任何係數或乘積的符號以得到所要的 FIR濾波器。使用亦藉由指令所指示之移位量(N)來對輸出實施算術向右移位。為簡化,表1中所示的濾波器操作係用於單一個經FIR濾波的結果資料元素(R0),但須瞭解,類似的濾波器操作可對其它每一個經FIR濾波的結果資料元素來實施。
表2列出適合用於具有3個係數(C0至C2)之緊縮FIR濾波器指令實施例之FIR濾波器操作的數個例子。如前所述,指令指示3個係數。濾波器8具有3個係數被組構成3個獨立的分接頭。濾波器9具有3個係數被組構成 5個對稱的分接頭,其中用於分接頭1-0相同的係數分別被鏡射並重複使用於分接頭3-4。濾波器10具有3個係數被組構成5個半對稱的分接頭,其中用於分接頭1-0相同的係數分別變負或符號反轉並被鏡射與重複使用於分接頭3-4。濾波器11-13分別類似於濾波器8-10並使用藉由指令所指示的移位量(N)對輸出實施額外的算術向右移位。濾波器14具有3個係數被組構成5個對稱的分接頭,其中用於分接頭1-0相同的係數分別被鏡射並重複使用於分接頭3-4。藉由指令所指示之5個對應的符號反轉控制(S0至S4)用來施加符號反轉於每一個係數或每一個乘積。這些符號反轉控制或符號值容許程式設計員或編譯器改變任何係數或乘積的符號以得到所要的FIR濾波器。使用亦藉由指令所指示之移位量(N)來對輸出實施算術向右移位。
為簡單化,表1-2中所示的濾波器操作係用於單一個經FIR濾波的結果資料元素(R0),但須瞭解,類似的濾波器操作可對其它每一個經FIR濾波的結果資料元素來實施。對於具有其它數量係數(諸如,例如,5個係數、2個係數、1個係數、等)的緊縮FIR濾波器指令的其它類似實施例也列入考慮。
在一些實施例中,表1-2中所示的每一個不同的FIR濾波器與FIR濾波器操作都可藉由不同的指令(例如,不同的運算碼)來實施。指令(例如,其運算碼)可指示濾 波器是否使用每一個係數做為獨立的分接頭,是否應用對稱與對稱樣式、是否應用半對稱與樣式等。例如,在解碼單元解碼了運算碼後即可瞭解所用的係數是暗示地(並非明確指定)的對稱樣式或半對稱樣式。此有助於減少用來提供係數所需的編碼量,但此非必要。
在其它實施例中,指令可彈性地實施來自表1及/或表2之兩或更多個FIR濾波器與FIR濾波器操作。例如,指令可具有或指示一組位元,其可具有不同的值來在兩或更多不同的FIR濾波器操作之間彈性地指定或選擇。舉幾個例來說,此組位元可在指令的立即或其它非運算碼組的位元中,或可在藉由指令所指示的暫存器中。舉例來說,含有給定運算碼之4係數指令具有一欄位用來指定該4個係數是否為用於獨立係數組構、對稱係數組構、具有高位分接頭轉負的半對稱係數組構、具有低位分接頭轉負的半對稱係數組構,及是否對這些組構之每一個的輸出實施移位等)。是否將FIR濾波器操作專用於一運算碼或是容許一運算碼用於不同FIR濾波器操作,有很多不同組合都被考慮。
圖7係緊縮FIR濾波器操作766之例示實施例的方塊圖,其中,經FIR濾波的結果資料元素係基於對每隔一個或交替的源資料元素之對應組進行FIR濾波而產生。舉例來說,此在多相FIR濾波中很有用處。此操作係回應緊縮FIR濾波器指令的實施例而實施。指令可指示一組包括資料元素P0至P9的輸入資料元素729。結果緊縮資料運算 元738可由於緊縮FIR濾波器操作而產生。
結果緊縮資料運算元包括第一(例如,最低或最高有效)偶位置之經FIR濾波的結果資料元素R0,其係基於僅對FIR濾波器分接頭數量(NTAPS)的(例如,最低或最高有效)偶位置資料元素(例如,P0、P2、P4、P6、及P8)進行FIR濾波。經FIR濾波的結果資料元素R0非基於使用奇位置的源資料元素(例如,P1、P3、P5、P7、及P9)實施FIR濾波。此可藉由輸入互連或在分接頭間跳選像素位置之選擇網路來達成。
結果緊縮資料運算元也包括第二(例如,次低或次高有效)奇位置經FIR濾波的結果資料元素R1,其係基於僅對FIR濾波器分接頭數量(NTAPS)的(例如,最低或最高有效)奇位置資料元素(例如,P1、P3、P5、P7、及P9)進行FIR濾波。經FIR濾波的結果資料元素R1不基於使用偶位置的源資料元素(例如,P0、P2、P4、P6、及P8)實施FIR濾波。此可藉由輸入互連或在分接頭間跳選像素位置之選擇網路來達成。
同樣地,其它偶位置之經FIR濾波的結果資料元素也是基於僅對偶位置的源資料元素FIR濾波,而其它奇位置之經FIR濾波的結果資料元素是基於僅對奇位置的源資料元素FIR濾波。此等實施例容許使用稀疏濾波器。典型地,此等實施例對於降取樣、或交錯平面很有用處。這樣的輸入資料配置可與具有各種不同數量之分接頭與係數之各種不同類型的濾波器使用。藉由採用每第N個元素來代 替每隔一個或交替的元素,其它實施例可更廣泛地使用這種多相FIR濾波。
圖8係緊縮FIR濾波器指令822之例示實施例之實施例的方塊圖。指令包括操作碼或運算碼870。運算碼可代表複數個位元或一或多個欄位,其可操作來識別指令及/或所要實施的操作(例如,緊縮FIR濾波器操作)。如前文提及,在一些實施例中,運算碼可隱含地指示其中使用係數的固定組構(例如,對稱或半對稱組構),然而,在其它實施例中可不指示(例如,由非運算碼的位元組指定或選擇組構)。
指令也包括用以明確指定第一源緊縮資料運算元之位置的第一源說明欄871,用以明確指定選用性源緊縮資料運算元之位置的選用性第二源說明欄872,用以明確指定用於儲存結果緊縮資料運算元之目的地位置的選用性目的地說明欄873。舉例來說,這些欄位之各者可包括暫存器的位址、記憶體位置、或其它儲存位置。或者,如前所提及,相對於被明確地指定,第一源緊縮資料運算元、第二源緊縮資料運算元、或目的地之一或多個的儲存位置可選擇性地對指令為隱含。在一情況中,可選擇性地使用隱含的源/目的地儲存位置。此外,在其它實施例中,指令可指定單一個源運算元,或兩個以上的源運算元。
在一些實施例中,指令也具有選用的立即值874用以提供複數個輸入參數。在一些實施例中,立即值可提供複數個係數及/或一或多個移位量及/或符號反轉控制。或 者,輸入參數可藉由暫存器或其它儲存位置來提供,其可藉由指令來明確指定(例如,以另一個源說明欄位(未顯示)),或對指令來說為隱含。在一些實施例中,指令可選擇性地具有第三源說明欄875,用來提供一或多個額外的輸入參數。或者,也可選擇性地使用隱含暫存器或其它的儲存位置來提供這些額外的輸入參數。
圖示顯示的欄位類型之例子可包括在緊縮FIR濾波器指令的實施例中。替代實施例可包括說明之欄位的子集或可添加附加的欄位。這些欄位之說明的次序/排列並非必要,反之這些欄位可重作安排。這些欄位不需要包括相連的位元序列,反之可以是由非連續或分離的位元組成。
圖9係緊縮FIR濾波器指令之32位元運算元978之例示實施例的方塊圖,其可用來提供3個係數(C0至C2)、選用的移位量954、及選用的一組符號反轉控制980。在一些實施例中,運算元可以是32位元的立即運算元。在其它實施例中,運算元可儲存在由指令所指示的32位元通用或其它暫存器中。在一些實施例中,每一個係數可選擇性地提供於運算元之不同的對應位元組中,且可位元組對齊,其有助於提供有效率的位元組存取與可讀性。例如,如圖所示,第一係數C0提供於最低有效位元組內、第二係數C1提供於第二最低有效位元組內、第三係數C2提供於第三最低有效位元組內。位元組對齊提供優點,但此非必要。在說明的實施例中,這些係數每一個皆為5位元係數,但在其它實施例中這些係數可具有較少 或更多的位元(例如,通常從4位元到8位元)。係數可選擇性地具有本文所描述的其它屬性(例如,與係數234結合),諸如,例如,內部浮點格式等。在一些實施例中,如先前之描述,相關聯的指令(例如,運算碼、具有其它欄位的運算碼、等)會指示如何使用這些係數(例如,用作為獨立係數、用於對稱的組構中、用於半對稱的組構中)。
如圖所示,在一些實施例中,運算元也可選擇性地提供選用的移位量954與選用的一組符號反轉控制980。在說明的實施例中,此兩者皆提供在運算元的最高有效位元組中。特別是,移位量可在最高有效位元組的3個最低有效位元中提供,而符號反轉控制組則在最高有效位元組的5個最高有效位元中提供。移位量使用3個位元足以表示從0至7位元的移位範圍。符號反轉控制組之5個位元的每一個位元可對應於5個分接頭中不同的一個分接頭,且可用來致能或去能對應之分接頭的符號反轉。在其它實施例中,符號反轉控制組可選擇性地使用少於或多於5個位元,及/或移位量可使用少於或多於3個位元。
圖10A係緊縮FIR濾波器指令之32位元運算元1082之例示實施例的方塊圖,其可用來提供4個係數(C0至C3)。在一些實施例中,運算元可以是指令的32位元立即運算元。在其它實施例中,運算元可儲存在由指令所指示的32位元通用或其它暫存器中。在一些實施例中,每一個係數可選擇性地提供於運算元之不同的對應位元組 中,且可位元組對齊,其有助於提供有效率的位元組存取與可讀性。例如,如圖所示,第一係數C0提供於最低有效位元組內、第二係數C1提供於第二最低有效位元組內、第三係數C2提供於第三最低有效位元組內、及第四係數C3提供於最高有效位元組內。或者,這些係數在運算元內可選擇性地以各種方式重新安排。位元組對齊提供優點,但此非必要。在說明的實施例中,這些係數每一個皆為5位元係數,但在其它實施例中該係數可具有較少或更多的位元(例如,通常從4位元到8位元)。係數可選擇性地具有本文所描述的其它屬性(例如,與係數234結合),諸如,例如,內部浮點格式等。在一些實施例中,如先前之描述,相關聯的指令(例如,運算碼、具有其它欄位的運算碼、等)會指示如何使用這些係數(例如,用作為獨立係數、用於對稱的組構中、用於半對稱的組構中)。
圖10B係緊縮FIR濾波器指令之32位元運算元1084之例示實施例的方塊圖,其可連同圖10A之32位元運算元一起使用,並可用來提供一或多個額外的輸入參數。在一些實施例中,運算元可以是由指令所指示的32位元通用或其它暫存器。在說明的例示實施例中,運算元選擇性地提供移位量1054與選用的符號反轉控制1080。如圖所示,在一些實施例中,輸入參數可選擇性地提供於運算元之不同的對應位元組中,且位元組被對齊。位元組對齊提供優點,但此非必要。如圖所示,移位量可選擇性地提供 於最低有效位元組中,且5位元的符號反轉控制則可選擇性地提供於下一個最低有效位元組中。在其它實施例中,運算元可選擇性地省略此一或兩個輸入參數及/或提供其它的輸入參數(例如,一或多個額外的係數)。
須瞭解,圖9與圖10A-B僅說明少數幾個說明方式,其中,係數與其它輸入參數可在一或多個32位元的運算元中提供。在其它實施例中,係數與其它輸入參數在一或多個運算元內可選擇性地以各種方式重新安排。仍是在其它實施例中,一或多個移位量與符號反轉控制可選擇性地省略。在其它實施例中,可選擇性地使用較寬或較窄的運算元,諸如,例如,16位元運算元、64位元運算元或類似運算元。此外,欄位不需要由相連的位元序列來構成,反之,可選擇性地使用非相連或分離的位元來表示係數或其它的輸入參數。
例示性核心架構、處理器、及電腦架構
在不同的處理器中,處理器核心可按不同之目的、用不同的方式實施。例如,此等核心之實施可包括:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高性能通用亂序核心;3)意欲主要用於圖形及/或科學(產出量)計算的特殊用途核心。不同處理器的實施可包括:1)包括一或多個意欲用於通用計算之通用循序核心及/或一或多個意欲用於通用計算之通用亂序核心的CPU;以及2)包括一或多個意欲主要用於圖形及/或科 學(產出量)之特殊用途核心的協同處理器。此等不同的處理器導致不同的電腦系統架構,其可包括:1)在與CPU分離之晶片上的協同處理器;2)在與CPU同一封裝內之獨立晶粒上的協同處理器;3)在與CPU同一晶粒上的協同處理器(在此情況中,此等協同處理器有時稱為特殊用途邏輯,諸如整合式圖形及/或科學(產出量)邏輯,或諸如特殊用途核心);以及4)系統單晶片,其可包括位在同一晶粒上之上述的CPU(有時被稱為應用核心或應用處理器)、上述的協同處理器、及附加功能。接下來描述例示性的核心,接在其後的是例示性處理器及電腦架構的描述。
例示性核心架構 循序與亂序核心方塊圖
圖11A的方塊圖說明按照本發明之實施例的例示性循序管線與例示性暫存器更名、亂序發出/執行管線兩者。圖11B的方塊圖說明包括在按照本發明實施例之處理器中之循序架構核心的例示性實施例與例示性暫存器更名、亂序發出/執行架構核心兩者。圖11A-B中的實線框說明循序管線與循序核心,而選用的額外虛線框說明暫存器更名、亂序發出/執行管線與核心。基於循序態樣係亂序態樣的子集,因此將描述亂序態樣。
在圖11A中,處理器管線1100包括提取級1102、長度解碼級1104、解碼級1106、配置級1108、更名級 1110、排程(也稱為調度或發出)級1112、暫存器讀取/記憶體讀取級1114、執行級1116、寫回/記憶體寫入級1118、異常處置級1122、與確認級1124。
圖11B顯示處理器核心1190包括前端單元1130,其耦接至執行引擎單元1150,且兩者都耦接至記憶體單元1170。核心1190可以是精減指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。仍如另一選項,核心1190可以是特殊用途核心,例如,諸如網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或類似物。
前端單元1130包括分支預測單元1132,其耦接至指令快取單元1134,其耦接至指令轉譯後備緩衝區(TLB)1136,其耦接至指令提取單元1138,其耦接至解碼單元1140。解碼單元1140(或解碼器)可解碼指令,並產生諸如一或多個微操作、微碼登錄點、微指令、其它指令、或其它控制信號的輸出,這些係解碼自原始指令,或以其它方式反映或導出自原始指令。解碼單元1140可使用各種不同的機制來實施。適合之機制的例子包括但不限於查找表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等。在一實施例中,核心1190包括微碼ROM或其它媒體,其儲存用於某些微指令的微碼(例如,在解碼單元1140中或在前端單元1130中)。解碼單元1140耦接至執行引擎單元1150中的更名/配置單元 1152。
執行引擎單元1150包括更名/配置單元1152,其耦接至止用單元1154與一組一或多個排程器單元1156。排程器單元1156代表任何數量之不同的排程器,包括保留站、中央指令視窗等。排程器單元1156耦接至實體暫存器檔案單元1158。每一個實體暫存器檔案單元1158代表一或多個實體暫存器檔案,每一個不同的實體暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點、狀態(例如,指令指標,其為下一個要被執行之指令的位址)、等。在一實施例中,實體暫存器檔案單元1158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1158被止用單元1154重疊用以說明其中可實施暫存器更名或亂序執行種之不同的方式(例如,使用重排序緩衝器與止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器映圖與暫存器池等)。止用單元1154與實體暫存器檔案單元1158耦接至執行叢集1160。執行叢集1160包括一組一或多個執行單元1162與一組一或多個記憶體存取單元1164。執行單元1162可對各種不同類型的資料(例如,純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點)實施各種操作(例如,移位、加、減、乘)。雖然一些實施例可包括若干個專用於特定功能 或功能組的執行單元,但其它實施例可包括僅一個執行單元或多個執行單元,其全部用來實施所有的功能。所顯示的排程器單元1156、實體暫存器檔案單元1158、與執行叢集1160可能有複數個,這是因為一些實施例為某些類型的資料/操作建立獨立的管線(例如,純量整數管線、純量浮點/緊縮的整數/緊縮的浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其每一個具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-且在獨立之記憶體存取管線的情況中,一些實施例被實施,其中僅此管線的執行叢集具有記憶體存取單元1164)。亦須瞭解,在使用分離之管線的情況中,這些管線中的一或多個管線可係亂序發出/執行而其它管線則係循序。
記憶體存取單元1164組耦接至記憶體單元1170,其包括資料TLB單元1172耦接至資料快取單元1174再耦接至2階(L2)快取單元1176。在一例示性的實施例中,記憶體存取單元1164可包括載入單元、儲存位址單元、及儲存資料單元,每一個單元都耦接至記憶體單元1170中的資料TLB單元1172。指令快取單元1134進一步耦接至記憶體單元1170中的2階(L2)快取單元1176。L2快取單元1176耦接至一或多個其它階的快取,且最終耦接至主記憶體。
舉例來說,例示性的暫存器更名、亂序發出/執行核心架構可按如下來實施管線1100:1)指令提取1138實施提取長度解碼級1102與1104;2)解碼單元1140實施 解碼級1106;3)更名/配置單元1152實施配置級1108與更名級1110;4)排程器單元1156實施排程級1112;5)實體暫存器檔案單元1158與記憶體單元1170實施暫存器讀取/記憶體讀取級1114;執行叢集1160實施執行級1116;6)記憶體單元1170與實體暫存器檔案單元1158實施寫回/記憶體寫入級1118;7)在異常處置級1122中可包括各種單元;以及8)止用單元1154與實體暫存器檔案單元1158實施確認級1124。
核心1190可支援包括本文所描述之指令的一或多個指令集(例如,x86指令集(含某些延伸,其在較新的版本中已加入);加州Sunnyvale之MIPS Technologies的MIPS指令集;加州Sunnyvale之ARM Holdings的ARM指令集(含選用的附加延伸,諸如NEON))。在一實施例中,核心1190包括用以支援緊縮之資料指令集延伸(例如,AVX1、AVX2)的邏輯,藉此允許由很多多媒體應用程式所使用的操作可使用緊縮資料來實施。
須理解,核心可支援多執行緒(執行兩或多個平行的操作或執行緒組),且可用多種方式來做到,包括時間切割多執行緒、同步多執行緒(其中,單一實體核心為每一個執行緒提供邏輯核心,該實體核心係同步多執行緒),或其的組合(例如,時間分割提取與解碼並於之後同步多執行緒,諸如Intel®的超執行緒技術(Hyperthreading technology))。
雖然是在亂序執行的環境來描述暫存器更名,但須瞭 解,暫存器更名可用於循序架構中。雖然所說明的處理器實施例也包括各自獨立的指令與資料快取單元1134/1174和共享的L2快取單元1176,但替代的的實施例可具有用於指令與資料兩者的單一內部快取記憶體,諸如,例如,1階(L1)內部快取記憶體,或多階的內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體的組合,外部快取記憶體係在核心及/或處理器的外部。或者,所有的快取都可在核心及/或處理器的外部。
特定例示性循序核心架構
圖12A-B說明更特定的例示性循序核心架構的方塊圖,其核心是晶片中之數個邏輯方塊(包括相同類型及/或不同類型的其它核心)的其中之一。邏輯方塊通過高帶寬互連網路(例如,環狀網路)與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯互連,視應用而定。
圖12A的方塊圖係按照本發明之實施例的單處理器核心,連同其與環狀網路1202(晶粒上之互連網路)的連接與其2階(L2)快取1204的本地子集。在一實施例中,指令解碼器1200支援具有緊縮資料指令集延伸的x86指令集。L1快取1206允許進入到純量與向量單元之對快取記憶體的低延遲存取。雖然在一實施例中(為簡化設計),純量單元1208與向量單元1210使用個別的暫存 器組(分別為純量暫存器1212與向量暫存器1214),且它們之間的資料傳送係寫入到記憶體並接著從1階(L1)快取1206中讀回,但本發明的替代實施例可使用不同的方法(例如,使用單一個暫存器組,或包括允許在兩暫存器檔案之間傳送資料的通訊路徑,而不寫入與讀回)。
L2快取1204的本地子集係整體L2快取的一部分,其被分割成分開的本地子集,每個處理器核心一個。每一個處理器核心具有到其本身之L2快取1204本地子集的直接存取路徑。藉由處理器核心所讀取的資料被儲存在其L2快取子集1204中,且可被快速地存取,與其它處理器核心平行存取其本身的本地L2快取子集。處理器核心所寫的資料被儲存在其本身的本地L2快取子集中,且如有需要,清除其它子集中的此資料。環狀網路確保共享資料的一致性。環狀網路係為雙向以允許代理,諸如處理器核心、L2快取、及其它邏輯方塊以在晶片內彼此通訊。每一環狀資料徑在每個方向為1012位元寬。
圖12B係按照本發明之實施例,圖12A中之處理器核心的部分展開圖。圖12B包括L1快取1204的L1資料快取1206A部分,以及關於向量單元1210及向量暫存器1214的更多細節。特別是,向量單元1210係16位元寬的向量處理單元(VPU)(見16位元寬ALU 1228),其執行一或多個整數、單精度浮點、及雙精度浮點指令。VPU支援以攪拌單元1220攪拌暫存器的輸入,以數值轉 換單元1222A-B做數值轉換,及以複製單元1224複制在記憶體的輸入上。寫入遮罩暫存器1226允許預測所得到的向量寫入。
具有整合式記憶體控制器與圖形的處理器
圖13係按照本發明之實施例之處理器1300的方塊圖,其具有一個以上的核心,可具有整合式記憶體控制器、且可具有整合式圖形。圖13中的實線方塊說明處理器1300具有單核心1302A、系統代理1310、一組一或多個匯流排控制器單元1316,而選用的附加虛線方塊說明替代的處理器1300,具有多個核心1302A-N、系統代理單元1310中的一組一或多個整合式記憶體控制器單元1314,以及特殊用途邏輯1308。
因此,處理器1300之不同的實施可包括:1)CPU,具有為整合式圖形及/或科學(產出量)邏輯(其可包括一或多個核心)的特殊用途邏輯1308,以及為一或多個通用核心(例如,通用循序核心、通用亂序核心、或兩者組合)的核心1302A-N;2)協同處理器,具有意欲主要用於圖形及/或科學(產出量)之大量特殊用途核心的核心1302A-N;以及,3)協同處理器,具有為大量通用循序核心的核心1302A-N。因此,處理器1300可以是通用處理器、協同處理器或特殊用途處理器諸如,例如,網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(general purpose graphics processing unit; GPGPU)、高產出量多重整合式核心(MIC)協同處理器(包括30個或更多的核心)、內嵌式處理器、或類似物。處理器可在一或多個晶片上實施。處理器1300可以是一或多片基板的一部分及/或使用許多處理技術其中任何技術諸如,例如,BiCMOS、CMOS、或NMOS在該一或多基板上實施。
記憶體階層包括核心內的一或多階快取、一組一或多個共用快取單元1306、以及耦接至整合式記憶體控制器單元1314組的外部記憶體(未顯示)。共用快取單元1306組可包括一或多個中階快取,諸如2階(L2)、3階(L3)、4階(L4)、或其它階快取、末階快取(LLC)、及/或其組合。雖然在一實施例中以環狀式互連單元1312來互連特殊用途邏輯1308、共用快取單元1306組、及系統代理單元1310/整合式記憶體控制器單元1314,但替代的實施例可使用許多習知技術來互連這些單元。在一實施例中,一或多個快取單元1306與核心1302A-N之間保持一致性。
在一些實施例中,一或多個核心1302A-N具有多執行緒能力。系統代理1310包括這些協調與操作核心1302A-N的組件。系統代理單元1310可包括例如電力控制單元(PCU)與顯示單元。PCU可係或包括調節核心1302A-N與特殊用途邏輯1308之電力狀態所需的邏輯與組件。顯示單元用於驅動一或多外部連接的顯示器。
就架構指令集而言,核心1302A-N可以是同質或異 質的;亦即,兩或多個核心1302A-N有能力執行相同的指令集,而其它的核心則僅有能力執行該指令集的子集或不同的指令集。
例示性電腦架構
圖14-21係例示性電腦架構的方塊圖。習知技術中用於膝上型電腦、桌上型電腦、手持式PC、個人數位式助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放機、手持式裝置、及各式各樣其它電子裝置的其它系統設計與組構也都適用。通言之,有能力結合如本文所揭示之處理器及/或其它執行邏輯的各種系統或電子裝置也一體適用。
現參閱圖14,圖中顯示按照本發明一實施例之系統1400的方塊圖。系統1400可包括耦接至控制器集線器1420的一或多個處理器1410、1415。在一實施例中,控制器集線器1420包括圖形記憶體控制器集線器(GMCH)1490與輸入/輸出集線器(IOH)1450(其可以在個別的晶片上);GMCH 1490包括記憶體與圖形控制器,記憶體1440與協同處理器1445與其耦接;IOH 1450將輸入/輸出(I/O)裝置1460耦接至GMCH 1490。或者,記憶體與圖形控制器其中之一或兩者都整合在處理器內(如本文之描述),記憶體1440與協同處理器1445直 接耦接至處理器1410,且控制器集線器1420與IOH 1450位在單晶片中。
附加處理器1415的選用性質在圖14中以虛線指示。每一個處理器1410、1415可包括本文所描述的一或多個處理器核心,且可以是處理器1300的某些版本。
記憶體1440例如是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或該兩種的組合。關於至少一實施例,控制器集線器1420經由多點匯流排與處理器1410、1415通訊,該多點匯流排諸如前端匯流排(FSB)、點對點介面,諸如快速通道互連(QPI),或類似的連接1495。
在一實施例中,協同處理器1445係特殊用途處理器,諸如,例如,高產出量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似物。在一實施例中,控制器集線器1420可包括整合式圖形加速器。
就度量一系列優點而論,處理器1410、1415之間有各種差異,該度量包括架構、微架構、熱、功耗特性等。
在一實施例中,處理器1410執行的指令用來控制通用類型之資料處理操作。協同處理器指令可內嵌在該等指令內。處理器1410識別這些協同處理器指令係應由附屬之協同處理器1445來執行的類型。於是,處理器1410在協同處理器匯流排或其它互連上將這些協同處理器指令(或代表協同處理器指令的控制信號)發送給協同處理器 1445。協同處理器1445接受並執行所接收的協同處理器指令。
現參閱圖15,圖中顯示的方塊圖係按照本發明實施例之第一更特定的例示性系統1500。如圖15所示,多處理器系統1500係點對點互連系統,且包括經由點對點互連1550耦接的第一處理器1570與第二處理器1580。處理器1570與1580每一個皆是處理器1300的某版本。在本發明的一實施例中,處理器1570與1580分別是處理器1410與1415,而共處理器1538係協同處理器1445。在另一實施例中,處理器1570與1580分別是處理器1410與協同處理器1445。
所顯示的處理器1570與1580分別包括整合式記憶體控制器(IMC)單元1572與1582。處理器1570也包括做為其一部分的匯流排控制器單元點對點(P-P)介面1576與1578;同樣地,第二處理器1580包括P-P介面1586與1588。處理器1570、1580可使用P-P介面電路1578、1588經由點對點(P-P)介面1550互換資訊。如圖15所示,IMC 1572與1582將處理器耦接至各自的記憶體,即記憶體1532與記憶體1534,其可以是主記憶體的一部分,其局部地附接到各自的處理器。
處理器1570與1580每一個都可使用點對點介面電路1576、1594、1586、1598經由各自的P-P介面1552、1554與晶片組1590交換資訊。晶片組1590可經由高性能介面1539與共處理器1538選擇性地交換資訊。在一實 施例中,共處理器1538係特殊用途處理器,諸如,例如,高產出MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似物。
共享快取(未顯示)可包括在處理器內或兩處理器的外部,仍經由點對點互連與處理器連接,使得如果處理器被置於低電力模式,則其中之一或兩個處理器的本地快取資訊可儲存在共享快取中。
晶片組1590可經由介面1596耦接至第一匯流排1516。在一實施例中,第一匯流排1516可以是周邊組件互連(PCI)匯流排,或諸如PCI Express匯流排或其它第三代I/O互連匯流排的匯流排,然而本發明的範圍不限於此。
如圖15所示,各種的I/O裝置1514連同將第一匯流排1516耦接至第二匯流排1520的匯流排橋接器1518可耦接至第一匯流排1516。在一實施例中,一或多個附加的處理器1515,諸如協同處理器、高產出MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理器(DSP)單元)、現場可程式閘極陣列、或任何其它的處理器都可耦接至第一匯流排1516。在一實施例中,第二匯流排1520可以是低接腳數(LPC)匯流排。各種不同的裝置可耦接至第二匯流排1520,在一實施例中,例如,包括鍵盤及/或滑鼠1522、通訊裝置1527與儲存單元1528,諸如磁碟機或可包括指令/碼與資料1530的其它大量儲存裝置。此外,音頻I/O 1524也可耦接至第二匯 流排1520。須注意,也可以是其它的架構。例如,系統可實施多點連接匯流排或其它此類的架構來取代圖15的點對點架構。
現參閱圖16,圖中顯示的方塊圖按照本發明之實施例之第二更特定的例示性系統1600。圖15與16中相同的元件使用相同的參考數字,且為了避免糢糊圖16的其它態樣,圖16省略了圖15中的某些態樣。
圖16說明的處理器1570、1580分別包括整合式記憶體與I/O控制邏輯(“CL”)1572與1582。因此,CL 1572、1582包括整合式記憶體控制器單元且包括I/O控制邏輯。圖16說明不僅記憶體1532、1534耦接至CL 1572、1582,且I/O裝置1614也耦接至控制邏輯1572、1582。舊有的I/O裝置1615耦接至晶片組1590。
現參閱圖17,圖中顯示按照本發明實施例之SoC 1700的方塊圖。與圖13中類似的元件使用相同的參考數字。此外,虛線方塊係在更先進之SoC上選用的特徵。在圖17中,互連單元1702耦接至:包括一組一或多個核心162A-N與共用快取單元1306的應用處理器1710;系統代理單元1310;匯流排控制器單元1316;整合式記憶體控制器單元1314;一組一或多個共處理器1720,其可包括整合式圖形邏輯、影像處理器、音頻處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元1730;直接記憶體存取(DMA)單元1732;及用於耦接一或多台外部顯示器的顯示單元1740。在一實施例中,共處理器1720 包括特殊用途處理器,諸如,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產出MIC處理器、內嵌式處理器、或類似物。
本文所揭示之機制的實施例可在硬體、軟體、韌體、或這些實施方法的組合中實施。本發明的實施例可實施為電腦程式或程式碼,其可在包含至少一個處理器、儲存系統(包括揮發性與非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置的可程式系統上執行。
程式碼,諸如圖15中說明的碼1530,可施加於輸入指令以實施本文所描述的功能,並產生輸出資訊。輸出資訊可按習知的方式施加於一或多個輸出裝置。基於此應用之目的,處理系統包括任何具有處理器的系統,諸如,例如,數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可在高階程序或物件導向程式語言中實施,以與處理系統通訊。如有需要,程式碼也可在組合或機器語言中實施。事實上,本文所描述的機制不限於任何特定程式語言的範圍。無論如何,該語言係可被編譯或解譯的語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體中的代表指令來實施,其代表處理器內的各種邏輯,當這些指令被機器讀取時,致使機器製造用以實施本文所描述之技術的邏輯。這些表示法是習知的"IP核心", 可儲存在有形的機器可讀取媒體上,並供應給各不同的客戶或製造工廠,用以載入到實際製造邏輯或處理器的製造機器內。
此機器可讀取媒體可包括但不限於藉由機器或裝置所製造或形成之物件的非暫時性有形配置,包括諸如硬式磁碟機的儲存媒體,任何其它類型的碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAMs)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡;或適合儲存電子指令之任何其它類型的媒體。
因此,本發明之實施例也包括非暫時性有形機器可讀取媒體,其內包含指令或包含設計資料,諸如硬體描述語言(Hardware Description Language;HDL),其定義本文所描述的結構、電路、裝置、處理器、及/或系統特徵。這些實施例也稱為程式產品。
仿真(包括二進制轉譯、碼變形等)
在某些情況中,可用指令轉換器將指令從源指令集轉換到目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、變 形、仿真、或以其它方式將指令轉換成能被核心處理的一或多種其它指令。指令轉換器可在軟體、硬體、韌體、或其組合中實施。指令轉換器可在處理器上、處理器外、或部分在處理器上而部分在處理器外。
圖18的方塊圖係按照本發明之實施例,對照使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集中之二進制指令。在說明的實施例中,指令轉換器係軟體指令轉換器,但可替代地以軟體、韌體、硬體、或其各種組合來實施指令轉換器。圖18顯示,可使用x86編譯器1804來編譯高階語言1802的程式,以產生可被具有至少一個x86指令集核心1816之處理器原生執行的x86二進制碼1806。具有至少一個x86指令集核心1816的處理器代表可實質地實施與具有至少一個x86指令集核心之英代爾處理器相同功能的任何處理器,其為了獲致與具有至少一個x86指令集核心之英代爾處理器實質相同的結果,藉由相容地執行或以其它方式處理(1)英代爾x86指令集核心之指令集的實質部分,或(2)以在具有至少一個x86指令集核心之英代爾處理器上運行為目標之應用程式或其它軟體的目的碼版本。x86編譯器1804代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心1816之處理器上執行的x86二進制碼1806(例如目標碼)。同樣地,圖18顯示高階語言1802的程式可使用替代的指令集編譯器1808來編譯,以產生可被不具有至少一個x86指令集核心1814之 處理器(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集之處理器)原生執行之替代的指令集二進制碼1810。指令轉換器1812被用來將x86二進制碼1806轉換成可被無x86指令集核心1814之處理器原生執行的碼。此經轉換的碼不太可能與替代的指令集二進制碼1810相同,原因是具有如此執行的能力的指令轉換器很難生產;不過,經轉換的碼將可完成一般的操作,並從替代的指令集組成指令。因此,指令轉換器1812代表軟體、韌體、硬體、或其組合,透過仿真、模擬、或任何其它處理,允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼1806。
圖4-10及表1-2其中任意者所描述的組件、特徵、及細節也可選擇性地應用於圖2-3其中任意者。此外,為任一設備所描述的組件、特徵、及細節,也可選擇性地應用於實施例中藉由及/或以這些設備所實施的任何方法。本文所描述的任何處理器可包括在本文所揭示的任何系統中(例如,圖14-17)。在一些實施例中,電腦系統可包括互連,與互連耦接的處理器,以及與互連耦接的動態隨機存取記憶體(DRAM)。或者,也可使用不需要刷新之其它類型的揮發性記憶體來取代DRAM,或可使用快閃記憶體。
在實施方式與申請專利範圍中使用術語“耦接”及/或“連接”及其衍生字。這些術語彼此間並無意成為同義字。 反之,在實施例中,“連接”可用來指示兩或多個元件彼此直接實體及/或電接觸。“耦接”可意指兩或多個元件彼此直接實體及/或電接觸。不過,“耦接”也可意指兩或多個元件彼此不直接接觸,但仍彼此合作或交互作用。例如,執行單元可與暫存器及/或解碼單元經由一或多個中介組件來耦接。在這些圖中,使用箭頭來顯示連接與耦接。
文中也使用到術語“及/或”。本文中使用的術語“及/或”意指非此即彼或兩者(例如,A及/或B意指A或B,或A與B兩者)。
在以上的描述中,為了提供對實施例透徹的瞭解已陳述了特定的細節,但實行其它的實施例不用這些特定的細節之若干者。本發明之範圍並非由以上提供的特定實施例而是由以下的申請專利範圍來決定。為了避免糢糊了對本描述的瞭解,在其它例中,習知的電路、結構、裝置、及操作以方塊圖的形式來顯示及/或不陳述細節。參考數字或參考數字之尾部重複於各圖之間用以指示對應或類似的元件視為恰當,除非另外指定或明確可見,否則,這些元件可選擇性地具有類似或相同的特性。
某些操作可藉由硬體組件來實施,或可具體化成機器可執行或電路可執行的指令,其用來致使及/或導致以指令所程式化的機器、電路、或硬體組件(例如,處理器、部分的處理器、電路、等)實施操作。這些操作也可選擇性地藉由硬體與軟體的組合來實施。處理器、機器、電路、或硬體可包括指定或特定的電路或其它邏輯(例如, 硬體可與韌體及/或軟體結合)被操作來執行及/或處理指令及儲存回應該指令的結果。
一些實施例包括製造的物件(例如,電腦程式產品),其包括機器可讀取媒體。媒體包括用以提供(例如,儲存)其形式為可被機器讀取之資訊的機制。機器可讀取媒體可提供或其上儲存有指令或指令的序列,如果及/或當其被機器執行時,可被操作來致使機器實施及/或導致機器實施一或多項操作、方法、或本文所揭示的技術。
在一些實施例中,機器可讀取媒體可包括非暫時性機器可讀取儲存媒體。例如,非暫時性機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式ROM(PROM)、可抹除可程式唯讀記憶體(EPROM)、電可抹除可程式唯讀記憶體(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫時性記憶體、非暫時性資料儲存裝置、或類似裝置。非暫時性機器可讀取儲存媒體不包含暫時性的傳播信號。在一些實施例中,儲存媒體包括有形的媒體,其包括固態物質。
適合之機器的例子包括但不限於通用處理器、特殊用途處理器、數位邏輯電路、積體電路、或類似物。仍其它適合之機器的例子包括電腦系統或包括有處理器、數位邏 輯電路、或積體電路的其它電子裝置。這些電腦系統或電子裝置的例子包括但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、聯網小筆電、智慧型電話、手機、伺服器、網路裝置(例如,路由器與交換機)、行動網際網路裝置(MID)、媒體播放機、智慧型電視、簡易桌機、機上盒、及遊戲機控制器。
本說明書從頭到尾參考例如“一實施例”、“實施例”、“一或多個實施例”、“一些實施例”意指可能包括在本發明之實作中的特定特徵但非必要。同樣地,須瞭解,基於使本揭示順暢及有助於瞭解各不同發明態樣之目的,所描述的各種不同特徵有時可群組在單一個實施例、圖式、或關於其描述中。不過,不能將所揭示的此方法解釋成反映本發明需要比每一申請專利範圍所明確敘述之更多特徵的意圖。反之,如以下申請專利範圍所反映,本發明之態樣在於比單一揭示之實施例的所有特徵少。因此,接在實施方式之後的申請專利範圍特此明確地併入此實施方式中,且就每一申請項的本身來說都是本發明的獨立實施例。
例示的實施例
以下的例子屬於進一步的實施例。各例中的細節可用於一或多個實施例的各處中。
例1係處理器或其它設備,其包括解碼單元,用以解碼緊縮有限脈衝響應(FIR)濾波器指令。緊縮FIR濾波器指令用以指示一或多個源緊縮資料運算元、複數個FIR 濾波器係數、以及目的地儲存位置。一或多個源緊縮資料運算元包括第一數量的資料元素與第二數量的附加資料元素,第二數量比FIR濾波器分接頭的數量少一。處理器也包括與解碼單元耦接的執行單元。執行單元回應解碼單元解碼的緊縮FIR濾波器指令,在目的地儲存位置中儲存結果緊縮資料運算元。結果緊縮資料運算元包括第一數量之經FIR濾波的資料元素,每一個經FIR濾波的資料元素係基於複數個FIR濾波器係數與來自一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於FIR濾波器分接頭的數量。
例2選擇性地包括例1的處理器,其中,解碼單元解碼指令,其指示第一源緊縮資料運算元具有橫跨第一源緊縮資料運算元整個寬度之第一數量的資料元素,以及指示第二源緊縮資料運算元具有群聚在第二源緊縮資料運算元之一端之第二數量的附加資料元素。
例3包括例1的處理器,其中,執行單元儲存結果緊縮資料運算元,其中每一個經FIR濾波的資料元素係基於該等乘積的組合,其中,資料元素之不同對應組的每一個資料元素被乘以不同的FIR濾波器係數。
例4包括例1的處理器,其中,執行單元儲存結果緊縮資料運算元,其中每一個經FIR濾波的資料元素係基於該等乘積的組合,其中,資料元素之不同對應組之至少兩個資料元素的每一個被乘以相同FIR濾波器係數。
例5包括例1的處理器,其中,解碼單元解碼指令, 其指示複數個符號值。執行單元儲存結果緊縮資料運算元,其中的每一個經FIR濾波的資料元素係基於乘積的組合,其中,對與相同FIR濾波器係數相乘之至少兩個資料元素中之第一者的乘積施加複數個符號值中的符號值以使其變負。對與相同FIR濾波器係數相乘之至少兩個資料元素中之第二者的乘積不施加複數個符號值中的符號值來使其變負。
例6包括例1的處理器,其中,解碼單元解碼指令,其指示數量等於FIR濾波器分接頭之數量的符號值。執行單元儲存結果緊縮資料運算元,其中的每一個經FIR濾波的資料元素係基於該等乘積的組合,該等乘積的每一個乘積被施加該等符號值之中一個不同。
例7包括例1的處理器,其中,結果緊縮資料運算元中之最低與最高有效經FIR濾波之資料元素其中之一係基於複數個FIR濾波器係數與資料元素之不同對應組之乘積的組合,其由第一源緊縮資料運算元中之最低與最高有效資料元素該其中之一之FIR濾波器分接頭的數量組成。
例8包括例1的處理器,其中,結果緊縮資料運算元中之最低與最高有效經FIR濾波之資料元素其中之一係基於複數個FIR濾波器係數與資料元素之不同對應組之乘積的組合,其由第一源緊縮資料運算元中位於最低與最高有效偶位置之資料元素該其中之一之FIR濾波器分接頭的數量組成。
例9包括例8的處理器,其中,結果緊縮資料運算元 中鄰接於最低與最高有效經FIR濾波之資料元素該其中之一之經FIR濾波之資料元素係基於複數個FIR濾波器係數與資料元素之不同對應組之乘積的組合,該資料元素之不同對應組由第一源緊縮資料運算元中位於最低與最高有效奇位置之資料元素該其中之一之FIR濾波器分接頭的數量組成。
例10包括例1的處理器,其中,至少一個FIR濾波器係數被用於兩個FIR濾波器分接頭,且其中,執行單元包含許多乘法器,其數量不超過FIR濾波器係數之數量乘以第一數量與第二數量之和的乘積。
例11包括例1的處理器,其中,執行單元儲存結果緊縮資料運算元,其中的複數個經FIR濾波的資料元素係基於FIR濾波器係數與一或多個源緊縮資料運算元之特定資料元素的單一個乘積,其重複用於複數個經FIR濾波之資料元素的每一個,且該單一個乘積係重複使用而不係藉由乘法來多次產生。
例12包括例1的處理器,其中,執行單元包括給定的乘法器,其將FIR濾波器係數乘以一或多個源緊縮資料運算元的資料元素以產生乘積。執行單元儲存複數個經FIR濾波的資料元素,其每一個係基於乘積與乘積之負數的組合。
例13包括例1的處理器,其中,緊縮FIR濾波器指令具有運算碼,其指示使用對稱與半對稱組構的其中之一來產生複數個FIR濾波器係數與資料元素之每一個不同對 應組的乘積。
例14包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其指示具有少於16位元之浮點格式的複數個FIR濾波器係數。
例15包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其指示至少3個FIR濾波器係數,但少於第一數量。
例16包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其指示至少4個FIR濾波器係數,但少於第一數量。
例17包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其指示具有FIR濾波器係數的運算元。每一個FIR濾波器係數將被儲存在與運算元之邊界對齊的不同位元組中。
例18包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其具有立即運算元用以提供複數個FIR濾波器係數,或用以指示儲存複數個FIR濾波器係數的純量暫存器。
例19包括例1至13其中任一例的處理器,其中,解碼單元解碼指令,其指示一移位量。執行單元儲存結果緊縮資料運算元,其中的每一個經FIR濾波的資料元素係基於根據移位量移位乘積的組合。
例20係處理器中的方法,包括接收緊縮有限脈衝響應(FIR)濾波器指令。緊縮FIR濾波器指令指示一或多 個源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置。一或多個源緊縮資料運算元包括第一數量的資料元素與第二數量的附加資料元素,第二數量比FIR濾波器分接頭的數量少一。該方法也包括回應緊縮FIR濾波器指令,在目的地儲存位置中儲存結果緊縮資料運算元。結果緊縮資料運算元包括第一數量之經FIR濾波的資料元素。每一個經FIR濾波的資料元素係基於複數個FIR濾波器係數與來自一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於FIR濾波器分接頭的數量。
例21包括例20的方法,其中,接收包括接收用以指示每一個都具有少於12位元浮點格式之複數個FIR濾波器係數的指令之接收。
例22包括例20至21其中任一例的方法,其中,接收包含接收用以指示運算元具有每一個FIR濾波器係數都在與運算元邊界對齊之不同位元組中的指令之接收。
例23包括例20至22其中任一例的方法,其中,接收包含指令的接收,該指令用以指示第一源緊縮資料運算元具有橫跨第一源緊縮資料運算元整個寬度之第一數量的資料元素,以及指示第二源緊縮資料運算元具有群聚在第二源緊縮資料運算元之一端之第二數量的附加資料元素。
例24包括例20至22其中任一例的方法,其中,儲存包括結果緊縮資料運算元之儲存,其中,每一個經FIR濾波的資料元素係基於乘積的組合,其中,資料元素之不 同對應組的兩資料元素每一個都與相同的FIR濾波器係數相乘。
例25包括例20至22其中任一例的方法,其中,儲存包括結果緊縮資料運算元之儲存,其中,每一個經FIR濾波的資料元素係基於乘積的組合,其中,資料元素之不同對應組之兩資料元素的每一個都與相同的FIR濾波器係數相乘,但兩乘積僅其中一個變為負。
例26包括用以處理指令的系統,其包括互連及與互連耦接的處理器。處理器接收緊縮有限脈衝響應(FIR)濾波器指令,其指示第一源緊縮資料運算元、第二源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置。第一源緊縮資料運算元包括第一數量的資料元素,及第二源緊縮資料運算元包括第二數量的附加資料元素,第二數量比FIR濾波器分接頭的數量少一。FIR濾波器係數的數量少於第一與第二數量的資料元素,且每一個FIR濾波器係數具有的位元數少於每一個資料元素。處理器回應緊縮FIR濾波器指令,在目的地儲存位置中儲存結果緊縮資料運算元。結果緊縮資料包括第一數量之經FIR濾波的資料元素。每一個經FIR濾波的資料元素係基於複數個FIR濾波器係數與來自一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於FIR濾波器分接頭的數量。系統也包括與互連耦接的動態隨機存取記憶體(DRAM)。
例27包括例26的系統,其中,每一個係數少於8位 元,且係被儲存在藉由緊縮FIR濾波器指令所指示之運算元的不同位元組中。每一個係數可選擇性地具有浮點格式。
例28係製造的物件,其包括非暫時性機器可讀取儲存媒體,非暫時性機器可讀取儲存媒體儲存:緊縮有限脈衝響應(FIR)濾波器指令。緊縮FIR濾波器指令用以指示第一源緊縮資料運算元、第二源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置。第一源緊縮資料運算元具有第一數量的資料元素,及第二源緊縮資料運算元具有第二數量的附加資料元素,第二數量比FIR濾波器分接頭的數量少一。FIR濾波器係數的數量少於第一與第二數量的資料元素,且每一個FIR濾波器係數具有的位元少於每一個資料元素。緊縮FIR濾波器指令如果被機器執行,可致使機器實施的操作包括在目的地儲存位置中儲存結果緊縮資料。結果緊縮資料包括第一數量之經FIR濾波的資料元素。每一個經FIR濾波的資料元素係基於複數個FIR濾波器係數與來自一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於FIR濾波器分接頭的數量。
例29包括例28之製造的物件,其中,每一個係數少於8位元,且將被儲存在藉由緊縮FIR濾波器指令所指示之運算元的不同位元組中。每一個係數可選擇性地具有浮點格式。
例30係用來實施或操作以實施例20至25其中任一 例方法的處理器或其它設備。
例31係處理器或其它設備,其包括用於實施例20至25其中任一例之方法的機構。
例32係處理器,其包括用於實施例20至25其中任一例之方法之模組及/或單元及/或邏輯及/或電路及/或機構的任何組合。
例33係製造的物件,其包括選用的非暫時性機器可讀取媒體,其選擇性地儲存或以其它方式提供指令,這些指令如果及/或當被處理器執行時,電腦系統、電子裝置、或其它機器被操作來致使機器實施例20至25其中任一例的方法。
例34係包括匯流排或其它互連的電腦系統或其它電子裝置,例1至19其中任一例的處理器與互連耦接,且與互連耦接的一或多個組件選擇自選用的動態隨機存取記憶體(DRAM)、選用的靜態RAM、選用的快閃記憶體、選用的圖形控制器或晶片、選用的視訊卡、選用的無線通訊晶片、選用的無線收發器、選用的全球行動通訊系統(GSM)天線、選用的協同處理器(例如,CISC協同處理器)、選用的音頻裝置、選用的音頻輸入裝置、選用的音頻輸出裝置、選用的視訊輸入裝置(例如,視訊攝影機)、選用的網路介面、選用的通訊介面、選用的長效記憶體(例如,選用的相變記憶體、憶阻器等)、及其組合。
例35係實質如本文所描述的處理器或其它設備。
例36係操作來實施實質如本文所描述之任何方法的處理器或其它設備。
例37係用來實施(例如,具有用來實施或操作來實施的組件)實質如本文所描述之FIR濾波器指令的處理器或其它設備。
例38包括電腦系統或其它電子裝置,其包括的處理器具有解碼單元用以解碼第一指令集的指令。處理器也具有一或多個執行單元。電子裝置也包括與處理器耦接的儲存裝置。儲存裝置用來儲存緊縮FIR濾波器指令,其為第二指令集的緊縮FIR濾波器指令。儲存裝置也儲存用來將緊縮FIR濾波器指令轉換成第一指令集之一或多個指令的指令。第一指令集的一或多個指令當被處理器執行時,其致使處理器儲存由緊縮FIR濾波器指令所指定的結果。
例39的處理器包括例1的處理器,包括用以預測分支的分支預測單元、與分支單元耦接用來提取包括緊縮FIR濾波器指令之指令的指令提取單元、與指令提取單元耦接的1階(L1)指令快取記憶體,L1指令快取記憶體用於儲存指令,L1資料快取記憶體用於儲存資料、用於儲存資料與指令的2階(L2)快取記憶體;指令提取單元與解碼單元、L1指令快取記憶體、及L2快取耦接,用以從L1指令快取記憶體與L2快取記憶體其中之一提取緊縮FIR濾波器指令,並將緊縮FIR濾波器指令提供給解碼單元,暫存器更名單元用以更名暫存器,排程器用以排程為執行而解碼自緊縮FIR濾波器指令的一或多項操作,及提 交單元。
1130‧‧‧前端單元
1190‧‧‧處理器核心
1132‧‧‧分支預測單元
1134‧‧‧指令快取單元
1136‧‧‧指令轉譯後備緩衝區
1138‧‧‧指令提取單元
1140‧‧‧解碼單元
1150‧‧‧執行引擎單元
1152‧‧‧更名/配置單元
1154‧‧‧止用單元
1156‧‧‧排程器單元
1158‧‧‧實體暫存器檔案單元
1160‧‧‧執行叢集
1162‧‧‧執行單元
1164‧‧‧記憶體存取單元
1170‧‧‧記憶體單元
1172‧‧‧資料TLB單元
1174‧‧‧資料快取單元
1176‧‧‧2階(L2)快取單元

Claims (25)

  1. 一種處理器,包含:解碼單元,用以解碼緊縮有限脈衝響應(FIR)濾波器指令,該緊縮FIR濾波器指令用以指示一或多個源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置,該一或多個源緊縮資料運算元包括第一數量的資料元素與第二數量的附加資料元素,該第二數量比FIR濾波器分接頭的數量少一;以及執行單元,與該解碼單元耦接,該執行單元回應於由該解碼單元解碼的該緊縮FIR濾波器指令,用以在該目的地儲存位置中儲存結果緊縮資料運算元,該結果緊縮資料運算元包括該第一數量之經FIR濾波的資料元素,每一個該經FIR濾波的資料元素係基於該複數個FIR濾波器係數與來自該一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於該FIR濾波器分接頭的數量。
  2. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示第一源緊縮資料運算元具有橫跨該第一源緊縮資料運算元整個寬度之該第一數量的資料元素,以及指示第二源緊縮資料運算元具有群聚在該第二源緊縮資料運算元之一端之該第二數量的附加資料元素。
  3. 如申請專利範圍第1項之處理器,其中,該執行單元儲存該結果緊縮資料運算元,其中,每一個該經FIR濾波的資料元素係基於該等乘積的該組合,其中,該等資 料元素之該不同對應組的每一個資料元素被乘以一個不同的該FIR濾波器係數。
  4. 如申請專利範圍第1項之處理器,其中,該執行單元儲存該結果緊縮資料運算元,其中,每一個該經FIR濾波的資料元素係基於該等乘積的該組合,其中,該等資料元素之該不同對應組之至少兩個資料元素的每一個被乘以相同的FIR濾波器係數。
  5. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示複數個符號值,且其中,該執行單元儲存該結果緊縮資料運算元,其中的每一個該經FIR濾波的資料元素係基於該等乘積的該組合,其中,對與該相同FIR濾波器係數相乘之該至少兩個資料元素中之第一者的乘積施加該複數個符號值中的符號值以使其變負,但對與該相同FIR濾波器係數相乘之該至少兩個資料元素中之第二者的乘積不施加該複數個符號值中的符號值來使其變負。
  6. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示數量等於該FIR濾波器分接頭之數量的符號值,且其中,該執行單元儲存該結果緊縮資料運算元,其中的每一個該經FIR濾波的資料元素係基於該等乘積的組合,該等乘積中的每一個被施加該等符號值之中一個不同值。
  7. 如申請專利範圍第1項之處理器,其中,該結果緊縮資料運算元中之最低與最高有效經FIR濾波之資料元 素其中之一係基於該複數個FIR濾波器係數與資料元素之該不同對應組之該乘積的該組合,其由第一源緊縮資料運算元中之該最低與該最高有效資料元素其中之該一之該FIR濾波器分接頭的該數量組成。
  8. 如申請專利範圍第1項之處理器,其中,該結果緊縮資料運算元中之最低與最高有效經FIR濾波之資料元素其中之一係基於該複數個FIR濾波器係數與資料元素之該不同對應組之該乘積的該組合,其由第一源緊縮資料運算元中位於該最低與該最高有效偶位置之資料元素之該其中之一之該FIR濾波器分接頭的該數量組成。
  9. 如申請專利範圍第1項之處理器,其中,至少一個FIR濾波器係數被用於兩個該FIR濾波器分接頭,且其中該執行單元包含許多乘法器,其數量不超過該FIR濾波器係數之數量乘以該第一數量與該第二數量之和的乘積。
  10. 如申請專利範圍第1項之處理器,其中,該執行單元儲存該結果緊縮資料運算元,其中的複數個該經FIR濾波的資料元素係基於FIR濾波器係數與該一或多個源緊縮資料運算元之特定資料元素的單一個乘積,其重複用於該複數個該經FIR濾波之資料元素的每一個,且該單一個乘積係重複使用而不係藉由乘法來多次產生。
  11. 如申請專利範圍第1項之處理器,其中,該執行單元包括給定的乘法器,其將FIR濾波器係數乘以該一或多個源緊縮資料運算元的資料元素以產生乘積,且其中,該執行單元儲存複數個該經FIR濾波的資料元素,其每一 個係基於該乘積與該乘積之負數的組合。
  12. 如申請專利範圍第1項之處理器,其中,該緊縮FIR濾波器指令具有運算碼,其指示使用對稱與半對稱組構的其中之一來產生該複數個FIR濾波器係數與資料元素之每一個該不同對應組的該乘積。
  13. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示具有少於16位元之浮點格式的該複數個FIR濾波器係數。
  14. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示具有該FIR濾波器係數的運算元,且其中,每一個該FIR濾波器係數被儲存在與該運算元之邊界對齊的不同位元組中。
  15. 如申請專利範圍第1項之處理器,其中,該解碼單元解碼該指令,其指示一移位量,且其中,該執行單元儲存該結果緊縮資料運算元,其中的每一個該經FIR濾波的資料元素係基於根據該移位量移位該等乘積的該組合。
  16. 一種處理器中的方法,包含:接收緊縮有限脈衝響應(FIR)濾波器指令,該緊縮FIR濾波器指令指示一或多個源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置,該一或多個源緊縮資料運算元包括第一數量的資料元素與第二數量的附加資料元素,該第二數量比FIR濾波器分接頭的數量少一;以及回應該緊縮FIR濾波器指令,在該目的地儲存位置中 儲存結果緊縮資料運算元,該結果緊縮資料運算元包括該第一數量之經FIR濾波的資料元素,每一個該經FIR濾波的資料元素係基於該複數個FIR濾波器係數與來自該一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於該FIR濾波器分接頭的數量。
  17. 如申請專利範圍第16項之方法,其中,接收包含用以指示每一個都具有少於12位元浮點格式之該複數個FIR濾波器係數的該指令之接收。
  18. 如申請專利範圍第16項之方法,其中,接收包含用以指示運算元具有每一個該FIR濾波器係數都在與該運算元邊界對齊之不同位元組中的該指令之接收。
  19. 如申請專利範圍第16項之方法,其中,接收包含該指令的接收,該指令用以指示第一源緊縮資料運算元具有橫跨該第一源緊縮資料運算元整個寬度之該第一數量的資料元素,以及指示第二源緊縮資料運算元具有群聚在該第二源緊縮資料運算元之一端之該第二數量的附加資料元素。
  20. 如申請專利範圍第16項之方法,其中,儲存包含儲存該結果緊縮資料運算元之儲存,其中,每一個該經FIR濾波的資料元素係基於該等乘積的該組合,其中,該資料元素之該不同對應組之兩資料元素的每一個都與相同的FIR濾波器係數相乘。
  21. 如申請專利範圍第16項之方法,其中,儲存包含該結果緊縮資料運算元之儲存,其中,每一個該經FIR 濾波的資料元素係基於該等乘積的該組合,其中,該資料元素之該不同對應組之兩資料元素的每一個都與相同的FIR濾波器係數相乘,但該兩乘積僅其中一個變為負。
  22. 一種用於處理指令的系統,包含:互連;與該互連耦接的處理器,該處理器接收緊縮有限脈衝響應(FIR)濾波器指令,其指示第一源緊縮資料運算元、第二源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置,該第一源緊縮資料運算元包括第一數量的資料元素,及該第二源緊縮資料運算元包括第二數量的附加資料元素,該第二數量比FIR濾波器分接頭的數量少一,其中,FIR濾波器係數的數量少於該第一與第二數量的資料元素,且其中,每一個FIR濾波器係數具有的位元數少於每一個資料元素,該處理器回應該緊縮FIR濾波器指令,在該目的地儲存位置中儲存結果緊縮資料運算元,該結果緊縮資料包括該第一數量之經FIR濾波的資料元素,每一個該經FIR濾波的資料元素係基於該複數個FIR濾波器係數與來自該一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於該FIR濾波器分接頭的數量;以及與該互連耦接的動態隨機存取記憶體(DRAM)。
  23. 如申請專利範圍第22項的系統,其中,每一個係數少於8位元,且係被儲存在藉由該緊縮FIR濾波器指令所指示之運算元的不同位元組中,且其中,每一個係數 具有浮點格式。
  24. 一種製造的物件,包含非暫時性機器可讀取儲存媒體,該非暫時性機器可讀取儲存媒體儲存:緊縮有限脈衝響應(FIR)濾波器指令,該緊縮FIR濾波器指令用以指示第一源緊縮資料運算元、第二源緊縮資料運算元、複數個FIR濾波器係數、及目的地儲存位置,該第一源緊縮資料運算元具有第一數量的資料元素,及該第二源緊縮資料運算元具有第二數量的附加資料元素,該第二數量比FIR濾波器分接頭的數量少一,其中,FIR濾波器係數的數量少於該第一與第二數量的資料元素,且其中,每一個FIR濾波器係數具有的位元少於每一個資料元素,且該緊縮FIR濾波器指令如果被機器執行,可致使該機器實施的操作包含:在該目的地儲存位置中儲存結果緊縮資料,該結果緊縮資料包括該第一數量之經FIR濾波的資料元素,每一個該經FIR濾波的資料元素係基於該複數個FIR濾波器係數與來自該一或多個源緊縮資料運算元之資料元素之不同對應組之乘積的組合,其數量等於該FIR濾波器分接頭的數量。
  25. 如申請專利範圍第24項之製造的物件,其中,每一個係數少於8位元,且被儲存在藉由該緊縮FIR濾波器指令所指示之運算元的不同位元組中,且其中,每一個係數具有浮點格式。
TW105109855A 2015-05-05 2016-03-29 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令 TWI603262B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/704,633 US9898286B2 (en) 2015-05-05 2015-05-05 Packed finite impulse response (FIR) filter processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201701151A TW201701151A (zh) 2017-01-01
TWI603262B true TWI603262B (zh) 2017-10-21

Family

ID=57217763

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105109855A TWI603262B (zh) 2015-05-05 2016-03-29 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令

Country Status (5)

Country Link
US (1) US9898286B2 (zh)
EP (1) EP3292630A4 (zh)
CN (1) CN107533460B (zh)
TW (1) TWI603262B (zh)
WO (1) WO2016178774A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US11106462B2 (en) * 2019-05-24 2021-08-31 Texas Instruments Incorporated Method and apparatus for vector sorting
US9898286B2 (en) 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
JP2018533871A (ja) * 2015-11-11 2018-11-15 サムスン エレクトロニクス カンパニー リミテッド ビデオ復号方法及びその装置、並びにビデオ符号化方法及びその装置
US9977601B2 (en) * 2016-03-17 2018-05-22 Ceva D.S.P. Ltd. Data load for symmetrical filters
US10749502B2 (en) * 2017-09-29 2020-08-18 Intel Corporation Apparatus and method for performing horizontal filter operations
EP3994796A1 (en) * 2019-07-18 2022-05-11 Huawei Technologies Co., Ltd. Advanced finite impulse response system and method for real coefficients and complex data
US11996817B2 (en) * 2021-06-10 2024-05-28 Solanium Labs Ltd. Finite impulse response filter

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500811A (en) * 1995-01-23 1996-03-19 Microunity Systems Engineering, Inc. Finite impulse response filter
US6144710A (en) * 1998-04-23 2000-11-07 Lucent Technologies, Inc. Joint maximum likelihood sequence estimator with dynamic channel description
TW452735B (en) * 1998-03-31 2001-09-01 Intel Corp System and method for performing a shuffle instruction
US20020010728A1 (en) * 2000-06-20 2002-01-24 Stoye Robert William Processor for FIR filtering
US6650699B1 (en) * 1999-01-21 2003-11-18 International Business Machines Corporation Methods and apparatus for timing recovery from a sampled and equalized data signal
US20050004957A1 (en) * 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementations of finite impulse response filters
US20150006857A1 (en) * 2013-06-28 2015-01-01 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6470370B2 (en) * 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US6547364B2 (en) * 1997-07-12 2003-04-15 Silverbrook Research Pty Ltd Printing cartridge with an integrated circuit device
JP3181879B2 (ja) * 1998-07-22 2001-07-03 シャープ株式会社 送信装置
US7529423B2 (en) 2004-03-26 2009-05-05 Intel Corporation SIMD four-pixel average instruction for imaging and video applications
US7817869B2 (en) * 2004-05-07 2010-10-19 Sony Corporation Variable support robust transform for multiple description coding
FR2875351A1 (fr) * 2004-09-16 2006-03-17 France Telecom Procede de traitement de donnees par passage entre domaines differents de sous-bandes
WO2006048828A1 (en) * 2004-11-03 2006-05-11 Koninklijke Philips Electronics N.V. Programmable data processing circuit that supports simd instruction
US20070150697A1 (en) * 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
US20080071851A1 (en) 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US9363068B2 (en) * 2010-08-03 2016-06-07 Intel Corporation Vector processor having instruction set with sliding window non-linear convolutional function
WO2013031083A1 (ja) * 2011-09-02 2013-03-07 パナソニック株式会社 対称型フィルタ演算装置及び対称型フィルタ演算方法
JP6526415B2 (ja) * 2011-10-27 2019-06-05 インテル・コーポレーション ベクトル・プロセッサおよび方法
CN104011664B (zh) 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
WO2013095614A1 (en) 2011-12-23 2013-06-27 Intel Corporation Super multiply add (super madd) instruction
US9448765B2 (en) * 2011-12-28 2016-09-20 Intel Corporation Floating point scaling processors, methods, systems, and instructions
US9329936B2 (en) 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
CN103414678B (zh) * 2013-08-02 2016-08-03 浙江大学 基于Vector OFDM的双选择性信道的变换域均衡方法
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
US9898286B2 (en) 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500811A (en) * 1995-01-23 1996-03-19 Microunity Systems Engineering, Inc. Finite impulse response filter
TW452735B (en) * 1998-03-31 2001-09-01 Intel Corp System and method for performing a shuffle instruction
US6144710A (en) * 1998-04-23 2000-11-07 Lucent Technologies, Inc. Joint maximum likelihood sequence estimator with dynamic channel description
US6650699B1 (en) * 1999-01-21 2003-11-18 International Business Machines Corporation Methods and apparatus for timing recovery from a sampled and equalized data signal
US20020010728A1 (en) * 2000-06-20 2002-01-24 Stoye Robert William Processor for FIR filtering
US20050004957A1 (en) * 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementations of finite impulse response filters
US20150006857A1 (en) * 2013-06-28 2015-01-01 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters

Also Published As

Publication number Publication date
CN107533460B (zh) 2022-05-10
EP3292630A1 (en) 2018-03-14
WO2016178774A1 (en) 2016-11-10
EP3292630A4 (en) 2019-06-26
TW201701151A (zh) 2017-01-01
US9898286B2 (en) 2018-02-20
CN107533460A (zh) 2018-01-02
US20160328233A1 (en) 2016-11-10

Similar Documents

Publication Publication Date Title
TWI603262B (zh) 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令
CN113762490B (zh) 使用列折叠和挤压的稀疏矩阵的矩阵乘法加速
CN110337635B (zh) 用于点积操作的系统、方法和装置
JP6466388B2 (ja) 方法及び装置
US9792115B2 (en) Super multiply add (super MADD) instructions with three scalar terms
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN107924308B (zh) 数据元素比较处理器、方法、系统和指令
TWI550508B (zh) 用於複製資料結構之設備及方法
CN107667345B (zh) 打包数据对齐加计算指令、处理器、方法和系统
CN106030514B (zh) 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法
CN107111484B (zh) 四维莫顿坐标转换处理器、方法、系统和指令
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
CN108415882B (zh) 利用操作数基础系统转换和再转换的向量乘法
CN110909883A (zh) 用于执行指定三元片逻辑操作的指令的系统和方法
US20200134225A1 (en) Instruction execution that broadcasts and masks data values at different levels of granularity
CN107391086B (zh) 改进置换指令的装置和方法
EP3343359A1 (en) Apparatus and method for processing sparse data
TWI464677B (zh) 經改良插入指令之裝置及方法
TW201741868A (zh) 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令
US10749502B2 (en) Apparatus and method for performing horizontal filter operations
CN107851016B (zh) 向量算术指令
CN111611202A (zh) 脉动阵列加速器系统和方法
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201732554A (zh) 毗連資料元素成對調換處理器、方法、系統、及指令

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees