• 沒有找到結果。

PAC Duo SoC 系統架構

Figure 3. PAC Duo SoC 架構圖

PAC Duo SoC 晶片整合 ARM 926EJ-S 處理器和 PAC DSP 處理器。ARM9 RISC 處理器在嵌入式系統被廣泛使用。由圖 Figure 3.為 PAC Duo SoC 晶片系統架構圖,其 主要整合三個子系統:ARM 子系統、DSP 子系統和慢速 I/O 子系統,慢速 I/O 子系統 主要是由 APB BUS 連接開發板上週邊 I/O 裝置如:timer、GPIO、UART…等,將相 對慢速 I/O 裝置放在這子系統可避免整個系統因為慢速 I/O 裝置佔用頻寬而降低整體 效能。ARM 子系統 AHB-lite BUS 上有 ARM 926EJ-S 處理器,目前 PAC Duo 平台利 用 ARM 處理器可以執行 Android 和 Linux 的嵌入式熱門的作業系統。DSP 子系統設 計目的是在數位訊號、多媒體影音加解碼方面能展現高效能處理,最主要由 AXI BUS 連接兩個 PAC DSP 處理器(數位訊號處理核心)和增強型多媒體直接記憶體存取器 EMDMA(Enhanced Multimedia Direct Memory Access),EMDMA 會在稍後章節介紹,

這些全部接在 AXI BUS 上稱作 DSP 子系統。更多的 PAC DSP 處理器的細節將在下 章節介紹。

資料來源:工研院

9

Table 1.為 PAC Duo 平台上記憶體的整理,為了區別接在不同 BUS 上的記憶體會 在面加上 BUS 名稱:

Memory Size Address On/Off SoC chip

AXI-SRAM 128KB 0x2100_0000~0x2101_FFFF On chip AHB-SRAM 256KB 0x2000_0000~0x2003_FFFF On chip AXI-SDRAM 128MB 0x3000_0000~0x37FF_FFFF Off chip AHB-SDRAM 128MB 0x3800_0000~0x3FFF_FFFF Off chip AHB-Flash 128MB 0x1000_0000~0x1FFF_FFFF Off chip DSP1-SRAM 64KB 0xB00A_0000 ~ 0xB00A_FFFF On chip DSP2-SRAM 64KB 0xD00A_0000 ~ 0xD00A_FFFF On chip

Table 1.PAC 開發板記憶體整理 ARM 926EJ-S RISC 處理器如下:

 32/16-bit RISC architecture

 32-bit ARM instruction set for maximum performance and flexibility

 16-bit Thumb instruction set for increased code density

 DSP instruction extensions and single cycle MAC

 Flexible instruction and data cache sizes

 16K instruction cache

 16K data cache

 MMU which supports operating systems including Symbian OS, Windows CE and Linux

 Embedded ICE-RT logic for real-time debug

PAC DSP 處理器如下:

 Architecture:5-way VLIW; 9-stage pipeline

 Datapath:32-bit fixed-point with 16-/8-bit (subword) support

 SIMD Operation:16-bit×2; 8-bit×4

 32K instruction cache

 64K data memory

 Support dynamic power management

 Developing Tools:C compiler, assembler/linker, cycle-accurate ISS, and debugger

10

Figure 4 列出 PAC Duo 平台上的記憶體配置:

Figure 4. System Memory Map

資料來源:工研院

11

