<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > Cypress與HI-TECH發(fā)布最新編譯器,加倍PSoC器件的存儲(chǔ)能力

          Cypress與HI-TECH發(fā)布最新編譯器,加倍PSoC器件的存儲(chǔ)能力

          作者: 時(shí)間:2007-10-06 來(lái)源:網(wǎng)絡(luò) 收藏

          Cypress半導(dǎo)體公司和HI-TECH Software日前宣布了一項(xiàng)新的編譯技術(shù),能夠擴(kuò)展可配置PSoC混合信號(hào)陣列的存儲(chǔ)容量和性能。這款新的ANSI C編譯器,即面向PSoC混合信號(hào)陣列的HI-TECH C PRO,開拓了HI-TECH的Omniscient Code Generation(全知生成,OCG)技術(shù),能夠從根本上降低PSoC的量。

          PSoC混合信號(hào)陣列集成了可編程的模擬和混合功能,帶有一個(gè)8位MCU內(nèi)核,高達(dá)32KB閃存和高達(dá)2KB的SRAM。能夠廣泛用于成本敏感、空間受限的消費(fèi)類應(yīng)用,包括觸摸屏接口、電動(dòng)機(jī)控制以及近感探測(cè)及其它。PSoC設(shè)備能夠進(jìn)行重配,在相同硅片上執(zhí)行多個(gè)獨(dú)立的功能,因此能夠減少元器件數(shù)量、縮減電路板空間,并降低功耗。

          雖然在PSoC器件上增加可重置功能并不會(huì)增加對(duì)硅芯片的需求量,但是每一個(gè)可重置功能都需要額外的程序。在一些應(yīng)用中,附加功能的增加將導(dǎo)致程序代碼量大于片上閃存。此外,較大的軟件棧和變量需求也可能使片上SRAM達(dá)到極限,從而增加未發(fā)現(xiàn)的棧溢出的可能性。截至目前,解決SRAM和閃存局限的做法是:1)限制終端產(chǎn)品的功能,2)將應(yīng)用到更為昂貴、帶更多SRAM和閃存的PSoC器件,或者3)手動(dòng)進(jìn)行代碼的匯編工作,從而減少程序、棧和變量所占空間-一個(gè)非常麻煩且耗時(shí)的任務(wù),在很大程度上會(huì)限制編程代碼的可性。但是事實(shí)上,所有這些選擇都不具備足夠的吸引力。

          面向PSoC混合信號(hào)陣列的HI-TECH C PRO編譯器使用OCG技術(shù),可以在編譯前檢查所有的程序模塊,從而優(yōu)化指針、寄存器和棧分配,并減少冗余代碼。這款編譯器還能夠釋放SRAM,并通過直接編譯可尋址的優(yōu)化功能棧(面向所有非遞歸和不可重入代碼),達(dá)到減少對(duì)PSoC器件變址寄存器的資源爭(zhēng)奪。由于代碼量減少使執(zhí)行變少,所以新編譯器能夠提高PSoC器件的性能。

          與那些宣稱“全局優(yōu)化”,但是卻僅在單獨(dú)的程序模塊中運(yùn)行的寄存器有所不同,Omniscient Code Generation會(huì)檢查全部程序中的每個(gè)模塊,并對(duì)所有編程模塊進(jìn)行優(yōu)化。PSoC器件中的C語(yǔ)言代碼(使用OCG技術(shù)進(jìn)行編譯)量,僅僅是其它競(jìng)爭(zhēng)型編譯器所產(chǎn)生代碼量的50%,從而使任意PSoC器件片上閃存的程序代碼有效存儲(chǔ)量翻番。既然執(zhí)行的代碼數(shù)量得到減少,那么性能自然得以提升。

          SRAM的使用率更是得到了提高,因?yàn)镺CG了解并且對(duì)變量和編譯棧所需要的存儲(chǔ)容量進(jìn)行準(zhǔn)確分配,甚至能夠決定指針變量的范圍,并在可能的情況下分配單字節(jié)指針。這樣做的效果,就是編譯器增加了SRAM的可用性,有的時(shí)候甚至能提高相當(dāng)大的百分比。此外,通過對(duì)程序所需的最大深度靜態(tài)設(shè)置棧,OCG潛在阻止了災(zāi)難性的棧溢出。

          基于所有程序模塊的調(diào)用關(guān)系圖和指針引用圖。在進(jìn)行編譯的準(zhǔn)備過程中,OCG編譯器會(huì)針對(duì)程序中的每個(gè)模塊生成部分編譯過的代碼庫(kù)。然后,它會(huì)針對(duì)所有這些庫(kù)功能(在程序中隨處進(jìn)行引用)進(jìn)行尋找,并建立一個(gè)“調(diào)用關(guān)系圖”。一旦調(diào)用關(guān)系圖完成,那些從來(lái)不被調(diào)用的功能被移除,編譯器對(duì)那些被稱為可重入(re-entrantly)的功能進(jìn)行辨別和標(biāo)注,例如來(lái)自主代碼行的功能以及中斷功能。

          OCG編譯器還能夠在每個(gè)程序模塊中生成任意指針的指針引用圖。由于編譯器知道指針指明的對(duì)象大小,所以它能夠發(fā)現(xiàn)任意對(duì)靜態(tài)分配對(duì)象的訪問,從而提醒編程人員可能的無(wú)效存儲(chǔ)訪問。那些從來(lái)沒有初始化的指針會(huì)被發(fā)現(xiàn),并在編譯過程中給予適當(dāng)警告。此外,該編譯器為開發(fā)人員提供了一個(gè)有價(jià)值的調(diào)試工具,能夠顯示所有指針和其指定目標(biāo)的報(bào)告。

          該款編譯器還能夠識(shí)別不同源文件中的變量或?qū)ο蟮牟幌喾穆暶?,并?duì)使用者發(fā)出警告。

          通過優(yōu)化變量和棧釋放SRAM。傳統(tǒng)的編譯器通常會(huì)對(duì)變量所占空間做最壞打算,這樣一來(lái)就導(dǎo)致了SRAM資源的利用不足。既然編譯器知道所有變量的大小,那么它就能夠根據(jù)每個(gè)變量實(shí)際需要的內(nèi)存大小進(jìn)行分配,根據(jù)應(yīng)用的不同,釋放10%甚至更多的SRAM空間。

          就像許多低成本的8位可編程產(chǎn)品,PSoC混合信號(hào)陣列使用相同的SRAM空間儲(chǔ)存軟件功能棧和數(shù)據(jù)變量。如果為棧的最大深度分配的SRAM空間不足,那么棧就會(huì)溢出到數(shù)據(jù)變量空間,從而導(dǎo)致程序出錯(cuò)。

          多數(shù)功能都是不可重入和非遞歸的,而且可以借助一個(gè)可預(yù)測(cè)的靜態(tài)編譯棧實(shí)現(xiàn)。該編譯器的OCG技術(shù)檢查所有的程序模塊,識(shí)別所有的不可重歸和非遞歸功能,并且利用恰如其分的內(nèi)存容量來(lái)編譯和優(yōu)化一定大小的功能棧,從而容納每一個(gè)功能的最大深度。既然已經(jīng)確定了調(diào)用關(guān)系圖,那么在不同時(shí)間內(nèi)執(zhí)行的功能可以針對(duì)其靜態(tài)編譯棧分享相同的SRAM空間。這樣的特性將棧空間降低到必需的絕對(duì)極小值,從而為數(shù)據(jù)存儲(chǔ)釋放了更多的SRAM空間。一個(gè)被編譯過的靜態(tài)棧也能夠減少棧溢出的可能性,這種溢出會(huì)在動(dòng)態(tài)棧擴(kuò)展到SRAM中的數(shù)據(jù)變量空間時(shí)發(fā)生。

          遞歸功能必須以一種不同的方式進(jìn)行處理,包括將其分配到存儲(chǔ)本地變量的動(dòng)態(tài)??臻g,或者是管理遞歸呼叫使其無(wú)法覆蓋現(xiàn)有數(shù)據(jù)。OCG編譯器可以實(shí)現(xiàn)這些功能,它對(duì)開發(fā)者而言是完全透明的,而且不要求語(yǔ)言上的非標(biāo)準(zhǔn)擴(kuò)展。

          消除在PSoC變址寄存器處的沖突。訪問PSoC器件動(dòng)態(tài)棧中的數(shù)據(jù),需要將棧指針內(nèi)容(用來(lái)壓入和彈出指令)轉(zhuǎn)換到變址寄存器,之后利用變址寄存器來(lái)讀取數(shù)據(jù)。由于PSoC器件僅僅包含一個(gè)變址寄存器,資源缺乏會(huì)導(dǎo)致動(dòng)態(tài)棧發(fā)生沖突。此外,如果棧指針改變或者是變址寄存器被復(fù)用做其它目的,那么棧指針將不得不被保存,然后再重新復(fù)制到變址寄存器。指針復(fù)制或?qū)懭胱冎芳拇嫫?,這樣的動(dòng)作每次大約需要4-10個(gè)時(shí)鐘,如果一個(gè)應(yīng)用頻繁訪問動(dòng)態(tài)棧,那么其所產(chǎn)生的程序代碼較系統(tǒng)功能實(shí)際所需的代碼量要多的多。

          既然靜態(tài)軟件棧的編譯是可直接尋址的,不需要使用棧指針或者變址寄存器,那么其程序運(yùn)行所需的代碼量和數(shù)就得到了減少。有了OCG編譯器,程序中面向小型可重入或者遞歸功能的傳統(tǒng)堆棧得以保存。借助這款編譯器,開發(fā)人員在平均99%的情況下都能夠避免使用PSoC器件的動(dòng)態(tài)棧,從而減少控制動(dòng)態(tài)棧所需的大量冗余代碼。

          優(yōu)化PSoC存儲(chǔ)器使用情況。PSoC混合陣列具有分頁(yè)的SRAM架構(gòu),在任意時(shí)候,僅有256B的SRAM是可尋址的。訪問其它的存儲(chǔ)頁(yè)要求重置頁(yè)選擇寄存器(PSR)。每一次PSR重置需要3字節(jié)的代碼和12個(gè)執(zhí)行周期。如果數(shù)據(jù)來(lái)自于正在使用的頁(yè)面(例如一個(gè)中斷程序),那么這個(gè)數(shù)據(jù)必須寫入其它存儲(chǔ)頁(yè),而且需要另行附加程序代碼和更多的時(shí)鐘周期。例如,Page0被自動(dòng)選擇用于中斷程序,如果中斷程序要求訪問Page0以外任意頁(yè)上的變量,那么PSR必須被保存、內(nèi)存訪問模式更改、PSR上加載其它的頁(yè)地址。之后,PSR必須在中斷進(jìn)行之前重新存儲(chǔ)其狀態(tài)。

          每一次發(fā)生這種情況,總共12B的程序代碼和50個(gè)時(shí)鐘周期都會(huì)添加到程序執(zhí)行中。在極端情況下,變量分配欠優(yōu)很容易導(dǎo)致代碼數(shù)量以及執(zhí)行周期數(shù)翻番。

          OCG技術(shù)能夠辨別所有被使用的變量,知道它們何時(shí)被使用以及使用時(shí)的上下文字段(context)。因此,它會(huì)將數(shù)據(jù)變量分配到SRAM存儲(chǔ)頁(yè)中,最小化需要PSR升級(jí)的數(shù)量。例如,編譯器在一個(gè)SRAM頁(yè)中分配來(lái)自中斷程序的變量訪問,使其能夠在中斷中始終處于可尋址狀態(tài),而不是在訪問之前需要對(duì)PSR進(jìn)行更新。

          OCG編譯算法會(huì)仔細(xì)考慮每一個(gè)變量的各種情況,加上將pointer value分配給指針的情況(無(wú)論通過功能回歸、功能參數(shù)傳遞的直接分配,還是通過其它這陣的非直接分配),構(gòu)建數(shù)據(jù)引用圖,也就是指針引用圖(Pointer Reference Graph)。構(gòu)建完成后,指針引用圖對(duì)所有對(duì)象(可能被指針引用)的設(shè)置進(jìn)行辨識(shí)。這些信息用來(lái)決定每一個(gè)指針將被用來(lái)訪問哪個(gè)存儲(chǔ)區(qū)域或是存儲(chǔ)頁(yè)。來(lái)自不同模塊對(duì)同一個(gè)對(duì)象的沖突性聲明將被發(fā)現(xiàn),之后會(huì)向用戶發(fā)送一條錯(cuò)誤信息提示。而從來(lái)沒有引用的變量也將會(huì)被發(fā)現(xiàn)并被刪除。

          該款編譯器還為每個(gè)指針變量定義了一組地址空間,這對(duì)PSoC而言有最佳效率,而且無(wú)需程序源進(jìn)行任何特別指示。

          HI-TECH實(shí)現(xiàn)OCG功能的編譯器對(duì)所有被使用的變量、程序模塊中的指針以及其使用頻率進(jìn)行智能化處理。它還確切的知道棧應(yīng)該多大、代碼生成前棧應(yīng)該在哪里。它將使用最頻繁的變量分配到最容易訪問的RAM中,而將使用不那么頻繁的數(shù)據(jù)置于RAM頁(yè)中。通過減少對(duì)程序代碼的需求,建立PSR,該編譯器提高了代碼密度,并極大提升了產(chǎn)品性能。

          與PSoC Designer v4.4無(wú)縫結(jié)合。HI-TECH帶有OCG技術(shù)的編譯器能夠與Cypress面向PSoC混合陣列的PSoC Designer集成開發(fā)環(huán)境(IDE)無(wú)縫結(jié)合。

          Demo下載和延長(zhǎng)的評(píng)估期。該編譯器完整功能的45天試驗(yàn)版可以在HI-TECH的網(wǎng)站http://www.cypress.htsoft.com上免費(fèi)下載。

          價(jià)格與供貨信息。該編譯器目前提供現(xiàn)貨,2008年3月31日前購(gòu)買可享受1,195美元的優(yōu)惠價(jià),之后售價(jià)將為1,495美元。產(chǎn)品中包括HI-TECH軟件12月的升級(jí)和技術(shù)支持(無(wú)需額外付費(fèi)),以及30天的不滿意退款保證。多個(gè)用戶和教學(xué)性質(zhì)用戶可享有一定優(yōu)惠。




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();