• 沒有找到結果。

Implementation of an Embedded System

N/A
N/A
Protected

Academic year: 2022

Share "Implementation of an Embedded System"

Copied!
6
0
0

加載中.... (立即查看全文)

全文

(1)

Implementation of an Embedded System

黃秀璋 交通大學資工系

john@owlhouse.csie.nctu.edu.tw

陳昌居 交通大學資工系 cjchen@cs.nctu.edu.tw

摘要

在本論文中,我們將以 Au1200 系統 晶片為核心設計一個嵌入式系統。對於此 系統硬體與軟體的設計,我們會分別說 明。最後,將以標竿程式測試該系統並據 以做效能的改進。

關鍵詞:嵌入式系統,系統晶片

一、系統晶片 Au1200

Au1200[3]系統晶片為 RMI™公司

(Raza Microelectronics, Inc)所製造,並 將它定義作為 PMP(Portable Media Player) 產品的核心,所強調的是內建高效能低耗 能的 MPEG 解碼硬體,同時也具有各樣的 I/O 介面。

Au1200 使用 MIPS™32 為其內部核 心,如圖-1 所示,是一個具有五階層指令 管線(包含 Fetch、Decode、Execute、

Cache、Writeback)的純量架構。另外它 擁有一個 multiply-accumulate unit (MAC) 去執行乘法與除法指令。此類指令的執行 是與指令管線平行運作的,所有 16x16 位 元與 32x16 位元乘法指令都可以在一個時 脈週期內執行完畢。32x32 位元的乘法若 結果是寫入到通用暫存器時,可以在兩個 時脈週期內執行完畢。若是乘法指令結果 是寫入到 HI/LO 暫存器時,所有的指令都 需要增加兩個時脈週期的執行時間。至於

除法指令可能會高達 35 個時脈週期。

此 MIPS™32 核心分別擁有 16K 位元 組指令快取記憶體與 16K 位元組資料快取 記憶體。

圖-1 Au1200 內建之 MIPS™32 Core 方塊圖 在 TLB(Translation Look-aside Buffer) 部分,Au1200 使用與 R4000 類似的架構,

透過 CP0(Coprocessor 0)中 TLB 相關暫 存器存取內建的 32 個 full associative TLB 項目(entry),以執行虛擬記憶體到實體記 憶體的轉換。TLB 項目中的頁(page)大小 可以被設定從 4K 位元組到 16M 位元組。

這可以讓不同系統選擇適當的頁尺寸以增 加記憶體使用率。

由於 Au1200 並不包含 FPU(floating point unit),當遇到 FPU 的指令時,產生 RI(Reserved Instruction)例外(exception)。

因此可以經由此例外,使用軟體去模擬浮 點運算。

CPU 一共有 8 種中斷(Interrupts)來源,

這些中斷並無優先權的差異。當例外產 生,程式需要先檢查一個特定位置是否等 於 0,若是的話,則表示此例外是由中斷

(2)

所產生的。

Au1200 Core 需要有兩個時脈。12 MHz 提供給 CPU 與其它周邊電路,另一個是 32.768 KHz 提供 RTC(Real time clock)與 TOY(Time of year)作為計時的基準。

在 Au1200 中 MIPS™32 Core 與周邊裝 置,或周邊裝置與周邊裝置之間的資料傳 遞是透過內部的匯流排(bus)進行。整個內 部匯流排分為系統匯流排與周邊匯流排。

系統匯流排是用來連接高速的周邊裝置,

周邊匯流排則負責低速裝置的資料傳遞。

Au1200 提供了 16/32 位元資料寬度 的 SDRAM 資料匯流排,最大可連接至 256M 位元組的 DDR SDRAM 或是 DDR2 SDRAM。

二、I/O 周邊裝置

Au1200 內建了許多的 I/O 周邊裝置 硬體處理各樣的工作。本系統並不需要所 有的功能,因此我們只針對本系統使用到 比較重要的部分介紹。本系統所使用到的 I/O 周邊裝置有:GPIOs(General Purpose I/O)、DMA Controller、LCD Controller、

AES Cryptography Engine、MAE(Media Acceleration Engine)、Programmable Serial Controller。

Au1200 提供了許多的 GPIOs,這些 GPIOs 分為主要的與次要的兩部分部分並 且可設定為輸入或輸出。