在 PAC Duo 平 台 上 任 何 的 硬 體 裝 置 的 暫 存 器 都 是 透 過 記 憶 體 映 射 到 0x0000_0000~0xFFFF_FFFF 記憶體空間,上表列出 PAC Duo 平台所有的記憶體對應 關係(mapping),以下列表是以 Android 作業系統來解釋各記憶體空間:

 0x1000_0000~0x1FFF_FFFF :為記憶體 Flash 部份,主要放 U-BOOT、Linux Kernel、Android Root File System 和 Android Data。

 0x2000_0000~0x2003_FFFF :為 AHB-SRAM 大小為 256KB,目前並沒有使用。

 0x2100_0000~0x2101_FFFF :為 AXI-SRAM 大小為 128KB,主要是放 PAC DSP 要執行程式的二元檔案 。

 0x3000_0000~0x37FF_FFFF :為 AHB-SDRAM 大小為 128MB,這段記憶體空 間在 AHB-lite BUS 上(ARM 子系統),為 Linux Kernel 運行的地方。

 0x3800_0000~0x3FFF_FFFF :為 AXI-SDRAM 大小為 128MB,這段記憶體空間 為在 AXI BUS 上(DSP 子系統),主要放 PAC DSP 要解碼的 Bit-Stream 和解完影 片後的 Raw Data。

 0x5000_0000~0x5FFF_FFFF :可對 APB BUS(慢速 I/O 子系統)上的裝置做設定,

如:timer、GPIO、UART…等。

 0x7000_0000~0x7FFF_FFFF:可對 AHB-lite BUS(ARM 子系統)上的裝置做設定,

如:Mailbox、Ethernet、LCD…等。

 0xA000_0000~0xAFFF_FFFF:可對 AXI BUS(DSP 子系統)上的裝置做設定,如:

AXI-SDRAM、EMDMA…等。

 0xB000_0000~0xBFFF_FFFF :為 PAC DSP1 的記憶體空間,在這段記憶體空間 可對 PAC DSP1 和 PAC DSP1 的 DMA 進行設定,另外 0xB00A_0000 ~

0xB00A_FFFF (64K)為 PAC DSP1 內部自己的 SRAM。

 0xD000_0000~0xDFFF_FFFF :為 PAC DSP2 的記憶體空間,在這段記憶體空間 可對 PAC DSP2 和 PAC DSP2 的 DMA 進行設定,另外 0xD00A_0000 ~

0xD00A_FFFF (64K)為 PAC DSP2 內部自己的 SRAM。

以上為 PAC Duo 平台各段記憶體空間的介紹,若要針對各裝置更詳細的設定資訊 可參考 http://pac.itri.org.tw/ 網站中的文件”V3.3_S0001_Processor_Architecture.pdf”和 文件”PAC_Duo_programmer_reference.pdf”。

12 Cluster 包涵 Load/Store Unit 和 Arithmetic Unit,共有五個運算單元,可有效 提昇運算能力。

 Variable instruction word/packet length : 這樣機制有助於減少 Code size。

 Heterogeneous Register Files : 每個運算單元都有自己獨立的暫存器,對於每 個暫存器可直接拉線到各自運算單元,這樣可減少能量的損失,也可減少硬 體的面積。

 Constant Register File : 在這些暫存器中可儲存固定不常變動的常數,可減少 資料的搬運降低能源的消耗。

 Inter-cluster communication (ICC) by memory controller : 透過特殊指令集 (ICC),可使兩個 Cluster 之間互相溝通,可互相提昇兩個 Cluster 合作的效能。

 Optimized interrupt design with fast interrupt response time : 使用硬體來幫助 PAC DSP 的 Context Switch,可減少發生中斷時的處理時間。

 Hierarchical encoding scheme : 透過使用階乘管理方法減少指令之間的相依 關係,可減少分配指令單元的反應時間。

 Dynamic power management : 可動態調整 PAC DSP 的頻率以減少能源的消 耗。

 Customized functional unit interface : 可自訂硬體加速器透過這個界面與 PAC DSP 溝通並提昇 PAC DSP 的運算能力。

Figure 5.是 PAC DSP 架構圖,在 DSP Kernel 中最主要有幾個部份 Program Sequence Control Unit(PSCU)、Scalar Unit 和兩個 Cluster,PSCU 用來控制執行中程式 的流程,主要功能是更新 Program Counter 、Fetch address 和處理中斷程序。Scalar Unit 可 以 當 作 一 個 簡 單 的 32-bit RISC 處 理 器 , 可 有 效 增 加 指 令 間 的 平 行 度 (ILP, Instruction-level parallelism)。每一個 Cluster 包括 Arithmetic Unit 和 Load/Store Unit,

相關文件