專利名稱:生產(chǎn)數(shù)字信號處理器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及生產(chǎn)可編程處理器的方法,也涉及采用特殊技術(shù)生成可編程處理器性能模型的方法。
背景技術(shù):
及技術(shù)狀態(tài)由于快速變化的市場,未來的電信系統(tǒng)將對數(shù)字信號處理系統(tǒng)的靈敏性、短的設(shè)計時間和設(shè)計的重復(fù)使用方面提出高的要求。其它要求是低的功耗和小的硅面積。對于便攜式設(shè)備市場,將有用于語音、數(shù)據(jù)、圖象和影象通訊的電池供電的終端。在固定式系統(tǒng)中,集成化將增加,這導致系統(tǒng)中較高的功率密度。功耗問題必定對從系統(tǒng)水平、算法、體系結(jié)構(gòu)一直到設(shè)備和半導體制造過程的各級提出挑戰(zhàn)。
使用標準數(shù)字信號處理器(DSPs)不可能達到不同應(yīng)用所要求的價格/性能比。因此,在那些情況下的DSP必須針對實際應(yīng)用專門設(shè)計(ASDSP,Application Specific DSP—專用DSP)。這樣,一種可能性可能是使用標準DSP的處理器核心,加上為實際應(yīng)用定制的數(shù)據(jù)和程序的存儲器。輸入/輸出端口和外圍設(shè)備功能可以設(shè)計為在相同芯片(定制DSP)上的部件。
定制DSP方案的限制是固定的字長、核心的固定功能和速度,它們受到體系結(jié)構(gòu)的限制。一個完整的標準DSP核心的體系結(jié)構(gòu)不是設(shè)計成能處理許多不同的應(yīng)用,導致不使用可能具有特殊功能度和字長要求的許多應(yīng)用的硅面積。
一類DSP被稱之為專用算法DSPs。在這類DSPs中的體系結(jié)構(gòu)和功能度根據(jù)已實施的實際算法并考慮到系統(tǒng)在速度、硅面積、功耗和靈活性方面的要求設(shè)計。這類DSPs借助于自動編譯器工具或用于硅設(shè)計的普通工具構(gòu)成的純?nèi)ㄖ?full-custom)設(shè)計來進行設(shè)計。
設(shè)計DPSs的目前技術(shù)包括使用一個規(guī)定在處理器中作為一個程序?qū)崿F(xiàn)的算法的性能表示法,以及處理器硬件模塊及它們的邏輯連接的結(jié)構(gòu)描述。這些系統(tǒng)中的一個是在伯克利(Berkeley)大學研制的LAGER系統(tǒng),參見Shung,Jain,Rimey,Wang,Srivastava,Richards,Lettang,Azim,Thom,Hilfinger,Rabaey,Broderson“An Integrated CADSystem for Algorithm-Specific IC Design”,IEEE Transactions onComputer-aided design.vol.10,NO.4,April 1991。
在瑞典的Lund大學已研制成了第二個系統(tǒng),見Mats Torkelsson“Design of Application Specific Digital Signal Processors”,博士論文,Lund大學,瑞典,June 1990,Viktor Owall“Synthesis ofControllers from a Range of Controller Architectures”,博士論文,Lund大學,瑞典,Decmber 1994,第8章pp.102-。這個系統(tǒng)類似于LAGER系統(tǒng),并使用處理器體系結(jié)構(gòu)的性能描述來提取一組微操作。所提取的微操作組構(gòu)成可用的操作組,用于處理器的微程序。該微代碼程序是被實施的算法的描述以及諸如存儲器的附加說明。
發(fā)明概述因此需要比現(xiàn)有技術(shù)所采用的方案更面向半定制(semicustom)的方法,應(yīng)提供一個設(shè)計環(huán)境,它將填補自動編譯器工具與傳統(tǒng)的全定制DSP設(shè)計之間的空隙。在設(shè)計進程中,十分重要的是,利用全定制方法中的所有好處并把它們使用于半定制方法。由編譯器使用的自動設(shè)計、調(diào)度和資源分配在計算機程序中難以有效進行。一個關(guān)鍵思想則是把設(shè)計者放在應(yīng)有位置,手動分析算法和創(chuàng)建體系結(jié)構(gòu)并使用工具作為設(shè)計工作中的交互輔助手段。
因此本發(fā)明的一個目的是提供一個設(shè)計環(huán)境用于處理器設(shè)計空間探索。
另一個目的是提供一個至一個或幾個計算單元或處理器的算法分配,也提供實現(xiàn)性能估計的可能性。
這樣一來,可以提供一個迭代過程,包括分析算法,規(guī)定體系結(jié)構(gòu),書寫微碼和通過模擬微碼探索設(shè)計空間。
本發(fā)明因此是基于生成可編程處理器的性能模型的方法。這樣的處理器由硬件模擬如計算單元和控制單元構(gòu)成。處理器執(zhí)行來自存儲在控制單元中的一個程序的操作。性能模型是處理器硬件和由處理器執(zhí)行的程序的描述。
新建議的方法的主要優(yōu)點是處理器和在處理器中所執(zhí)行的微碼程序的模型化。處理器體系結(jié)構(gòu)的結(jié)構(gòu)模型和微碼程序(C的一個子集)被包括在一個且相同的文本文件中。
微碼程序是體系結(jié)構(gòu)的一個隱式描述,通過使用本方法,處理器體系結(jié)構(gòu)不需要顯示結(jié)構(gòu)描述。
該環(huán)境支持算法實施進入微程序的專用處理器體系結(jié)構(gòu)中。
在微碼中的變量名字與在圖形體系結(jié)構(gòu)描述中的實例名字匹配。數(shù)據(jù)在不同變量(寄存器、存儲器)之間的分配相應(yīng)于在體系結(jié)構(gòu)中的連接性。微碼以高級匯編語言書寫,在優(yōu)選實施例中它是C語言的子集。
處理器的這個單一格式性能模型及有關(guān)的微碼程序可以與來自一個庫的“bit-true(比特真)”模擬模型鏈接在一起,其中例如可以使用C++過載操作符。鏈接代碼則可以被用作事件驅(qū)動模擬器上的性能模擬模型或作為普通高級語言程序執(zhí)行。在處理器上提供一個異步I/O接口,它將可能借助于異步信號交換通訊在模擬器中并行運行幾個處理器。
這個書寫微碼和模擬的方法給出了把算法映射到一個處理器結(jié)構(gòu)的十分靈活的方法。借助于文本編輯器然后重新模擬,很容易在微程序代碼中進行更改。體系結(jié)構(gòu)描述可以在紙張上用圖形形象地描述,作為對應(yīng)用程序工程師的一種支持。由于在微碼中體系結(jié)構(gòu)的穩(wěn)式描述,不需要計算機易讀的體系結(jié)構(gòu)。
在公司Ericsson,微碼傳統(tǒng)地已被引入到寄存器傳送層次(RTL)模型并與硬件模型一起模擬。這個方案的缺點是在微碼被包括在硬件RTL模型之前,它不被檢驗。當檢驗硬件時,判斷出錯是在硬件中或軟件中,或兩者都有,是困難的。在這個層次上的模擬時間也比在性能等級上實現(xiàn)模擬要長幾個量級。
采用象上述的LAGER工具,微碼由編譯器根據(jù)算法生成,實現(xiàn)資源分配,調(diào)度和賦值。至編譯器的輸入已是結(jié)構(gòu)的和性能的描述。從硬件區(qū)、功耗和循環(huán)計數(shù)觀點看,這個自動生成處理器模型的方法不是十分有效。因此,一個分析算法和書寫微碼程序的更為手動的方法是更為可取的(高層次)。
在現(xiàn)有的技術(shù)中,為生成完整的處理器模型,需要來自處理器體系結(jié)構(gòu)例如一個結(jié)構(gòu)性描述、操作的提取的輸入,也需要來自算法(微碼程序)的輸入?,F(xiàn)有的方案要求用于提取處理器模型所需的工具。
集成電路的設(shè)計過程的步驟可以被劃分成兩部分,功能設(shè)計和電路硬件的實現(xiàn)。設(shè)計過程可以被表征為自頂向下和自底向上。這意味著,兩層之間的信息流是雙向的。在從層到層的改進處理過程的條件下,有一個從算法層向下到邏輯層的自頂向下(Top Down)的方法。也有自底向上的信息流,其根據(jù)邏輯和算述功能以及這些功能的性能(速度、面積、功耗)在目標庫中可獲得。本發(fā)明是在功能設(shè)計范疇,并將專用處理器(ASP)及有關(guān)微碼程序模擬成性能模型。
附圖簡介本發(fā)明現(xiàn)在將參照下列附圖通過不限于特定實施例的方法來詳述-
圖1是說明在生產(chǎn)一個數(shù)字信號處理器中所使用的各種元件的方塊圖,-圖2a是預(yù)處理程序和生成模擬的過程方塊原理圖,-圖2b是說明由圖2a的預(yù)處理程序和生成模塊新執(zhí)行的步驟之流程圖,-圖3是處理器頂層模板的一個例子,-圖4是處理器的模塊層的一個例子,-圖5是用以說明寄存器和各個線的在處理器中所包括的控制單元模板和地址通路模板的一個例子,-圖6是如在文本文件中所規(guī)定的數(shù)據(jù)通路體系結(jié)構(gòu)的一個例子,-圖7a和7b是說明程序語句和文的圖形表示的圖示。
優(yōu)選實施例的描述圖1是描述在數(shù)字信號處理器的結(jié)構(gòu)過程中的信息流和不同層之間關(guān)系的原理圖,該過程包括在功能設(shè)計環(huán)境中設(shè)計和模型化處理器并生產(chǎn)在IC芯片上制作該處理器的必要硬件。起始步驟是標注為1的體系結(jié)構(gòu)設(shè)想,它是欲生產(chǎn)的處理器的體系結(jié)構(gòu)的頭腦中的圖形或想法。這個體系結(jié)構(gòu)不必在紙上或計算機的顯示算上作為圖形圖象存在,可是可能被認為執(zhí)行某些新要求功能的想象中的設(shè)備。
微碼程序以高級語言(HLL)書寫,結(jié)果是標注為3的一個文本文件。在分析由處理器執(zhí)行的功能之后書寫代碼,如由上方塊“算法”5所示,同時所希望或所要求的處理器的體系結(jié)構(gòu)也如方塊“體系結(jié)構(gòu)模板”7所示。微碼程序隱式規(guī)定處理器的整個功能結(jié)構(gòu),即執(zhí)行操作的所有寄存器、存儲器和單元,在部件之間的線和總線、輸入/輸出設(shè)備,外部線和總線等。微碼文本文件的語法和操作/操作符必須與在參考庫9中保存的規(guī)則、定義等一致。
在參考庫9中的定義或多或少直接對應(yīng)于在庫11中所保存的性能模型,庫11包括“bit-true”模型,也以高級語言表示。參考庫9包括一個具有如下表所呈現(xiàn)的有關(guān)的性能模型的操作組。
模型 表示/功能 格式操作組原始操作(見下面) 文本文件數(shù)據(jù)通路功能(見下面)地址和控制通路功能處理器模板紙張或計算機保存 圖形控制單元模板 紙張或計算機保存 圖形性能模型 Bit-true模擬模型 HLL庫11的性能模型也或多或少直接地依次相應(yīng)于在目標或VHDL庫13中所保存的各種表示。對于每個操作和功能,因而在目標庫13中將有一個硬件裝置。象速度、面積和功耗及其它參數(shù)的性能和有關(guān)的信息可以在實際的目標庫13存取并傳送到性能模型。
目標庫13可以僅包括VHDL(RTL)模型,生產(chǎn)一個所希望的硅芯片的實際硬件裝置的決定可以在設(shè)計項目的后一階段作出。如果情況是這樣,不能獲得面積、速度或功耗的絕對值,僅能進行相對估計。
一個完整的設(shè)計環(huán)境由兩個特定環(huán)境組成。第一個,功能設(shè)計環(huán)境在這里是重要的一個。第二個環(huán)境是實現(xiàn)設(shè)計環(huán)境,它是硅ASIC設(shè)計的傳統(tǒng)設(shè)計環(huán)境。
這兩個環(huán)境之間的接口是VHDC模型,它是在寄存器傳送層RTL上處理器硬件的模型。該模型為寄存器、存儲器、算術(shù)功能和控制單元模板存在并被標準化。
目標庫或VHDL庫13因此具體地在寄存器傳送層(RTL)包含以VHDL格式的模型。該模型是是DSP硬件的模塊和不同層的結(jié)構(gòu)模板。
頂層由包括I/O定義的信號處理器核心組成,如將參照圖3所要描述的那樣。
如將參照圖4所要描述的那樣,第二層建造位于核心中的實例。一個核心由一個控制單元模型CV和內(nèi)部或外部程序存儲器Pmem組成。跟著的模型可以有一個或幾個實例、地址通路AP、數(shù)據(jù)通路DP和存儲器Mem。一個核心因此可以有幾個DP模塊和/或AP模塊。每個模型有一個或幾個在結(jié)構(gòu)VHDL描述中的模板。
第三層是最低層,它由符號如Adders,Registers,Multipliers,Shifters,……和為特定用途或需要給庫增添的更復(fù)雜功能組成。這些模塊和存儲器以VHDL如ENTITY和ARCHITECTURE描述方式被模型化,這些大寫的字是在VHDL中的保留字。
微碼程序以高級語言書寫,如在參考庫9中所規(guī)定的那樣。代碼在算法的分析階段之后被書寫,體系結(jié)構(gòu)定義以及處理器的模型18和在處理器上執(zhí)行的程序?qū)⑹窃谖谋疚募械慕Y(jié)果。為了能在計算機上執(zhí)行該模型,方塊11的bit-true“性能模型”必須被鏈接到該模型,以及也被鏈接到與同步功能結(jié)合在一起的數(shù)據(jù)輸入和輸出的功能。
所完成的“性能模型”18則可以被用于模擬19并作為生成硬件21的一個源。
為了能如由文本文件3規(guī)定的那樣使用模型,它通過在計算機上運行預(yù)處理器程序15來處理。在執(zhí)行預(yù)處理器程序15中,它將需要如在文本文件3中操作所涉及的庫11中的bit-true性能模型,來自實現(xiàn)環(huán)境的性能信息,如果可獲得的話,為模擬的目的,也需要控制模擬外部激勵的適當信號的輸入和輸出的功能,在外部控制方塊17中的主代碼方塊,以便包括性能模型和各種功能并把文件包括到在18中的一個完整程序內(nèi),它可以被鏈接到適當?shù)哪M器19。
當需要各種項目時,它們被鏈接到由方塊15生產(chǎn)的主程序18,它是處理器核心21的完整性能模型,如果它們是作為存儲程序例程或圖形細節(jié)的計算機的話,否則它們可能被適當?shù)丶睢?br>
在方塊3中存儲的完整的文本文件因而被預(yù)處理器程序15使用,用于生成一個模擬在方塊19中運行的被設(shè)計處理器的操作之程序,同時也作為方塊21所示的生成硬件和軟件的源,參見圖2a的圖形,它示出預(yù)處理程序15和生成模型21的相互關(guān)系,并說明與這些模型有關(guān)的程序部分。圖2b示出相應(yīng)的流程圖。
預(yù)處理器程序15實現(xiàn)如下步驟在開始方塊201之后,在方塊203中讀取在3中存儲的文本文件。然后,在方塊205中檢驗文本文件的語法錯誤,也參見圖2a的方塊15a。如果當在方塊207中測試時遇到錯誤,則通過顯示或生成適當?shù)某鲥e消息來指出錯誤見方塊209和15b。然后預(yù)處理程序?qū)⒃诜綁K211中暫停操作,并待一個新的待處理文本文件。如果文本文件具有可以被進一步處理的正確格式,例如在可選擇的步驟15c或方塊213中,其中例如在一種紙上手動生成由文本文件所代表的體系結(jié)構(gòu)的圖形圖象。然后這個圖象通過如方塊215所示的與所希望的體系結(jié)構(gòu),例如在計算機和網(wǎng)表(netlist)的監(jiān)視器上所示的圖形圖象比較被證實。該比較可以由計算機自動進行,或由處理器設(shè)計者用肉眼進行,然后由一些手動輸入操作為設(shè)計者指明文本文件所代表的體系結(jié)構(gòu)是否與所希望的體系結(jié)構(gòu)匹配。
如果文本文件格式正確,那么如由圖2a的方塊15d和由圖2b的過程步驟221-225所示,文本文件可以由預(yù)處理程序進一步處理,用于生成性能模型以及因而用于模擬體系結(jié)構(gòu)的一個基礎(chǔ)。于是在第一個步驟221中,文本文件被轉(zhuǎn)換成真正的C++代碼,實際的含義如下文將作更多描述的那樣為并行操作被轉(zhuǎn)換為串行地或一個接一個地陸續(xù)執(zhí)行。對于模擬的目的,循環(huán)計數(shù)和測量參數(shù)的指令被增添到代碼中。然后,如從圖1的方塊17所獲得的那樣,也增添代表I/O和外部同步控制的操作。為構(gòu)成一個完整的可執(zhí)行程序,以通常的C程序風格增添一個主程序“main()”。然后在步驟223中編譯C++代碼,在步驟225中已編譯程序被鏈接到其它程序模塊。然后獲得一個可執(zhí)行程序,在某種意義上可以說它是圖1的方塊18的“性能模型”,它也可以被輸入到方塊19模擬由在3中的文本文件定義的體系結(jié)構(gòu)。
如圖1的方塊21所示的VHDL生成部分生成一個結(jié)構(gòu)性的的與VHDL模型無關(guān)的實現(xiàn),它包括數(shù)據(jù)通路、控制單元和程序存儲器,如方塊3的文本文件中原來規(guī)定的那樣來自微碼和體系結(jié)構(gòu)描述。在方塊21中執(zhí)行的過程由圖2a的子方塊21a~21b和圖2b的步驟231~239示出所有的操作被基于在3中的文本文件。
在被生產(chǎn)的信號處理器,尤其在其中的控制單元模塊中所執(zhí)行的實際微程序的生成在生成方塊21的方塊21a中進行。這個生成可能可以使用一些立即被轉(zhuǎn)換的文件,它包括由在方塊15d和子步驟221中預(yù)處理程序15所生成的微代碼,或者也使用在3中存儲的原來的文本文件。因此在步驟221中,信息通常從在3中的文本文件內(nèi)提取,因而操作可以被映射在被使用的語言的實際指令上,并因而可以生成一個符號微代碼。在接連的子步驟233中,所獲得的微代碼被轉(zhuǎn)換成以VHDL格式的一個適當?shù)谋?,該格式包含例如包括一個ASCII字符“1”和“0”序列的二進制表。這個表因此包括該程序,它會成為程序存儲器的VHDL模型并是由CU執(zhí)行的微程序。
有關(guān)硬件要求如字長、寄存器、操作、存儲器、它們之間的連接線等的信息從在3中的程序代碼中提取,并被用于在方塊21b中處理器核心的生成,也如圖2b的子步驟中所示。這個被提取、被組合的信息可以輸出或顯示成發(fā)生器信息給處理器設(shè)計者,他可以使用它用于手動編輯或手動生成,意思是在步驟235之后過程則被停止,等待某個信號用于繼續(xù)順序的過程步驟。更具體來說,包括I/O定義的處理器核心被從文本文件中生成,從此包括相關(guān)的操作、寄存器、存儲器的更詳盡的體系結(jié)構(gòu)被用于構(gòu)成控制單元和適當?shù)腁Ps、DPs、Mems以及這些模塊如何被連接。
然后在方塊21c和步驟237中,處理器核心硬件的VHDL模型被生成,它因此是結(jié)構(gòu)化的與VHDL模型無關(guān)的實現(xiàn),根據(jù)方塊21b和子步驟235的體系結(jié)構(gòu)描述,包括一個或多個數(shù)據(jù)路、一個或多個地址通路、控制單元和程序存儲器。
最后,在方塊21d和子步驟239中,處理器核心的硬件描述與VHDL微碼表在方塊21d和子步驟239中被鏈接或組合起來,以形在一個完整的VHDL描述。然后也使用一個結(jié)構(gòu)化VHDL體系結(jié)構(gòu)網(wǎng)表,它是按照VHDL標準的硬件的結(jié)構(gòu)規(guī)范。這個結(jié)構(gòu)規(guī)范可以從圖形表示或從VHDL模板中提取,具體包括不能從文本文件中提取的控制單元之模塊CU的連接。它因此是處理器模塊連接性的一個網(wǎng)表,如圖3-6所示。在鏈接過程中自然也使用來自VHDL庫13的模板。因此獲得5VHDL模型無關(guān)的實現(xiàn),它被用于實際生產(chǎn)信號處理器。這樣按13中據(jù)VHDL庫查詢的在方塊21d中VHDL最低層模型,即寄存器的RTL模型、算術(shù)功能、存儲器被邏接在一起,首先內(nèi)部地至模塊DP、AP和Mem,然后在頂層上包括I/O功能。VHDL網(wǎng)表鏈接不同模塊,比較項目DP_1...N、AP_1...N、Men_1...N、Pmem和CU,如圖4所示。
程序存儲器Pmem可能作為ROM或RAM,內(nèi)部或外部至核心來實現(xiàn)。
模擬微碼(通過在方塊15d中生成可執(zhí)行代碼來進行模擬,這個代碼等效于被使用的在方塊21中生成的實際微碼)的目的是-檢驗微碼。
-獲得應(yīng)用程序所要求的循環(huán)數(shù)。
-估計功耗。
-估計所生產(chǎn)的芯片上所要求的物理面積。
所設(shè)計的處理器的體系結(jié)構(gòu)以三個等級層次表示。頂層由包括I/O定義的處理器核心23組成,見圖3的圖形表示。
因此有中斷信號輸入端INT_A...INT_2,復(fù)位信號輸入端RESET,用于使處理器核心復(fù)位,數(shù)據(jù)傳送輸入/輸出DATA,用于連接到適當?shù)臄?shù)據(jù)總線以及攜載處理器進行外部通訊所需要信號的其它輸入/輸出。
盡管處理器核心的內(nèi)部設(shè)計假定一個同步設(shè)計風格,但對外部至核心的I/O通訊仍支持異步信號交換。處理器將執(zhí)行或?qū)嵤┑乃惴ɑ蛳到y(tǒng)可以在同一芯片的幾個處理器核心或不同芯片上加以區(qū)分。異步信號交換和中斷/應(yīng)答信號使之易于區(qū)分幾個處理器核心上的系統(tǒng)和通過性能模擬進行設(shè)計空間探查。
象PCM編碼、FFT(快速富里葉變換)或DCT(離散余弦變換)的功能對處理器核心23可以是外部或內(nèi)部的。如果功能是內(nèi)部的(即必須適合于在數(shù)據(jù)通路模塊范圍內(nèi)),對在處理器庫中的功能必須具有所有模型(性能模型),在VHDL庫13中必須具有功能的實現(xiàn)。如果功能對處理器核心23是外部的,除I/O通信和異步信號交換外,在功能方面沒有其它要求。對于模擬的目的,當然外部控制方塊則應(yīng)能提供正確的信號。
見圖4,第二層建立位于核心23中的實例或模塊。因而核心23包括一個控制單元模塊31,CU,和一個內(nèi)部或外部程序存儲器Pmem。下列模塊可以有一個或幾個實例。地址通道35,AP1,AP2,…,APn,數(shù)據(jù)通路37,DPI,DP2,…,DPn和存儲器39,Mem1,Mem2,…Memn。核心23可以有幾個DP模塊37和/或AP模塊35。這是應(yīng)用程序工程師/設(shè)計者在規(guī)定核心23的體系結(jié)構(gòu)時必須作出的一個折衷,即區(qū)分在同一核心23中幾個Dps37上的算法或使用幾個核心23以在其上區(qū)分算法。
每個上述的模塊有一個或幾個模板。模板是在一定范圍內(nèi)預(yù)定義的一個模塊。圖5示出CU31和APs35的一個例子,其中實線畫出的部分構(gòu)成基本結(jié)構(gòu),虛線是如何使用模板建造具有某個應(yīng)用程序的相關(guān)AP的實際CU的一個例子。
這樣一個模板的用途是對模塊施加限制并保存一個結(jié)構(gòu)設(shè)計方法。這將簡化在硅芯片上實現(xiàn)結(jié)構(gòu)的流水線和定時分析。這樣一來,應(yīng)當規(guī)定主模板,因而它們在體系結(jié)構(gòu)中的限制和靈活性之間實現(xiàn)平衡。
象圖5所示的模板被用于書寫存儲在方塊3中的文本文件,同時使用存儲在參考庫9中的定義。這將構(gòu)成第三層,它是最低層,包括符號如地址、寄存器、多路器、移位器、…或為特殊用途需要而添加到庫中的更復(fù)雜功能,其中庫包括參考庫、性能模型和VHDL庫。原始操作/功能和其它功能必須與參考庫9中的操作代碼組相應(yīng)。
參考庫9包含算術(shù)操作的說明和語法信息,或如這里所定義的,可以在數(shù)據(jù)通路和地址通路中被執(zhí)行的原始操作/功能。
-原始操作“+”,“-”,“++”、“--”,“*”,“<<”,“>>”-原始功能(在HW中功能模塊)。
DPabs(),norm(),div(),dct(),fft()APbuff(),end buff(),buff_p()-Dataflow(賦值操作符)“=”式中abs()是取絕對值的功能,norm()是歸化,dir()是相除,dct()離散余弦變換,fft()快速富里葉變換。
這些僅是在數(shù)據(jù)通路中可以被包括的功能的例子。
存儲在方塊3中的文本文件中所使用的表達式可具有下列形式Acc1…n=±(a±b);式中左邊的累加器是在一具數(shù)據(jù)通路模塊DP中的Acc1,Acc2,…,Accn(表示出),并如符號“=”所表示的,可以被賦于寄存器“a”和“b”的和或差值。在存儲在3中的文本文件內(nèi),寄存器被說明為變量。
原始操作符“<<”和“>>”分別是算述左移和算術(shù)右移。常數(shù)“k”或變量決定移位的步數(shù)
Acc1..n=±c<<k(Acc1..0±b);Acc1..n=±c>>k(Acc1..0±b);數(shù)據(jù)的賦值描述處理器內(nèi)的數(shù)據(jù)流。數(shù)據(jù)可以在寄存器、存儲器和輸入/輸出寄存器之間被賦值(被傳送)。
功能在HLL中可以被稱為原功能Acc1..n=abs(a);這里寄存器“a”中內(nèi)容的絕對值被裝入累加器Acc1,…,Accn。
數(shù)據(jù)通路37和地址通路35的功能可以是不同的,并且通常是如此的,AP35有例如一個循環(huán)緩沖功能,用于計算存儲在存儲器中的循環(huán)緩沖用的地址指針<pre listing-type="program-listing"><![CDATA[const int*buff-p(i mern-A)=adr; 初始指針i . .buffer(i mem-A start stop); 循環(huán)緩沖區(qū){(語句)mem-A+t;增量指針(語句)}end_buff(i mem-A) ;把指針存儲在堆棧]]></pre>在程序中的控制流由程序計數(shù)器、轉(zhuǎn)移、條件轉(zhuǎn)移和循環(huán)控制。程序計數(shù)器的增量在程序代碼中不明顯表示。按照缺省,對于程序代碼中的每個語句,計數(shù)器被增加1,除非它被任何控制功能所溢出。然而,在程序代碼中每個語言用分號“;”結(jié)尾,它可以被看作為程序計數(shù)器的一個增量。
在微碼或語句中可以執(zhí)行并行操作(幾個微操作的并置)。并行微操作在程序代碼中用逗號“,”分隔。
在處理器中控制數(shù)據(jù)流的操作為-條件操作<op>∷=“<”,“>”,“<=”,“>=”,“==”,“!0”-條件語句if(),例外操作
-循環(huán)for(),for(;;)-無條件語句goto標號-控制功能(在控制單元中實現(xiàn))hold(),wait(),pwd(),en_int(),disab_int()所有條件和控制功能都在控制單元硬件中實現(xiàn),不必在參考庫或性能庫9或11中實現(xiàn),只不過其中的語法可能在參考庫9中被說明。這個使處理器模型化的方案利用實際的高級語言,其中這些功能都被隱含包括,不需要任何單獨在性能級對功能模型化。
條件語句的格式可以為<pre listing-type="program-listing"><![CDATA[if(a<op>b);條件轉(zhuǎn)移{}另外操作{} 或if(a<op>b);單個操作<操作>;一個循環(huán)控制功能被寫作“For”循環(huán)for(k=m,k>=0;k--) ;裝載循環(huán)計數(shù)器{} ;轉(zhuǎn)移以遞減循環(huán)計數(shù)器或for(k=m;k>=0;k--) ;單次重復(fù)<操作>或for(;;) ;無窮循環(huán)]]></pre>
循環(huán)計數(shù)器“k”被位于地址通路35中的一個內(nèi),并用初始值“m”裝入以及遞減至零。這是功能的一個限制,循環(huán)計數(shù)器只能遞減至零。從硬件的觀點看檢測一個負的狀態(tài)更有效。這是程序員的一個小缺點,很容易處理。
無條件轉(zhuǎn)移指令正在用標號的程序地址裝入程序計數(shù)器goto標號;轉(zhuǎn)移到地址下面的控制功能影響程序流從而保持程序計數(shù)器或用新值(標號)裝載它hold(n) ;停止執(zhí)行n循環(huán)wait(<標號>) ;等待喚醒pwd(<標號>) ;斷電en_iht(A...2) ;開啟中斷disab_int(A...2) ;關(guān)閉中斷外部中斷由兩個功能Enable和Disable控制。參數(shù)是中斷輸入端口INT-A,…,INT_Z上的信號??梢杂袕牧阒翍?yīng)用程序所要求那樣多的中斷端口數(shù)。wait和pwd功能用外部中斷或復(fù)位信號終止。
存儲在方塊3中的微碼程序使用普通的文本編輯器書寫,并利用處理器的語義模型和在目標處理器上執(zhí)行的微碼程序。
從算法描述往下至方塊3中的文本文件的變換過程使用手動評價實現(xiàn)。該過程是迭代并可以下列方式定義-算法,方塊5,和系統(tǒng)性能分析。
-基于處理器模板,方塊7的目標體系結(jié)構(gòu),方塊1的定義。
-基于在參考庫9中所說明的原始操作和功能寫入存儲在3中的程序代碼。
寫入/編輯文本文件中代碼和更新體系結(jié)構(gòu)的過程被重復(fù),直到獲得一個可接受的結(jié)果為止。首先在預(yù)處理程序中檢驗代碼的語法,然后在以下列步驟中由方塊15的預(yù)處理程序用作源代碼-通過所用參考庫9的定義進行文本文件的語法檢查。
-如由具有所預(yù)期的體系結(jié)構(gòu)的文本文件所指定的那樣進行一個可選的處理器的一致性檢驗。例如,在預(yù)處理程序15中,處理器或其中部件的邏輯構(gòu)造的圖形說明被顯示在顯示器屏上。然而,該體系結(jié)構(gòu)最好由設(shè)計者根據(jù)顯示器屏上處理器和其中部件的邏輯構(gòu)造的圖形說明那樣手動地產(chǎn)生。
-文本文件源代碼的預(yù)處理。
-并行操作的串行化,即用“;”替代“,”。
-增添性能測量參數(shù),如方塊22所取的那樣。
-如果必須模擬或性能測試的話,建立方塊17中的I/O、外部控制(核心包裝)。
-編譯源代碼以便重新配置目標代碼。
-鏈接性能、“bit-true”功能。
所鏈接的經(jīng)編譯的目標代碼可以被用于在適當模擬器上的模擬。
存儲在方塊3中的文本文件的程序代碼包括兩部分,說明部分和具有程序語句的體。在說明部分規(guī)定存儲器的分配。在本例中存儲器包括RAM、ROM和寄存器。寄存器可以是三種不同類型輸入、輸出和寄存器。由于I/O信號交換的緣故,輸入和輸出寄存器必須被單獨規(guī)定。
下面是一個說明的例子REG Merge[16],Mareg[12],Sacc[22],Acc[22];INPUT Ireg[16];OUTPUT Oreg[16];RAM Mem1[256,16];ROM Mem2[1024,16];其中第一行規(guī)定典型的存儲元件,后兩行規(guī)定分別規(guī)定典型的暫存器和存儲固定數(shù)據(jù)。中間的行規(guī)定輸入/輸出寄存器。程序存儲器Pmem必須另行規(guī)定。
上述說明的體系結(jié)構(gòu)可以在示出數(shù)據(jù)通路37的體系結(jié)構(gòu)的圖6中看到。
除上面所說的存儲器外,在這個體系結(jié)構(gòu)中還有兩個原始操作相乘“*”和相加“+”。在圖6中用箭頭和圓點說明連接性或靜態(tài)數(shù)據(jù)流。箭頭表示至模塊的輸入端,圓點表示模塊的輸出端被連接至總線。
如圖7a和7b所見,動態(tài)數(shù)據(jù)流相反由程序代碼中的語句規(guī)定,且是當語句被執(zhí)行時,以一特定時間在文本文件的程序代碼中從右邊至左邊的一個流。這是當在總線上發(fā)生一個傳送時與“圓點至箭頭”的記號相同的。根據(jù)程序存儲器中的微碼執(zhí)行從另一方面的語句由CU控制并通常定義為控制流。
在體系結(jié)構(gòu)中所有的存儲器元件有一個實例名字,這個名字必須與在說明列表中的變量名相同。為概括說明-在參考庫9中說明原始操作。
-在程序文本文件中說明存儲器元件。
一個基元的實例在體系結(jié)構(gòu)中由它的連接性標識。在圖6中的相加操作“+”由一個操作數(shù)輸入端上至Ireg、Mereg的連接與在另一個操作數(shù)輸入端上至Acc-bullet和Sacc的連接標識。輸出由至Sacc的輸入端的連接標識。這是與語義說明相同的Acc=Acc+Ireg;這里輸出被賦值給表達式左邊上的Acc。
然而,在這種標識操作符的方式中可能存在模糊性,如果我們有兩個完全相同的操作符,它們輸入端和輸出端都被連接到同一組寄存器的話。那么無法決定使用哪一個。這不是進行設(shè)計的常用方式,應(yīng)該避免。例如可能有兩個并行連接的類似的操作。可以通過使用不同的操作符號來區(qū)別它們。通常,當使用相同類型的并行操作時,它們至少被連接到不同的輸出寄存器。
文本文件的程序代碼描述所生產(chǎn)的處理器中的數(shù)據(jù)/控制流,并是按如上面討論的處理器連接性語義描述相同的方式。表示程序代碼與處理器體系結(jié)構(gòu)之間關(guān)系的另一個方式是計算機程序是處理器體系結(jié)構(gòu)的低級程序語言如匯編程序語言的隱式描述的事實。這個事實在這里被使用,以便通過使用模板給體系結(jié)構(gòu)施加限制并通過使用參考庫9具有嚴格的程序代碼規(guī)則。下面是為圖6的目標DP體系結(jié)構(gòu)寫入的程序的例子。
根據(jù)存儲器元件的說明,我們可以看到一些元件的字長與另一些的字長是不同的。評價和生成程序與硬件假定字的最高有效位賦值,如果左邊有最短字長的話。如果不是最高有效位賦值,變量的位段必須被規(guī)定,例如Mem=Acc[6,21];地址計算“adr”和循環(huán)控制變量(寄存器)“k”是基于圖4中所示的控制器模板。
粗體的操作是由數(shù)據(jù)通路37執(zhí)行的操作,規(guī)定功能細目的其它操作或語句。
如下面的程序例子可見,數(shù)據(jù)通路37的體系結(jié)構(gòu)可以從代碼執(zhí)行。地址通路35也是這種情況。
<pre listing-type="program-listing"><![CDATA[for(;;) //無窮循環(huán) { adr=0;//在DP中不包括地址寄存器 for(k=127;k>=0;k--) { MemA=Acc //寫入存儲器 Mareg=MemA //存儲器讀出 adr=adr+127, //在AP中地址寄存器遞增 Oreg=Acc;//累加器輸出 Mereg=MemA //從存儲器讀出 adr=adr+t; Acc=Acc+Mereg; MemA=Acc; Acc=Sacc+Ireg //增加Sace和輸入 Sacc=Mareg*Mereg //相乘 adr=adr-127;]]></pre>為生概括生成性能模型的方法的重要特性,可以表述如下-基于處理器模板定義目標體系結(jié)構(gòu)。
-以單一文本文件書寫程序代碼,其基于所說明的原始操作和功能、存儲在參考庫中的一組語法和編程規(guī)則。
--在參考庫中說明原始操作和功能。
--在程序文本文件中說明存儲器元件。
--在摘要/模型層一對一映射、變換,不需進行任何綜合。層之間有一對一關(guān)系--參考庫/文本文件 操作-功能/變量--性能bit-true模型所實現(xiàn)的功能/變量--目標體系結(jié)構(gòu)VHDL庫/實例--基于目標體系結(jié)構(gòu)的隱式描述這一事實,標識來自程序代碼的目標體系結(jié)構(gòu)中的基元、功能和實例。
權(quán)利要求
1.產(chǎn)生具有預(yù)定結(jié)構(gòu)和預(yù)定功能的數(shù)字信號處理器的方法包括下列步驟-確定至少一個處理器部分的體系結(jié)構(gòu),-基于所確定的體系結(jié)構(gòu)對相應(yīng)電路進行布局配置描述,基于布局配置描述作出相應(yīng)電路的設(shè)計圖,-根據(jù)布局配置加工處理器芯片,其特征在于-在處理器部分進行的布局配置描述中,處理器部分結(jié)構(gòu)被編碼為包括每個變量具體特性的變量定義,該變量表示處理器中的寄存器,還被編碼為操作和/或功能,它們將由該處理器部分使用變量作為自變量來執(zhí)行,以及-這些變量定義以及操作和/或功能被解釋以構(gòu)成執(zhí)行功能的各個寄存器和單元以及連接寄存器和單元的線。
2.按照權(quán)利要求1的方法,其特征在于-在進行布局配置描述中,定義以及操作和/或功能被寫入作為文本文件,以及-文本文件被順序地或連貫地解釋,從文件的開頭開始。
3.按照權(quán)利要求1的方法,其特征在于-變量定義與操作和/或功能基本上有利于整個處理器;以及-當進行解釋時,使用處理器的基本的預(yù)定的結(jié)構(gòu),處理器因此具有至少一個與程序存儲器相關(guān)的控制單元,至少一個地址通路模塊,至少一個數(shù)據(jù)通路模塊和至少一個存儲器模塊。
4.按照權(quán)利要求3的方法,其特征在于在變量定義與操作和/或功能中算術(shù)操作的出現(xiàn)將發(fā)信號通知數(shù)據(jù)通路模塊中的算術(shù)單元在被解釋為數(shù)據(jù)通路模塊中寄存器的被運算的變量。
5.按照權(quán)利要求3的方法,其特征在于,操作和/或功能包括一個特定操作,用于并行或同時執(zhí)行由這個特定操作鏈接的操作和/或功能,在變量定義與操作和/與功能中這個特殊操作的出現(xiàn)將發(fā)信號通知處理器將包括至少相同數(shù)目的算術(shù)單元,在每個數(shù)據(jù)通路模塊中一個,在被解釋為各個數(shù)據(jù)通路模塊中寄存器上的被運算的變量。
全文摘要
在生產(chǎn)數(shù)字信號處理器中使用生成的性能模型(18)。這樣一個處理器由硬件模塊如計算單元和控制單元組成。性能模型(18)是處理器硬件和由處理器執(zhí)行的程序的描述,該模型是以HLL可編程語言寫入的可執(zhí)行程序代碼。首先處理器或它的一部分使用預(yù)定的模板(17)被確定(1)。相應(yīng)電路的布局配置描述基于所確定的體系結(jié)構(gòu)進行(21),這個布局配置描述被用于產(chǎn)生相應(yīng)電路的設(shè)計圖,因而半導體芯片可以按照設(shè)計圖加工。當進行處理器部分的布局配置描述時,處理器或它的一部分的結(jié)構(gòu)在文本文件(3)中被編碼為變量定義與操作和/或功能,其將采用變量作為自變量來執(zhí)行。這些定義被解釋(21)以構(gòu)成執(zhí)行功能的各個寄存器和單元以及連接寄存器和單元的線。文本文件(3)也被用于制作性能模型(18),它又可以被用于模擬(18)處理器。因而獲得建造適合的信號處理器的一種快速方法,這個方法被電路設(shè)計者用于與計算機軟件交互。
文檔編號G06F17/50GK1202972SQ96198518
公開日1998年12月23日 申請日期1996年10月2日 優(yōu)先權(quán)日1995年10月3日
發(fā)明者R·K·-G·安德森 申請人:艾利森電話股份有限公司