Au1200 的 DDMA 控制器具有下列特 點:有 16 個獨立的通道可以分配給各種周 邊;支援記憶體到 FIFO 與 FIFO 到記憶 體,以及 FIFO 到 FIFO 與記憶體到記憶體 的操作;可運作於 Chained、Branching 以 及 Circular descriptor 串列;不同的 Block 與 Stride 傳輸設定可做到非連續性的記憶 體搬移(Scatter/Gather);支援中斷並更新

DMA 狀態;使用 Descriptor 方式,並且可 以執行來源到目的的傳送,Compare 以及 Branch,Subroutine calls 以及 Literal write 傳送;通道可以被指定優先權(High 或 Low);

LCD 控制器具有下列特點:最大解析 度到 2040x2048;多種不同的緩衝器格 式,最高到 32-bpp;四個可移動且可重疊 的視窗;每個視窗都可以使用 alpha

blending;Color key 功能,可當作透明色;

1 或 8 bpp alpha blending 功能;硬體游標。

Au1200 包含了一個 128 位元 AES 加 密/解密硬體且支援四種模式,分別為 ECB (Electronic codebook)、CBC(Cipher block chaining)、CFB(Cipher feedback)、

OFB(Output feedback)。Au1200 的 AES 硬 體加速引擎可以透過與 DMA 控制器與 AES 硬體部分的 I/O FIFO 去配合各種不 同的 I/O 周邊作為來源或是目的地,以達 到最少的 CPU 資源耗費。AES 硬體引擎 速度可設定為周邊匯流排時脈的 1、1/2、

1/4、1/8 的速度。

我們必須先要瞭解 MPEG 的基本原 理,才能夠正確去設定 MAE 進行解 MPEG 運算。整個 MPEG 壓縮是經由下列幾個步 驟所完成:RGB 轉 YUV、DCT 轉換與量 化、Entropy Coding、影像預測、MAE Front End、MAE Back End。

Au1200 內建了兩個可程式化的串列 控制器(PSCs)。它們都可以設定為下列 幾種協定的其中一種:Serial Peripheral Interface(SPI);Inter-IC Sound(I2S);Audio Codec-97 Controller (AC97);System Management Bus (SMBus)。本系統只有使 用到 I2S 作為 Audio codec 的傳輸資料用。

三、硬體線路規劃

(3)

首先我們針對所需要的功能加以規 劃,本系統硬體以 Au1200 為核心,我們 將它需要具備的功能分成記憶體系統與 I/O 介面兩大部分。

記憶體系統:128M 位元組,32 位元 資料匯流排寬度,400 MHz 的 DDR2 SDRAM;64M 位元組的 NOR flash ROM;64M 位元組的小型區塊或至少 256M 位元組以上的大型區塊 NAND flash ROM;64K 位元組的非揮發性記憶體,使 用 FRAM(鐵電記憶體,Ferroelectric RAM)。

I/O 介面部分:可連接標準 VGA 顯示 器;立體雙聲道輸出;按鍵與搖桿輸入功 能以及大電流驅動輸出功能(可驅動繼電 器或小燈泡);提供 Secure Digital(SD)

卡介面;提供 USB 介面以連接 PC 作為更 新程式之用;兩組 UART,提供 RS232 介 面以連接周邊設備。

圖-2 是 PCB silkscreen 層面圖,我們 可以看到系統零件的分佈。在 COM1 下方 的兩顆零件為 DDR2 SDRAM 晶片。而 Au1200 晶片就緊接著在 DDR2 SDRAM 下方。這樣的安排可以使得 Au1200 與 DDR2 SDRAM 的訊號連接距離最短,以 避免高速數位訊號所帶來的許多問題。

NAND Flash 與 NOR Flash 在圖-2 中 央偏右處。由於這部分電路訊號運作速度 只有 10 幾個 MHz,因此距離拉長並不會 有太大影響。

圖-3 為系統實體的照片。圖中左下方 的金手指為電源輸入。右下方金手指為按 鍵與燈號等輸出訊號。

四、系統軟體與開發工具

幾乎所有的系統晶片廠商都提供了

WinCE 與 Linux 兩種作業系統供開發者使 用,不過作業系統本身會佔據一些系統資 源,例如記憶體,額外的 CPU 計算資源等 等。

