国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      改善的流水線數(shù)字信號處理器的制作方法

      文檔序號:6569450閱讀:253來源:國知局
      專利名稱:改善的流水線數(shù)字信號處理器的制作方法
      技術(shù)領域
      本發(fā)明涉及用于避免計算單元和地址單元之間的流水線停頓的 流水線數(shù)字信號處理器。
      背景技術(shù)
      隨著計算機速度從33 mHz增加到1.2GHz及以上,計算機操作 不能在一個周期中完成。因此,流水線技術(shù)被采用以更有效地利用較 高的處理器性能并改善其吞吐率。目前深流水線使用多達25級甚至 更多的級。 一般而言,在流水線計算系統(tǒng)中,存在若干同時工作的并 行構(gòu)件塊,其中每個塊關(guān)注整個處理的不同部分。例如,存在計算單 元、地址單元以及序列發(fā)生器或控制電路,該計算單元進行計算,該 地址單元包括根據(jù)所選的地址模式在存儲器中獲取和存儲數(shù)據(jù)的數(shù) 據(jù)地址發(fā)生器(DAG ),且該序列發(fā)生器或控制電路編碼和分布指令。 DAG是可以尋址存儲器的唯一組件。因而在深流水線系統(tǒng)中,如果 指令依賴于另一指令的結(jié)果,將發(fā)生流水線停頓,其中流水線將停止, 在重新開始工作之前等待令人不愉快的指令完成操作。例如,如果在 計算之后,DAG需要計算單元的輸出以用于下一數(shù)據(jù)獲取,該輸出 不能被直接發(fā)送到DAG以被調(diào)節(jié)來用于數(shù)據(jù)獲取在它可以被DAG 處理以完成下一數(shù)據(jù)獲取和計算之前,它必須通過流水線傳播。這是 因為只有DAG可以訪問存儲器,可以將計算結(jié)果轉(zhuǎn)換成定位所需數(shù) 據(jù)的地址指針。在多任務通用計算機中,這種停頓可能并不關(guān)鍵,但 是在諸如用在移動電話、數(shù)碼相機中的實時計算機系統(tǒng)中,這些停頓 是有問題
      發(fā)明內(nèi)容
      因此本發(fā)明的一個目的是提供一種用于最小化計算單元和地址 單元之間的流水線停頓的改善的流水線數(shù)字信號處理器。
      本發(fā)明的另 一 目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,該處理器采用局 部可重構(gòu)填充和溢出隨機存取存儲器陣列。
      本發(fā)明的另 一 目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的具有增強的性能效率的改善的流水線數(shù)字信號 處理器。
      本發(fā)明的另一目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,該處理器可以并 行和串行地填充和溢出。
      本發(fā)明的另一目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,其中當 一組函數(shù) 中的一個或多個所存儲的值更新時,局部可重構(gòu)填充和溢出隨機存取 存儲器陣列選擇性地、有條件地溢出。
      本發(fā)明的另一目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,該處理器采用了
      在多個局部可重構(gòu)填充和溢出隨機存取存儲器陣列中共享的輸入和 輸出寄存器,用于在每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列 中以一對一的方式將結(jié)果映射到函數(shù),或者用于將結(jié)果輸入映射到一 個合成的輸出函數(shù),所述合成輸出函數(shù)由所述單局部可重構(gòu)填充和溢 出隨機存取存儲器陣列中每一個呈現(xiàn)的函數(shù)部分構(gòu)成。
      本發(fā)明的另 一 目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,其中局部可重構(gòu) 填充和溢出隨機存取存儲器陣列足夠小以適合于常規(guī)計算單元并在 一個周期內(nèi)可訪問,但是又足夠大以支持計算單元內(nèi)部的大多數(shù)應 用。
      本發(fā)明的另 一 目的是提供這種用于最小化計算單元和地址單元 之間的流水線停頓的改善的流水線數(shù)字信號處理器,該處理器通過將計算單元結(jié)果直接映射到存儲在局部可重構(gòu)填充和溢出隨機存取存 儲器陣列中的相關(guān)函數(shù)來避免流水線停頓的不利結(jié)果。
      本發(fā)明源于這種實現(xiàn)使用響應來自算法的指令計算結(jié)果的一個 或多個計算單元可以實現(xiàn)用于最小化計算單元和地址單元之間的流 水線停頓的新的改善的流水線數(shù)字信號處理器,每個計算單元包括局 部可重構(gòu)填充和溢出隨機存取存儲器陣列,該局部可重構(gòu)填充和溢出 隨機存取存儲器陣列存儲與算法的預定指令組的計算結(jié)果相關(guān)的預 定函數(shù)組,以在該計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      然而,在其它實施例中,本發(fā)明不需要實現(xiàn)所有的這些目的且本 發(fā)明的權(quán)利要求書并不限制于能夠?qū)崿F(xiàn)這些目的的結(jié)構(gòu)或方法。
      本發(fā)明的特征在于一種處理器,該處理器包含用于減少計算單元 和地址單元之間的流水線停頓的裝置,該處理器包括至少一個計算 單元,用于響應算法的指令來計算結(jié)果。每個計算單元包括局部隨機 存取存儲器陣列,用于存儲與算法的預定指令組的計算結(jié)果相關(guān)的預 定函數(shù)組,以在計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      在一個優(yōu)選實施例中,可以具有被計算單元共享的寄存器堆。所 有的計算單元局部隨機存取存儲器陣列可以并行地填充來自于寄存
      器堆中的相同值。局部隨機存取存儲器陣列可以并行地填充來自寄存 器堆的不同值。局部隨機存取存儲器陣列可以并行地溢出到寄存器 堆。計算電路可以包括狀態(tài)器件,在存儲在局部隨機存取存儲器陣列 中的函數(shù)值已被更新時進行指示。該狀態(tài)器件可用于判定是否應當溢 出和保存局部隨機存取存儲器陣列中的函數(shù)值。計算結(jié)果到相關(guān)函數(shù) 的映射可以與先前的計算結(jié)果映射無關(guān)。計算結(jié)果到相關(guān)函數(shù)的映射 在各計算單元之間是相互獨立的。來自寄存器堆的寄存器可以用作多 個計算單元中的隨機存取存儲器陣列的索引。多個計算單元中的隨機 存取存儲器陣列的輸出可以組合到寄存器堆的單個寄存器中。不同于 寄存器堆的寄存器可以用作每個計算單元中的隨機存取存儲器陣列 的索引。每個計算單元中的每個隨機存取存儲器陣列的輸出可以放置 于寄存器堆的不同寄存器中。局部隨機存取存儲器陣列可以包括查找表。可以具有用于在局部隨機存取存儲器陣列中存儲預定函數(shù)值組的 控制單元,以在計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。計 算單元可以包括與每個局部隨機存取存儲器陣列相關(guān)的表基址寄存 器,用于允許將相關(guān)的數(shù)據(jù)組存儲在每個局部可重構(gòu)填充和溢出隨機 存取存儲器陣列中獨立的地址處。
      本發(fā)明的特征還在于一種流水線信號處理器,用于減少計算單 元和地址單元之間的流水線停頓。具有至少一個計算單元,用于響應 算法的指令來計算結(jié)果。每個計算單元包括局部可重構(gòu)填充和溢出隨 機存取存儲器陣列,用于存儲與算法的預定指令組的計算結(jié)果相關(guān)的 預定函數(shù)組,以在計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      在優(yōu)選實施例中,可以具有被計算單元共享的寄存器堆。寄存器 堆可以包括用于在所有的計算單元局部可重構(gòu)填充和溢出隨機存取 存儲器陣列上并行地填充相同值的輸入寄存器堆。寄存器堆可以包括 用于在計算單元局部可重構(gòu)填充和溢出隨機存取存儲器陣列其中每 一個中串行地填充不同值的輸入寄存器。寄存器堆可以包括用于從局 部可重構(gòu)填充和溢出隨機存取存儲器陣列并行地溢出所存儲的值的 輸出寄存器。寄存器堆可以包括用于從局部可重構(gòu)填充和溢出隨機存 取存儲器陣列串行地溢出所存儲的值的輸出寄存器。計算單元可以包 括狀態(tài)器件,當局部可重構(gòu)填充和溢出隨機存取存儲器陣列的至少一 分區(qū)已被更新時,允許從該分區(qū)溢出值。計算結(jié)果到相關(guān)函數(shù)的映射 可以與先前計算的結(jié)果映射無關(guān)。寄存器堆可以包括被局部可重構(gòu)填 充和溢出隨機存取存儲器陣列共享的輸入寄存器和被局部可重構(gòu)填 充和溢出隨機存取存儲器陣列共享的輸出寄存器。輸入寄存器可以為 每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列接收不同計算結(jié)果 且輸出寄存器可以呈現(xiàn)來自每個局部可重構(gòu)填充和溢出隨機存取存 儲器陣列的不同函數(shù)。輸入寄存器可以為每個局部可重構(gòu)填充和溢出 隨機存取存儲器陣列接收相同的計算結(jié)果,且輸出寄存器堆可以呈現(xiàn) 單一的函數(shù),該單一函數(shù)由局部可重構(gòu)填充和溢出隨機存取存儲器陣 列其中每一個呈現(xiàn)的函數(shù)部分構(gòu)成。局部隨機存取存儲器陣列可以包括查找表。可以具有用于在局部可重構(gòu)填充和溢出隨機存取存儲器陣 列中存儲與算法的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)組的控制
      單元,以在計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      本發(fā)明的特征還在于一種用于減小處理器中的計算單元和地址
      單元之間的流水線停頓的方法,包括響應于算法的指令,在計算單 元中計算結(jié)果。在計算單元中的局部隨才幾存取存儲器陣列中存儲與算 法的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)組,以在計算單元內(nèi)提供 計算結(jié)果到相關(guān)函數(shù)的直接映射。
      在優(yōu)選實施例中,該處理器可以包括被計算單元共享的寄存器 堆。該方法可以包括向所有計算單元局部隨機存取存儲器陣列并行地 填充來自寄存器堆的相同值。該方法可以包括向局部隨機存取存儲器 陣列并行地填充來自寄存器堆的不同值。該方法可以包括并行地溢出 局部隨機存取存儲器陣列到寄存器堆。該方法還可以包括當隨機存取 存儲器陣列的一個分區(qū)中存儲的一個或多個值已被更新時在計算電 路的狀態(tài)器件中進行指示。該方法還可以包括在該狀態(tài)器件中判定是 否溢出和保存隨機存取存儲器陣列中的值。該方法還可以包括與先前 的計算結(jié)果映射無關(guān)地將計算結(jié)果映射到相關(guān)函數(shù)。該方法還可以包 括在各計算單元之間相互獨立地將計算結(jié)果映射到相關(guān)函數(shù)。來自寄
      存器堆的寄存器可以用作多個計算單元中隨機存取存儲器陣列的索 引。該方法還可以包括將多個計算單元中的隨機存取存儲器陣列的輸 出組合到寄存器堆中的單個寄存器中。該方法還可以包括使用不同于 寄存器堆的寄存器作為每個計算單元中的隨機存取存儲器陣列的索
      引。該方法還可以包括將每個計算單元中的每個隨機存取存儲器陣列 的輸出放置在寄存器堆的不同寄存器中。局部隨機存取存儲器陣列可
      以包括查找表';該方法還可以包括在局部隨機存取存儲器中存儲算法
      的預定指令組,以在計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映 射。使用與計算單元中的每個局部隨機存取存儲器陣列相關(guān)的表基址 寄存器,相關(guān)的數(shù)據(jù)組可以存儲在每個局部可重構(gòu)填充和溢出隨機存 取存儲器陣列中獨立的地址。


      本領域技術(shù)人員可以從優(yōu)選實施例的下述描述和附圖想到其它
      目的、特征和優(yōu)點,附圖中
      圖1是具有外部存儲器和存儲器總線的現(xiàn)有技術(shù)數(shù)字信號處理 器(DSP)的簡化框圖2是示意性圖表,示出了在DSP中執(zhí)行指令獲取、數(shù)據(jù)地址 產(chǎn)生、數(shù)據(jù)獲取、計算以及提交操作所需的多周期步驟;
      圖3是4個計算單元的示意性圖示,該4個計算單元包括;f艮據(jù)本 發(fā)明被實施為查找表(LUT)的局部可重構(gòu)填充和溢出隨機存取存儲 器陣列,詳細地示出了其中的一個;
      圖4是通用算法及其組成應用的說明,所述組成應用中每一個都
      包括可被本發(fā)明執(zhí)行的一個或多個特定算法。
      圖5是根據(jù)本發(fā)明的計算單元的示意性圖示,其中通過在計算單 元內(nèi)將計算結(jié)果直接映射到所選函數(shù)來最小化流水線停頓。
      圖6是4個局部可重構(gòu)填充和溢出隨機存取存儲器陣列的示意性 圖示,具有實現(xiàn)了數(shù)據(jù)加密標準(Des/3Des)加密的共享寄存器堆;
      圖7是4個局部可重構(gòu)填充和溢出隨機存取存儲器陣列的示意性 圖示,其中共享寄存器堆實現(xiàn)了可變長解碼(VLD);
      圖8A示出了很多陣列中的幾個,根據(jù)本發(fā)明,4個局部可重構(gòu) 填充和溢出隨機存取存儲器陣列的數(shù)據(jù)結(jié)構(gòu)可以布置在所述陣列中;
      圖8B示出了布置4個局部可重構(gòu)填充和溢出隨機存取存儲器陣 列以獲得512個16位值的另 一種方法;
      圖9是示出了用于符號a, b, c...的VLD值的圖表。 圖10是用于檢查n位VLD輸入流的位FIFO寄存器的圖示; 圖ll是示出了 VLD解碼操作中的幾個步驟的圖示。 圖12是表格,示出了在MPEG-2中,根據(jù)最小化流水線停頓的本 發(fā)明,在局部可重構(gòu)填充和溢出隨機存取存儲器陣列中使用它自己的 256個8位值,可以在計算單元內(nèi)實現(xiàn)超過97%的VLD操作。圖13是僅384個8位值的4個局部可重構(gòu)填充和溢出隨機存取 存儲器陣列的圖示,它可用于高級加密標準(AES)加密的Galios字 段乘法或Reed-Solomon前向糾錯(FEC )。
      圖14-17是根據(jù)本發(fā)明的局部可重構(gòu)填充和溢出隨機存取存儲器 陣列中的并行和串行填充和溢出操作的示意性說明。
      圖18是根據(jù)本發(fā)明的局部可重構(gòu)填充和溢出隨機存取存儲器陣 列中的條件選擇溢出的示意性說明;以及
      圖19是本發(fā)明的方法的簡化的流程圖。
      具體實施例方式
      除了下述優(yōu)選實施例之外,本發(fā)明能夠?qū)崿F(xiàn)其它實施例且本發(fā)明 能夠以各種方式實踐或?qū)嵤?。因而,應當理解,在其應用中本發(fā)明并 不被限制為下面的說明中提出或附圖中示出的結(jié)構(gòu)細節(jié)和組件布置。 如果此處僅描述一個實施例,所附權(quán)利要求也不限于該實施例。而且, 除非有表明特定排除、限制或放棄的清晰且令人信服的證據(jù),所附權(quán) 利要求不被限制性地閱讀。
      圖1中示出了一種數(shù)字信號處理器10,其包括具有一個或多個 數(shù)字地址發(fā)生器14、 16的地址單元12;諸如程序序列發(fā)生器18的控 制單元以及一個或多個計算單元20,每個計算單元包含多個電路,如 算術(shù)邏輯單元22、乘法/累加器24、移位器26。典型地,在數(shù)字信號 處理器中存在2個、4個或更多個計算單元。數(shù)字信號處理器通過存 儲器總線28與一個或多個存儲器相連,所述一個或多個存儲器例如 是包括程序存儲器32和數(shù)據(jù)存儲器34的1級(Ll)存儲器30,或 附加存儲器36。存儲器30可以是典型地極快且十分昂貴的一級存儲 器。存儲器36可以是較便宜且較慢的3級存儲器。當DSP 10操作在 lGHz及以上時,操作的周期如此地快,以致于地址單元和計算單元 需要多于一個周期來完成它們的操作。為改善DSP IO的吞吐率以及 由此改善它的性能,典型地使用深流水線。
      在流水線操作中,當對于所有處理器并行構(gòu)件塊而言,先前的指令和后續(xù)的指令的結(jié)果之間沒有依存關(guān)系時,保持了流水線效率。然 而,如果存在這種依存關(guān)系,則會發(fā)生流水線停頓,其中流水線將在 繼續(xù)工作之前停止并等待令人不快的指令完成。例如,如果計算結(jié)果
      不能被直接存儲而是必須用于產(chǎn)生可以在存儲器中發(fā)現(xiàn)該計算結(jié)果
      的相關(guān)函數(shù)的地址時,在計算單元結(jié)果和打斷流水線平滑操作的DAG 之間存在依存關(guān)系,將詳細闡述一個示例。
      假設計算單元計算作為一個角度a的結(jié)果,不過它是在后續(xù)操作
      執(zhí)行中使用的該角度a的函數(shù),sinea(a的正弦函數(shù))。于是計算單元 必須發(fā)送計算結(jié)果到地址單元12,其中DAG 14或16產(chǎn)生合適的地 址來從存儲器30或36獲取該角度的正弦函數(shù)并將它返回和提交到計 算單元。這種流水線中的停止或打斷浪費了時間。DSP IO的一個特征 在于地址單元12且僅地址單元12可以尋址存儲器30和36。因而, 只要計算單元需要來自Ll存儲器30或L3存儲器36的信息來進行操 作,由于計算單元結(jié)果在比裝栽DAG 12寄存器靠后的級有效這一事 實,流水線操作變停頓。
      參考圖2的表格可以更好地理解這一點,從圖2可以看出,例如, 指令獲取花費了 4個機器周期IF1、 IF2、 IF3、 IF4。數(shù)字地址產(chǎn)生需 要兩個機器周期DAG1 、DAG2,且數(shù)據(jù)獲取還需要4個機器周期DF1 、 DF2、 DF3、 DF4。計算操作需要3個周期CF1、 CF2、 CF3以獲得計 算結(jié)果Cl。因而如果下一指令的DAG需要來自于級Cl的計算單元 結(jié)果,該結(jié)果必須沿流水線"向上游(swim up )"且在裝栽DAG寄存 器之前等待級D被執(zhí)行。這是流水線停頓的一個圖示。
      根據(jù)本發(fā)明,參考圖3,在根據(jù)本發(fā)明的DSP 10a中,每個計算 單元20a、 20b、 20c、 20d設置有局部可重構(gòu)填充和溢出隨機存取存 儲器陣列,例如查找表(LUT》50a。除其它器件外,計算單元28典 型地可以包括乘法器52、多個選擇電路54和56、諸如用于Galios 字段操作的多項式乘法器58、桶式移位器60、算術(shù)邏輯單元62、累 加器64以及多路復用器66。而且,每個計算單元包括寄存器堆68。 典型地,當存在多于一個計算單元時,例如,如圖3所示的計算單元20a、 20b、 20c和20d,它們可以全部共享相同的寄存器堆68。每個 計算單元還具有它自己的局部可重構(gòu)填充和溢出隨機存取存儲器陣
      列LUT50a、 50b、 50c和50d。這些局部可重構(gòu)填充和溢出隨機存取 存儲器陣列足夠小以適合于常規(guī)計算單元且在一個周期可訪問,而它 們又足夠大以支持計算單元內(nèi)部的大多數(shù)應用而不必轉(zhuǎn)入外部存儲 器和引起流水線停頓。
      DSP10a可用于實現(xiàn)手持機,參考圖4,在這種情況下,整個通 用手持機算法可以包括多個應用,每個應用可以包括一個或多個特定 算法。例如,圖4中所示的手持機算法可以包括調(diào)制解調(diào)器應用,隨 后是例如可以包括高級加密標準(AES)的加密應用,隨后是可以使 用可變長度解碼(VLD)的視頻壓縮設備,如MPEG2、 MPEG4或 WMV。還可以存在圖# 應用和語音應用。
      在圖5中以示意的形式示出了在實施圖4所示的這種通用算法時 本發(fā)明的功效。可以看出,寄存器堆68a中的值移動經(jīng)過緩沖級70、 乘法陣列72、另一個流水線緩沖級74、選擇和壓縮電路76、又另一 個流水線緩沖級78、加法器80、多路復用和選擇電路82且最后移到 累加器84,從該累加器84它可以被裝載回寄存器堆68a。如果存儲 在寄存器堆68a中的累加器84的輸出的形式適于后續(xù)指令的執(zhí)行, 則計算單元不需要訪問外部存儲器。但是假設在CF使用乘法器86 和88且在CF2使用乘法器90和92進行乘法運算,并進一步假設乘 法器90和92的輸出需要使用LUT映射以用于后續(xù)指令執(zhí)行。于是 不得不進行外部獲取,由于計算單元結(jié)果在比裝載數(shù)據(jù)地址發(fā)生器寄 存器靠后的級有效這一事實,這將導致流水線停頓。然而,根據(jù)本發(fā) 明,乘法器90和92的輸出可以在周期CF3中在計算單元內(nèi)被直接引 入到LUT 94,其中存儲的函數(shù)與乘法器卯和92的計算結(jié)果相關(guān)。 這允許結(jié)果96以合適的形式呈現(xiàn)在累加器84中,使得當駐留在寄存 器堆68a中時,它適于后續(xù)指令的執(zhí)行,由此節(jié)省了外部獲取所需要 的所有外部周期時間,且避免了流水線停頓。
      在圖6中可以看出本發(fā)明的靈活性,其中包括輸入寄存器100和輸出寄存器102的寄存器堆68b被多個(在此例中為4個)局部可重 構(gòu)填充和溢出隨才幾存取存儲器陣列50a、 50b、 50c和50d共享,所述 可重構(gòu)填充和溢出隨機存取存儲器陣列50a、 50b、 50c和50d中每一 個包括至少64個8位值。在DES加密應用中這種布置可以接收4個 不同的6位計算值bo、 b!、 b2、 b3并在輸出寄存器102提供4個不同 的值SboxO、 Sboxl、 Sbox2和Sbox3。
      備選地,在通信類型的應用中,參考圖7,相同的計算結(jié)果boa 可以被放置在輸入寄存器100c的每個部分106、 108、 110和112中, 使得它們識別一個值的4個部分。例如,ct的正弦的4部分。每個部 分處于輸出寄存器102c的部分114、 116、 118和120中,且是8位 的,使得當被組合時,它們?yōu)樵撜襛產(chǎn)生32位準確值。每個局部 可重構(gòu)填充和溢出隨機存取存儲器陣列50a、 50b、 50c、 50d可以包 含256個8位值,且可以以多種不同方式布置它們的數(shù)據(jù)結(jié)構(gòu)。例如, 參考圖8A,局部可重構(gòu)填充和溢出隨機存取存儲器陣列50a可以提 供8個8位值130,或者每個局部可重構(gòu)填充和溢出隨機存取存儲器 陣列可以在132、 134、 136、 138提供用于DES加密的不同s-box值。 數(shù)據(jù)可以跨越所有的局部可重構(gòu)填充和溢出隨機存取存儲器陣列構(gòu) 造,如140,提供諸如用于VLD解碼的32位值?;蛘呖梢詢H使用(142) 兩個局部可重構(gòu)填充和溢出隨機存取存儲器陣列50a、 50b,從而以 16位精度存取該正弦值。可以看出,數(shù)據(jù)結(jié)構(gòu)是相當容易的。而且不 必受限于如圖8A中所示的并排布置可以是如圖8B所示的2x2布 置以提供高達16位跨度的512個位置。盡管在圖8A中,S-box值組 132、 134、 136、 138在每個存儲陣列LUT 50 a-d中存儲在相同的位 置'63,,這不必是本發(fā)明的限制。通過使用每個陣列LUT 50a-d添加 表基址寄存器,它們可以存儲在每個陣列中任何不同的可用位置。例 如,S-box 2、 3和4, 64條目LUT 134、 136、 138可以在位置"0"開 始存儲,或者S-box2可以在位置"O,,開始存儲,而S-box 3和4, 136, 138可以在位置"191,,開始存儲。這樣,相關(guān)的數(shù)據(jù)組例如S-boxl-4, 1/GF(xl-4)不需要在所有的存儲器陣列50a-d中被存儲在相同位置,而是可以存儲在每個陣列中獨立的地址。
      如參考圖9-12所解釋的,參考可變長解碼(,VLD)應用說明只 有250個8位值的局部可重構(gòu)填充和溢出隨機存取存儲器陣列可以對 流水線停頓的避免產(chǎn)生重大影響這一事實。在這種應用中,可變長碼 利用以下事實某一碼值將比其它碼值更頻繁地出現(xiàn)。如果頻繁出現(xiàn) 的值被分配以短長度碼字且使用較長的碼字傳送不常出現(xiàn)的值,將獲 得有效的比特率減少。作為模擬,如果傳送英語文本,使用短碼字發(fā) 送"a"、 "e"、 "i",而使用長碼字發(fā)送"z"。例如,使用圖9中的圖示 示出的可變長碼對a, b, c, d, e, f...進行編碼。符號i由0代表, 符號L由01代表,符號£_由100代表,符號i由101代表,符號£ 由110代表,符號L由1110代表,符號由11110代表,依此類推。 因而,參考圖10,當位FIFO寄存器140接收到VLD輸入位流時, 參考圖11,在150,進行n位檢查,其中n等于8。被檢查的8位字 段用作進入計算單元的256的條目VLDLUT的地址。LUT條目可以 被標記為識別的符號152 (MSB被設置為"1"),或者它可標記識別 符號166需要更多的位(MSB被設置為"0")。在符號被識別的情況, LUT條目保存解碼的符號的值156以及從位流移除(提取)多少位 154以開始下一符號的檢查。在需要更多位的情況下(166), LUT條目 保存完成識別168需要多少附加位流位的指示以及指向負責識別比8 位長的所有符號的另一L1-LUT的指針176。當LUT條目被標記為識 別的符號時(170),該過程結(jié)束。注意在圖11的前兩個示例中,局部 可童構(gòu)填充和溢出隨機存取存儲器陣列在內(nèi)部滿足所有的需求,不需 要外部存儲器且因而避免了流水線停頓。然而,在第三示例中,局部 可重構(gòu)填充和溢出隨機存取存儲器陣列不能滿足需要且必須考慮外 部存儲器,導致流水線停頓。
      然而,所關(guān)注的例子中,本發(fā)明是非常成功的。例如,如圖12 所示,在最大碼字尺寸為16位的MPEG-2解碼處理中,可變長碼字 識別處理可以被分成三個檢查組(8, 5, 3),其中第一個是具有8 位或更少位的所有最可能碼字的組(經(jīng)常出現(xiàn)的符號)。第二個是具
      17有少于12位且大于8位的所有碼字的組,且最后一個是多于12位的 所有的其它不常出現(xiàn)的碼字的組。局部可重構(gòu)填充和溢出隨機存取存 儲器陣列將識別在一個計算單元LUT引用中具有97.2%的出現(xiàn)概率 的25個最可能的碼字的第一組。附加的5位-Li-LUT引用將識別出 現(xiàn)概率為1.3+%的40個碼字的第二組,且第三個3位-Ll-LUT引用 將識別出現(xiàn)概率為0.17+%的不常用碼字的第三組。對于8 44檢查序 列呈現(xiàn)類似的結(jié)果。因而,無論完成的方法如何,8 5 3還是8 4 4, 在超過97%的時間,局部可重構(gòu)填充和溢出隨機存取存儲器陣列可以 在一個LUT引用中識別碼字。而且,對于8 53檢查序列而言,識別 任意 一 個MPEG-2 VLD碼字所需的平均存儲器存取是 (1*0.97+2*0.013+3*0.0013 )=1.005127,而對于844檢查序列而言, 是1.00708。這意味著采用使用小至256個8位結(jié)構(gòu)存儲器的本發(fā)明, 用于組合的內(nèi)部和外部存儲器獲取的平均查詢時間幾乎不大于l個周 期時間。本發(fā)明由此給予了流水線數(shù)字信號處理器中的獨特的優(yōu)點。 盡管256個8位結(jié)構(gòu)或更少的結(jié)構(gòu)足以給予本發(fā)明的優(yōu)點,在某些情 況下,僅增加一位將適應甚至更多的情況。例如,參考圖13,對于 AES加密中的Galois字段乘法操作,需要128個8位結(jié)構(gòu)50 a-d用 于Galois字段乘法器值,需要另外的256個50 a-d用于S-box值, 對于每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列,總共只需要 384個8位結(jié)構(gòu)。對于Reed-Solomon實現(xiàn),50, a-d將包含1/GF(x) 值。
      參考圖14,通過同時向所有的局部可重構(gòu)填充和溢出隨機存取 存儲器陣列50a、 b、 c、 d廣播來自于輸入寄存器68e的值,可以并 行地填充一個或多個局部可重構(gòu)填充和溢出隨機存取存儲器陣列,或 者參考圖15,通過從輸入寄存器68d分離地向局部可重構(gòu)填充和溢出 隨機存取存儲器陣列中每一個50a、 b、 c、 d輸入值,可以串行地完 成填充。所以,同樣,參考圖16,可以從局部可重構(gòu)填充和溢出隨機 存取存儲器陣列50a、 b、 c、 d...中的每一個并行地向輸出寄存器102e 完成它們的溢出,或者,參考圖17,從局部可重構(gòu)填充和溢出隨機存取存儲器陣列50a、 b、 c、 d…中的每一個向輸出寄存器102e以串行 的方式一次一個地完成它們的溢出。
      填充和溢出操作不需要在整個局部可重構(gòu)填充和溢出隨機存取 存儲器陣列50a、 b、 c、 d上執(zhí)行,而是只在需要時在其一部分上執(zhí) 行以進一步節(jié)省時間和資源。即,溢出操作可以是有條件的和選擇性 的。例如,如圖18所示,在計算單元20a中,局部可重構(gòu)填充和溢 出隨機存取存儲器陣列的分區(qū)(section) 200、 202、 204…中的每一個可 具有不同的函數(shù)組。當實施如圖4所示的整個通用算法時,參考圖18, 局部可重構(gòu)填充和溢出隨機存取存儲器陣列的分區(qū)50a在必要時被使 用新的信息選擇性地一次一個分區(qū)地重寫。然而,如果這些分區(qū)中的 一個,例如,202已經(jīng)被算術(shù)邏輯單元22a更新,則狀態(tài)電路206檢 測該更新并記錄基址寄存器位置,并促使值的分區(qū)202溢出到某些外 部存儲器30或36,它被存儲在那里直到它被需要。如果沒有值被更 新,則它將只被重寫且在恰當?shù)臅r間和通常情況一樣從存儲器30或 36調(diào)用原始的一組值。
      在圖19中示出了根據(jù)本發(fā)明的方法的簡化描述。該方法開始于 根據(jù)算法在處理器中的計算單元中對結(jié)果的計算(300)。然后,與來自
      預定算術(shù)指令組的計算結(jié)果相關(guān)的預定函數(shù)組被存儲在計算單元中 的局部隨機存取存儲器陣列中(302)。然后,計算的結(jié)果被直接映射到 相關(guān)函數(shù)。
      更具體而言,處理器包括被計算單元共享的寄存器堆。所有的計 算單元局部隨機存取存儲器陣列被并行地填充來自寄存器堆的值。所 述值可以是相同值或不同值。局部隨機存取存儲器陣列也可以并行地 溢出到寄存器堆。當存儲在隨機存取存儲器陣列中的分區(qū)中的一個或 多個值更新時,在計算單元的狀態(tài)器件中做出指示。然后在狀態(tài)器件 中判定是否應當溢出和保存隨機存取存儲器中的值。計算結(jié)果到相關(guān) 函數(shù)的映射與先前的計算結(jié)果映射無關(guān)或者在各計算單元之間相互 獨立地完成。來自寄存器堆的寄存器用作隨機存取存儲器陣列和多個 計算單元的索引。隨機存取存儲器陣列和多個計算單元的輸出可以組合到寄存器堆的單個寄存器中。與寄存器堆不同的寄存器可以用作每 個計算單元中隨機存取存儲器陣列的索引。每個計算單元中的每個隨
      機存取存儲器陣列的輸出可以被放置在寄存器堆的不同寄存器中。局 部隨機存取存儲器陣列可以包括查找表。在局部隨機存取存儲器陣列 中可以存儲算法的預定指令組,以在計算單元內(nèi)提供計算結(jié)果到相關(guān) 函數(shù)的直接映射。然后,使用與計算單元中的每個局部隨機存取存儲 器陣列相關(guān)的表寄存器,可以將相關(guān)的數(shù)據(jù)組存儲在每個局部可重構(gòu) 填充和溢出隨機存取存儲器陣列中獨立的地址。
      盡管已經(jīng)在某些附圖中示出了本發(fā)明的特定特征,這僅是為了方 便而已,根據(jù)本發(fā)明,每個特征可以與任意或者全部其它特征相組合。 此處使用的詞"包括"、"包含"、"具有"以及"有"將被廣義和全面地理 解,且并不限制于任意物理互連。而且,本申請中公布的任何實施例 并不被認為是唯一可能的實施例。
      此外,在專利申請的審查過程中為本申請?zhí)岢龅娜魏涡薷牟⒉皇?br> 提交的申請中提出的任何權(quán)利要求元素的放棄本領域技術(shù)人員不能 想當然地指望設計照字面意義包含所有可能的等價物的權(quán)利要求,很 多等價物在修正時是不可預知的且超出了被放棄的合法解釋(如果存 在)的范圍,經(jīng)過修正的基本原理可能并不滿足更多的對應于等價要 求的略微觸及的關(guān)系,且/或存在很多不能期望申請人為任意修正的權(quán) 利要求元素描述無實體替代物的其它原因。
      本領域技術(shù)人員可以想到其它實施例,且這些其它實施例歸于所 附權(quán)利要求。
      權(quán)利要求
      1.一種處理器,包含用于減少計算單元和地址單元之間的流水線停頓的裝置,該處理器包括至少一個計算單元,用于響應算法的指令來計算結(jié)果;所述計算單元包括局部隨機存取存儲器陣列,用于存儲與所述算法的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)值組,以在所述計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      2. 根據(jù)權(quán)利要求1所述的處理器,包括被所述計算單元共享的 寄存器堆。
      3. 根據(jù)權(quán)利要求2所述的處理器,其中所有的計算單元局部隨 機存取存儲器陣列被并行地填充來自所述寄存器堆的相同值。
      4. 根據(jù)權(quán)利要求2所述的處理器,其中局部隨機存取存儲器陣 列被并行地填充來自所述寄存器堆的不同值。
      5. 根據(jù)權(quán)利要求2所述的處理器,其中所述局部隨機存取存儲 器陣列并行地溢出到所述寄存器堆。
      6. 根據(jù)權(quán)利要求1所述的處理器,其中所述計算單元包括當存 儲在所述隨機存取存儲器陣列的分區(qū)中的一個或多個函數(shù)值已被更 新時進行指示的狀態(tài)器件。
      7. 根據(jù)權(quán)利要求6所述的處理器,其中所述狀態(tài)器件判定是否 應當溢出和保存隨機存取存儲器陣列中的函數(shù)值。
      8. 根據(jù)權(quán)利要求1所述的處理器,其中計算結(jié)果到相關(guān)函數(shù)的 所述映射與先前的計算結(jié)果映射無關(guān)。
      9. 根據(jù)權(quán)利要求1所述的處理器,其中計算結(jié)果到相關(guān)函數(shù)的 所述映射在各計算單元之間是相互獨立的。
      10. 根據(jù)權(quán)利要求2所述的處理器,其中來自寄存器堆的寄存器 可以用作多個計算單元中的隨機存取存儲器陣列的索引。
      11. 根據(jù)權(quán)利要求2所述的處理器,其中多個計算單元中的隨機 存取存儲器陣列的輸出被組合到寄存器堆中的單個寄存器中。
      12. 根據(jù)權(quán)利要求9所述的處理器,其中與寄存器堆不同的寄存 器被用作每個計算單元中的隨機存取存儲器陣列的索引。
      13. 根據(jù)權(quán)利要求9所述的處理器,其中每個計算單元中的每個 隨機存取存儲器陣列的輸出被放置在所述寄存器堆的不同寄存器中。
      14. 根據(jù)權(quán)利要求l所述的處理器,其中所述局部隨機存取存儲 器陣列包括查找表。
      15. 根據(jù)權(quán)利要求l所述的處理器,還包括控制單元,用于在所 述局部隨機存取存儲器陣列中存儲所述預定函數(shù)值組,以在計算單元 內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      16. 根據(jù)權(quán)利要求l所述的處理器,其中所述計算單元包括與每 個局部隨機存取存儲器陣列相關(guān)的表基址寄存器,用于允許相關(guān)的數(shù) 據(jù)組被存儲在每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列中獨 立的地址。
      17. —種用于減少計算單元和地址單元之間的流水線停頓的流水 線數(shù)字倌號處理器,包括至少一個計算單元,用于響應算法的指令來計算結(jié)果;所述計算單元包括局部可重構(gòu)填充和溢出隨機存取存儲器,用于 存儲與所述算法的預定指令組的計算結(jié)果相關(guān)的預定值組,以在所述計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      18. 根據(jù)權(quán)利要求17所述的流水線數(shù)字信號處理器,包括被所 述計算單元共享的寄存器堆。
      19. 根據(jù)權(quán)利要求18所述的流水線數(shù)字信號處理器,其中所述 寄存器堆包括用于對所有的計算單元局部可重構(gòu)填充和溢出隨機存 取存儲器陣列并行地填充相同值的輸入寄存器。
      20. 根據(jù)權(quán)利要求18所述的流水線數(shù)字信號處理器,其中所述寄存器堆包括在計算單元局部可重構(gòu)填充和溢出隨機存取存儲器陣 列中的每一個中串行地填充不同值的輸入寄存器。
      21. 根據(jù)權(quán)利要求18所述的流水線數(shù)字信號處理器,其中所述 寄存器堆包括用于從局部可重構(gòu)填充和溢出隨機存取存儲器陣列并行地溢出所存儲的值的輸出寄存器。
      22. 根據(jù)權(quán)利要求18所述的流水線數(shù)字信號處理器,其中所述 寄存器堆包括用于從局部可重構(gòu)填充和溢出隨機存取存儲器陣列串 行地溢出所存儲的值的輸出寄存器,
      23. 根據(jù)權(quán)利要求17所述的流水線數(shù)字信號處理器,其中所述 計算電路包括狀態(tài)器件,用于在存儲在所述局部可重構(gòu)填充和溢出隨 機存取存儲器陣列中的至少一分區(qū)中的一個或多個所述值已被更新 時允許來自所述分區(qū)的值的溢出,
      24. 根據(jù)權(quán)利要求17所述的流水線數(shù)字信號處理器,其中計算 結(jié)果到相關(guān)函數(shù)值的所述映射與先前的計算結(jié)果映射無關(guān)。
      25. 根據(jù)權(quán)利要求18所述的流水線數(shù)字信號處理器,其中所述 寄存器堆包括被局部可重構(gòu)填充和溢出隨機存取存儲器陣列共享的 輸入寄存器和被局部可重構(gòu)填充和溢出隨機存取存儲器陣列共享的 輸出寄存器。
      26. 根據(jù)權(quán)利要求25所述的流水線數(shù)字信號處理器,其中所述 輸入寄存器為每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列接收 不同的計算結(jié)果,且所述輸出寄存器呈現(xiàn)來自每個局部可重構(gòu)填充和 溢出隨機存取存儲器陣列的不同函數(shù)值。
      27. 根據(jù)權(quán)利要求25所述的流水線數(shù)字信號處理器,其中所述 輸入寄存器為每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列接收 相同的計算結(jié)果,且所述輸出寄存器呈現(xiàn)單一函數(shù)值,該單一函數(shù)值 由局部可重構(gòu)填充和溢出隨機存取存儲器陣列中的每一個所呈現(xiàn)的 函數(shù)部分構(gòu)成。
      28. 根據(jù)權(quán)利要求17所述的流水線數(shù)字信號處理器,其中所述 局部可重構(gòu)填充和溢出隨機存取存儲器陣列包括查找表。
      29. 根據(jù)權(quán)利要求17所述的流水線數(shù)字信號處理器,還包括控 制單元,用于在所述局部可重構(gòu)填充和溢出局部隨機存取存儲器陣列 中存儲與算法中的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)值組,以在 所述計算單元內(nèi)部提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      30. 根據(jù)權(quán)利要求17所述的處理器,其中所述計算單元包括與 每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列相關(guān)的表基址寄存 器,用于允許相關(guān)的數(shù)據(jù)組被存儲在每個局部可重構(gòu)填充和溢出隨機 存取存儲器陣列中獨立的地址。
      31. —種用于減少處理器中計算單元和地址單元之間的流水線停 頓的方法,包括響應算法的指令,在計算單元中計算結(jié)果; 在計算單元中的局部隨機存取存儲器陣列中存儲與所述算法的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)組;以及在所述計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射。
      32. 根據(jù)權(quán)利要求31所述的方法,其中所迷處理器包括被所述 計算單元共享的寄存器堆。
      33. 根據(jù)權(quán)利要求32所述的方法,包括對所有的計算單元局部 隨機存取存儲器陣列并行地填充來自所述寄存器堆的相同值。
      34. 根據(jù)權(quán)利要求32所述的方法,包括對局部隨機存取存儲器 陣列并行地填充來自所述寄存器堆的不同值。
      35. 根據(jù)權(quán)利要求32所述的方法,包括使所述局部隨機存取存 儲器陣列并行地溢出到所述寄存器堆。
      36. 根據(jù)權(quán)利要求31所述的方法,還包括當存儲在所述隨機存 取存儲器陣列的分區(qū)中的一個或多個值已被更新時,在所述計算電路 的狀態(tài)器件中進行指示。
      37. 根據(jù)權(quán)利要求36所述的方法,還包括在所述狀態(tài)器件中判 定是否應當溢出和保存所述隨機存取存儲器陣列中的值。
      38. 根據(jù)權(quán)利要求31所述的方法,還包括與先前的計算結(jié)果映 射無關(guān)地將計算結(jié)果映射到相關(guān)函數(shù)。
      39. 根據(jù)權(quán)利要求31所述的方法,還包括在各計算單元之間相 互獨立地將計算結(jié)果映射到相關(guān)函數(shù)值。
      40. 根據(jù)權(quán)利要求32所述的方法,其中來自寄存器堆的寄存器 被用作多個計算單元中的隨機存取存儲器陣列的索引。
      41. 根據(jù)權(quán)利要求32所述的方法,還包括將多個計算單元中的 隨機存取存儲器陣列的輸出組合到寄存器堆中的單個寄存器中。
      42. 才艮據(jù)權(quán)利要求39所述的方法,還包括使用與寄存器堆不同 的寄存器作為每個計算單元中的隨機存取存儲器陣列的索引。
      43. 根據(jù)權(quán)利要求39所述的方法,還包括將每個計算單元中的 每個隨機存取存儲器陣列的輸出放置在所述寄存器堆的不同寄存器 中。
      44. 根據(jù)權(quán)利要求31所述的方法,其中所述局部隨機存取存儲 器陣列包括查找表。
      45. 根據(jù)權(quán)利要求31所述的方法,還包括在所述局部隨機存取 存儲器陣列中存儲所述算法的預定指令組,以在計算單元內(nèi)提供計算 結(jié)果到相關(guān)函數(shù)值的直接映射。
      46. 根據(jù)權(quán)利要求31所述的方法,其中使用與計算單元中的每 個局部隨機存取存儲器陣列相關(guān)的表基址寄存器,將相關(guān)數(shù)據(jù)組存儲 在每個局部可重構(gòu)填充和溢出隨機存取存儲器陣列中獨立的地址。
      全文摘要
      通過響應算法的指令在計算單元中計算結(jié)果;在計算單元中的局部隨機存取存儲器陣列中存儲與算法的預定指令組的計算結(jié)果相關(guān)的預定函數(shù)組;并且在該計算單元內(nèi)提供計算結(jié)果到相關(guān)函數(shù)的直接映射,可以實現(xiàn)減少處理器中計算單元和地址單元之間的流水線停頓。
      文檔編號G06F15/00GK101297279SQ200680039988
      公開日2008年10月29日 申請日期2006年10月17日 優(yōu)先權(quán)日2005年10月26日
      發(fā)明者C·J·普倫德加斯特, C·M·梅耶, G·M·尤康, J·A·卡布洛特斯基, J·威爾遜, Y·斯坦 申請人:阿納洛格裝置公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1