Cypress與HI-TECH Software合作 有效倍增PSoC元件記憶體容量

文章取自電子與電腦資訊網 2007-10-17

Cypress Semiconductor公司與HI-TECH Software共同發表一款最新的編譯器技術,能有效擴充可動態調整的PSoC混合訊號陣列中的記憶體容量與效能。此新款符合ANSI規範的C語言編譯器—「專為PSoC混合訊號陣列量身設計的HI-TECH C PRO」,運用HI- TECH的「Omniscient Code Generation (OCG)」全知程式碼產生技術,可大幅縮減PSoC程式碼大小。

PSoC混合訊號陣列將可編程的類比與數位功能與8位元MCU核心整合在一起,並包含最大可達32Kbyte的快閃記 憶體,及最大可達2Kbyte的SRAM。PSoC混合訊號陣列可廣泛運用在各種注重成本、及有空間限制的消費性應用,包括:觸控螢幕介面、馬達控制、以 及近距離偵測等。PSoC元件具備動態調整功能,並可由同一個矽元件執行多個獨立運作的功能,因此能降低元件數量、機板空間、以及電源消耗。

雖然將可重新組態的功能加入到PSoC元件不會增加所需的矽元件數量,但每個可重新組態的功能將需要更多的程式碼。在 某些應用中,增加功能會讓程式碼增加並超過晶片內建快閃記憶體的容量。此外,更大的軟體堆疊和設計變化的需求,促使晶片內建SRAM的使用狀況不斷接近極 限,增加未偵測堆疊溢滿的機會。目前解決SRAM與快閃記憶體諸多限制的解決方案有下列3個:(1)限制產品的功能;(2)將應用移轉至包含更多SRAM 與快閃記憶體容量的更大的PSoC元件;(3)撰寫組譯語言程式碼,以縮小程式、堆疊、以及變數的數量,這種方法非常耗時費力,並讓程式碼的移植能力大幅受限。這些替代方案的都不實用。

鎖定PSoC混合訊號陣列的HI-TECH C PRO編譯器採用OCG技術,在檢查所有程式模組後,再進行編譯與指 標、暫存器、和堆疊配置的最佳化,以及刪除多餘程式碼等作業。編譯器亦釋放出SRAM空間,並針對所有非遞迴與非重進入的程式碼,編譯直接定址與最佳化函 數堆疊,以減少PSoC元件索引暫存器競用資源的狀況。由於縮小的程式碼能在更少的週期內執行完畢,因此,新款編譯器亦可增加PSoC元件的效能。

因為OCG知道變數與已編譯堆疊需要多少記憶體,並可隨時配置,如此可讓SRAM的使用能更有效率,甚至能研判指標變 數的範圍,並在適當的時機配置單位元指標。編譯器可藉此增加可用SRAM的容量,有時增加的幅度相也當可觀。此外,根據統計數據設定的堆疊,可增加到程式 需要的最大深度,OCG並可藉以防範可能導致嚴重故障的堆疊滿溢狀況。

掃瞄所有程式模組,並對應至呼叫圖與指標參考圖功能

在準備編譯時,OCG編譯器會針對程式中每個模組,建立部份編譯的程式函式庫。然後再搜尋所有對應至程式的函式庫功 能,並建立一個“呼叫圖”。在呼叫圖完成後,從頭到尾都沒有被呼叫的函式就會被移除,編譯器會找出並標示被稱為「重新進入」的函式,像是在主程式碼與中斷 函式中的函式。

OCG編譯器亦會在每個程式模組中,為每個指標產生一個指標參考圖。因為編譯器知道任何指標所定址的物件尺寸,因此可 偵測出任何一個存取靜態配置物件端的動作,並警告程式設計師可能的無效記憶體存取動作。從未啟動過的指標將會被刪除,並在編譯時間內發出適當警告。此外,編譯器亦提供開發工程師一個相當有價值的除錯報告,可顯示出所有指標及其目標物件。編譯器還會在不同原始碼檔案中,先確認出彼此不相容的變數或物件,並向 使用者提出警告。

針對變數與堆疊進行最佳化,釋出SRAM資源