圖-2 實體 PCB Top Silkscreen Layer

圖-3 系統實體

因此本系統採用自行開發所有程式而 不安裝作業系統,由於要完全瞭解一個作 業系統的設定架構,並將其調整到自己所 需的功能需額外的功夫。

自行開發的好處是省略掉多餘的作業系 統功能以減少消耗系統資源,節省記憶體 需求,並可以完全依照硬體系統訂製所需

(4)

功能。尤其是在某些功能確定的的專用系 統中,作業系統並不能帶來太多方便。

在完成硬體設計之後,接著我們需要 有適當的軟體開發工具。由於我們的系統 是獨立無作業系統的關係,因此所有的軟 體在開發完成之後,必須是絕對位址的 Binary image 檔案。因為一般的程式在開 發完成後,經過 Compiling、Linking 之後 所產生的檔案都是 re-locatable,也就是說 可以透過作業系統的 loader 功能將此程式 檔在載入到主記憶體執行時,根據檔案中 所記錄的資訊去分配所有程式資料的位 址。而本系統在開機之後就直接執行,因 此輸出的檔案格式就不能是一般的 ELF

(Linux 底下的可執行檔格式)。

因此我們必須建立一套開發工具是 可以建立前述的絕對位址程式。這些工具 包括了:GCC、Newlib、Binutils。

五、效能測試

對於遊戲或是多媒體等方面的應用而 言,越高的效能代表的是越好的內容表 現。譬如 QVGA 解析度的影片所能夠看到 的影像細節自然就比不上 VGA 解析度的 畫質。而系統效能除了硬體本身的速度之 外,軟體的最佳化品質也是一個重點。畢 竟所有的操作還是經由軟體執行的。

在本節我們將使用 Dhrystone 去測試 於前面建立的 GNU C Compiler,以找出執 行速度最快的編譯最佳化選項。接著使用 所得到的編譯最佳化選項實際編譯記憶體 存取、MPEG4 及 AES 的測試程式碼。並 且比較使用 Au1200 內建的硬體加速功能 的程式與完全使用軟體運算的程式在執行 效能上之差異。

(一)Dhrystone MIPS 測試

Dhrystone 目前最新的版本是 2.1,並 且是用 ANSI C 語法所編寫,因此可以很

容易的轉移到本系統中。Dhrystone 是使用 最廣的標竿程式(benchmark)。雖然它並不 是非常理想的一套標竿程式。在某些方面 它是很容易受到影響而得到不是很真實的 結果,此外在應用方面也有所限制。例如 編譯器與標準 C Library 的最佳化程度對 結果的影響很大,只偏重於整數的運算能 力測試,以及無法測試具有 SIMD 能力的 CPU 等等。但基本上仍具有一定的參考價 值。

Dhrystone 測試方式是執行大量回合 數的 Dhrystone 運算後,根據花費的時間 得到每秒可運算多少回合的 Dhrystone,再 根據 VAX 11/780 為基準,其一秒鐘可執 行 1757 個 Dhrystone 運算,相除後得到 Dhrystone MIPS(DMIPS)。

由於 Dhrystone 本身受編譯器的最佳 化選項之影響很大,因此我們必須先利用 Dhrystone 找到最好的選項,並且使用此最 佳化選項作為後續軟體編譯的標準設定。

測試條件為:CPU = Au1200 @ 400 Mhz、

Compiler = mips-elf-gcc 4.20。

表-1 Dhrystone 測試結果

optimize option REG result DMIPS

-O0 N 287076 163.39

-O1 N 480446 273.45

-O2 N 510152 290.35

-O3 N 592628 337.30

-O0 Y 286862 163.27

-O1 Y 480400 273.42

-O2 Y 510100 290.32

-O3 Y 592628 337.30

-O3 -funroll-loops N 600745 341.90 -O3 -fprefetch-loop-arrays N 578771 329.41 -O3 -fforce-addr N 590040 335.82

在上面測試結果中,我們可以看到編 譯器最佳化選項確實影響結果甚巨。表-1 中的 REG 欄位表示是否使用 C 語言的 register 關鍵字。Dhrystone 的原始碼中使 用了 register 關鍵字,原先的期望是可以藉 由將某些經常存取的變數固定在 CPU 的 通用暫存器中,以減少讀寫記憶體的所需 時間。但是對於擁有許多暫存器的 RISC

(5)

以及最佳化能力好的編譯器而言,這並不 能達到預期作用。反而可能打亂原先編譯 器所得到的最佳的暫存器安排。由前面的 測試結果我們可以看到,使用了 register 後,會讓 O0 到 O2 選項所得到的結果稍微 變差。

使用 Unroll Loop 可以得到些許的效 能提升,這主要是因為在 Dhrystone 程式 中有一些小的迴圈。經由 unroll loop 處理 後,可以減少跳躍指令所需要的額外時間。

(二)記憶體存取效能測試

記憶體存取效率對於一個系統而言是 很重要的指標,尤其對於多媒體而言。在 此,我們針對在 SDRAM 中的資料,分別 以 DMA 方式與軟體搬運方式實際測試所 需時間,並比較兩者之間的差異性。在 CPU 讀寫搬移記憶體部分,為了真實地測 試出一般程式的使用慣例,我們使用 MIPS 公司所提供的 memcpy()作為主要的操作 功能函式。此 memcpy()使用了組合語言寫 出速度最佳化的程式。

此項測試的方法是以 50M 位元組的 資料量,搬移此筆資料到另外的位置之測 試。整個測試結果如表-2 所示。

表-1 記憶體存取測試結果

Time(ms) Mbytes/Sec DMACPY(hardware) 783 63.857 MEMCPY(software) 372 134.408

由測試結果我們看到使用軟體進行 資料複製的效能高出 DMA 一倍多。這是 由於軟體進行資料複製時是透過快取記憶 體以及 write buffer,且 CPU 執行速度為 400 MHz。同時 write buffer 具有 snoop 功 能,因此整體速度高出 DMA 甚多。另外 一個原因是在內部系統匯流排中,快取記 憶體與 write buffer 的優先權比 DMA 高,

因此 DMA 所分配到的匯流排頻寬比較少 的關係。

(三)AES 測試

我 們 使 用 了 Brian Gladman[1] 的 AES 函式庫做為軟體 AES 的基準。整個 測試流程是先將 DRAM 記憶體分成兩個 50M 位元組的起始與終點區塊,接著將起 始區塊以固定樣式的方式初始化,然後進 行 AES 加密到終點區塊以完成加密程 序。接著反過來由終點區塊將加密的資料 解密回到起始區塊中完成解密程序。分別 就這兩個程序計時以求得運算效率。表-3 為測試結果。

表-3 AES 測試結果

Software Hardware Mode

Time(ms) Mbytes/Sec Time(ms)Mbytes/Sec encrypt. 8192 6.1035 9515 5.2549 ECB

decrypt 8197 6.0998 9515 5.2549 encrypt 9533 5.2449 9514 5.2554 CBC

decrypt 11000 4.5454 9481 5.2737 encrypt 8524 5.8658 9447 5.2927 CFB

decrypt 8524 5.8658 9283 5.3862 encrypt 8523 5.8665 9315 5.3677 OFB

decrypt 8524 5.8658 9316 5.3671

由於 AU1200 的 AES 引擎是連接到 周邊匯流排,而它的整個硬體時脈速度只 有 100 MHz。而 CPU 的指令執行有 400 MHz 的速度,並且資料流動都是在 200 MHz 的系統匯流排上,所以相較之下使用 硬體 AES 引擎的結果比起純軟體的 AES 運算要稍微慢了一些。

(四)MPEG4 測試

由於本系統實作了 Xvid[2],因此我們 以 XVid 為基準,分別以純軟體與改寫 XVid 中對應到 Inverse Quantization、

Inverse DCT 與動態補償等部分程式,將這 些部分以 Au1200 的 MAE 硬體進行運算。

然後針對不同的資料分別比較兩者在效率 上的表現。

我們可以將整個解碼過程分為三個部 分,首先是資料整理,這部分主要是將 bitstream 解碼,包括了 Entropy decode,

Frame 的資料解譯,與更新 DMA descriptor 的狀態與設定。接著進行資料解碼,這包

(6)

括了 IDCT,Inverse Quantization 及 Motion Compensation 等解碼運算。MAE 完全可以 處理這部分的運算,這也是最耗時的部 分。最後是將解碼後的 YUV 資料交由後 端,進行後端的影像濾波處理,這可以讓 解碼後的影像畫質在輸出前將高頻部分做 部分修飾。再執行 YUV 至 RGB 的轉換。