傳統的編譯器一般會對變數尺寸做最壞狀況的假設。這種模式導致SRAM資源的使用效率低落。由於編譯器知道所有變數的大小,因此僅會配置需要的記憶體來儲存每個變數,並能依應用的程度,配合釋放出最高達10%或更多的SRAM空間。

在許多低成本8位元可編程元件中,PSoC混合訊號陣列使用相同的SRAM空間來儲存軟體函數堆疊與資料變數。若沒有配置足夠的SRAM空間來配合動態堆疊的最大容量,堆疊可能就會溢滿到資料變數空間,而造成程式當機。

排除PSoC索引暫存器競爭資源的窘境

要存取儲存在PSoC元件中動態堆疊內的資料,需要先拿到僅用來移動與移除暫存器內容的堆疊指標,並傳送到可存取資料 的索引暫存器。由於PSoC元件僅含有一個索引暫存器,因此動態配置的堆疊會造成競用稀有資源的狀況。此外,若堆疊指標變更,或索引暫存器改用於其他用途,堆疊指標就必須先儲存,然後重新複製到索引暫存器。每次指標複製出或寫入到索引暫存器時,都分別需要4與10個時脈週期,經常存取動態堆疊的應用程式,會導致系統需要使用超過某些數量的程式碼,才能執行系統功能。

最佳化PSoC記憶體使用模式

PSoC混合訊號陣列擁有一個分頁式SRAM架構,無論任何時刻都僅能存取256位元組的SRAM。要存取其他記憶體分頁,需要透過分頁選擇暫存器(PSR, page select register)進行重置。每個PSR重置動作需要3位元組的程式碼以及12個週期 來執行。若分頁中一個使用中的資料(像是一個中斷常式)必須寫入另一個記憶體分頁,就需要使用更多程式碼和更多時脈週期。例如,Page0被自動選取用來支援中斷常式。若中斷常式需要存取Page0以外其他分頁中的變數時,就須先儲存PSR,再變更記憶體存取模式,然後PSR再載入其他分頁位址。之後PSR必須回復原先的狀態,然後再進行中斷。

HI-TECH支援OCG的編譯器擁有智慧型功能,能偵測到所有程式模組使用的變數與指標,以及它們所使用的頻率,並且再產生程式碼之前,就已經知道堆疊需要多少容量,以及應該配置的區域。它會把最常用到的變數配置到最方便存取的RAM,並把較不常用到的資料放到分頁 RAM。結果可以避免讓程式碼設定分頁選擇暫存器,並可藉此增進程式碼密度,進而大幅提升效能。

能與PSoC Designer v4.4.完美整合

HI-TECH支援OCG技術的編譯器,可完全整合至用於PSoC混合訊號陣列的Cypress PSoC Designer整合式開發環境(IDE)。

售價與上市時程

此新款編譯器目前已開始供貨,定價為1,195美元。若於2008年3月31日後訂購,價格將調漲至1,495美元。 這款方案包含HI-TECH Software免費提供的12個月更新與技術支援服務,以及30天的退費保固。並同時推出多用戶與教育性用戶的折扣方案。 欲免費下載此新款編譯器的45天全功能試用版,可至下列HI-TECH的網站:http://www.cypress.htsoft.com

關於HI-TECH Software

HI-TECH Software 是為世界級嵌入型系統開發工具的供應商,針對8、16、32位元微控制器與DSP晶片架構提供編譯器、RTOS、以及Eclipse型IDE(HI-TIDE)。由Clyde Stubbs在1984於澳洲布里斯班創立的HI-TECH Software 公司,在全球各地擁有廣大的行銷網路。

Cypress與HI-TECH Software共同發表新款編譯器技術

文章取自電子工程專輯 2007-10-17

Cypress Semiconductor與HI-TECH Software共同發表一款最新的編譯器技術,能擴充可動態調整的PSoC混合訊號陣列中的記憶體容量與效能。此新款符合ANSI規範的C語言編譯器──專為PSoC混合訊號陣列設計的HI-TECH C PRO,運用HI-TECH的Omniscient Code Generation (OCG)全知程式碼產生技術,可縮減PSoC程式碼大小。