此時,之前設定好的記憶體位置便包含了 最終的輸出。此部分測試主要針對 MAE 前端部分做評量,因為不管是軟體或是硬 體方式,在後端部分都使用後端方式進行 處理。

我們所進行的測試所得到的 XVID 與 MAE 運算時間差將只是有無使用 MAE frontend 的差別。

表-4 MPEG 解壓縮測試結果

影片大小 MAE/XVID

192x96 400x192 800x400

MAE 2038

ms

7816 ms 28851 ms

XVID 4263

ms

18883 ms 69724 ms XVID / MAE 2.091 2.416 2.417

表-4 是分別使用 MAE 與 XVID 對於 同樣的影片內容,不同影片大小進行解壓 縮所測試得到的處理時間。受測試的影片 是以 3D 繪圖軟體所製作,render 出一張 一張的 PNG 檔案後再經由 MPEG 編碼軟體進 行編碼成為 XVID 格式的檔案。同時製作 出三種不同大小的影片。

測試結果所得的時間是以解碼 1000 個 frame 所需的時間。由測試結果我們可 以看到基本上使用 MAE 比使用軟體解碼 要快上 2.4 倍左右。

六、結論

從硬體設計角度而言,過去需要許多 外部電路才能夠組成一個系統平台,現在 只需要一顆系統晶片便可以達到令人滿意

的效能。從軟體方面來看,嵌入式系統也 不再需要像過去一般對於計算量負載與記 憶體資源那樣地錙銖必較。

以目前市場主流的嵌入式系統晶片或 CPU 來看,大部份以 X86 為基礎的嵌入式 系統,基本上都還是須要有晶片組的搭配 才能構成一個系統,同時耗電量也比較 高。就 VIA 的 C7 與 AMD 的 LX800 而言,

雖然整合了北橋晶片,但 I/O 部分還是需 要南橋晶片的配合。也因此,除了 CPU 本 身的電源消耗多半在 2W 到 10W 外,再加 上配合的晶片組等離散零件的耗電量,基 本上並不適合作為可攜式設備。

以 ARM 為主的處理器,在多媒體的 部份,多是另外搭配 DSP 或是採用雙核心 甚至三核心,這或多或少也造成開發的困 難度。除此之外,以 ARM 為核心的系統 效能雖然較低,但一般而言耗電量也低,

故現在大部分移動式產品多以 ARM 為核 心。

至於以 MIPS 為核心的系統大多使用 於網通設備中,例如 Router,Set-top Box,

ADSL Modem 等等。

雖然本論文的實作並未使用作業系 統,但是整個軟體實作部分已經將系統所 需功能都實現在函式中。包含硬體驅動程 式以及資源分配等等功能。未來可以此為 基礎,延伸出一套精簡完整且具有彈性調 整模組功能的嵌入式作業系統。

七、參考文獻

[1]. http://fp.gladman.plus.com/cryptograph y_technology/rijndael/

[2]. http://www.xvid.org/

[3]. Raza Microelectronics, Inc., “RMI Alchemy™ Au1200™ ProcessorData Book”, February 2006.

參考文獻

相關文件

數位計算機可用作回授控制系統中的補償器或控制

動態時間扭曲:又稱為 DTW(Dynamic Time Wraping, DTW) ,主要是用來比

檢附附件八至 附件十二等資 料送核轉機關 審查;核轉機 關應於收受接 受補助單位送 請審查十五日 內,檢附附件 八至附件十及 附件十二等資 料送本部辦理

sort 函式可將一組資料排序成遞增 (ascending order) 或 遞減順序 (descending order)。. 如果這組資料是一個行或列向量,整組資料會進行排序。

[r]

 想要設計一個具有兩個輸入G(gate閘控)和 D(data資料)以及一個輸出Q的閘控閂電 路。當G等於1時,在輸入D出現的二進位資料

十九、其他經直 轄市、縣 (市)政府 或其委託 計畫之社 工人員訪 視評估確 有經濟困 難,且有就 業意願之

電腦內部是使⽤用位元 (Bit) 這個基本單位來表⽰示資料 並儲存於記憶單元 (記憶體) 或輔助記憶單元 (硬碟) 中。.. 每個位元只可以表⽰示