PSoC混合訊號陣列將可編程的類比與數位功能與8位元MCU核心整合在一起,包含最大可達32Kbyte的快閃記憶體,及最大可達2Kbyte的SRAM。PSoC可廣泛運用在各種注重成本、及有空間限制的消費性應用,包括觸控螢幕介面、馬達控制、以及近距離偵測等。PSoC元件具備動態調整功能,並可由同一個矽元件執行多個獨立運作的功能,因此能降低元件數量、機板空間、以及電源消耗。

鎖定PSoC混合訊號陣列的HI-TECH C PRO編譯器採用OCG技術,在檢查所有程式模組後,再進行編譯與指標、暫存器、和堆疊配置的最佳化,以及刪除多餘程式碼等作業。編譯器亦釋放出SRAM空間,並針對所有非遞迴與非重進入的程式碼,編譯直接定址與最佳化函數堆疊,以減少PSoC 元件索引暫存器競用資源的狀況。縮小的程式碼能在更少的週期內執行完畢,因此新款編譯器亦可增加PSoC元件的效能。

OCG知道變數與已編譯堆疊需要多少記憶體,並可隨時配置,可讓SRAM的使用能更有效率,甚至能研判指標變數的範圍,並在適當的時機配置單位元指標。編譯器可藉此增加可用SRAM的容量。此外,根據統計數據設定的堆疊,可增加到程式需要的最大深度,OCG藉以防範可能導致嚴重故障的堆疊滿溢狀況。

掃瞄所有程式模組,並對應至呼叫圖與指標參考圖功能在準備編譯時,OCG編譯器會針對程式中每個模組,建立部份編譯的程式函式庫。然後再搜尋所有對應至程式的函式庫功能,並建立一個“呼叫圖”。在呼叫圖完成後,從頭到尾都沒有被呼叫的函式就會被移除,編譯器會找出並標示被稱為「重新進入」的函式,像是在主程式碼與中斷函式中的函式。

OCG編譯器亦會在每個程式模組中,為每個指標產生一個指標參考圖。因為編譯器知道任何指標所定址的物件尺寸,因此可偵測出任何一個存取靜態配置物件端的動作,並警告程式設計師可能的無效記憶體存取動作。從未啟動過的指標將會被刪除,並在編譯時間內發出適當警告。編譯器亦提供除錯報告,可顯示出所有指標及其目標物件。在不同原始碼檔案中,先確認出彼此不相容的變數或物件,並向使用者提出警告。

要存取儲存在PSoC元件中動態堆疊內的資料,需要先拿到僅用來移動與移除暫存器內容的堆疊指標,並傳送到可存取資料的索引暫存器。由於PSoC元件含有一個索引暫存器,因此動態配置的堆疊會造成競用稀有資源的狀況。每次指標複製出或寫入到索引暫存器時,都分別需要4與10個時脈週期,經常存取動態堆疊的應用程式,會導致系統需要使用超過某些數量的程式碼,才能執行系統功能。

PSoC混合訊號陣列擁有一個分頁式SRAM架構,要存取其他記憶體分頁,需要透過分頁選擇暫存器(page select register,PSR)進行重置。每個PSR重置動作需要3位元組的程式碼以及12個週期來執行。若分頁中一個使用中的資料(像是一個中斷常式)必須寫入另一個記憶體分頁,就需要使用更多程式碼和更多時脈週期。

HI-TECH支援OCG的編譯器擁有智慧型功能,能偵測到所有程式模組使用的變數與指標,以及它們所使用的頻率,並且再產生程式碼之前,就已經知道堆疊需要多少容量,以及應該配置的區域。它會把最常用到的變數配置到最方便存取的RAM,並把較不常用到的資料放到分頁RAM。結果可以避免讓程式碼設定分頁選擇暫存器,並可藉此增進程式碼密度,進而提升效能。

相關連結

頁尾圖示 智慧型機電輔具實驗室 Intelligent Mechatronic Assistive Devices Lab 智慧型機電輔具實驗室
©2014國立陽明大學物理治療暨輔助科技學系(復健科技輔具研究所)
112臺北市北投區石牌立農街二段155號
所辦 電話:(02)2826-7356
所辦 傳真:(02)2827-0140
電子郵件: