• 沒有找到結果。

暫存器檔的資料交換機制

2.2. 用於多媒體運算的暫存器組織

2.2.2. 暫存器檔的資料交換機制

切割暫存器檔雖然有減少硬體複雜度的好處,但卻必需付出其他如需要 額外做資料交換的代價。由軟體方面來看就是暫存器使用上的自由度;由 硬體的角度而言就是必需增加額外的電路在不同暫存器檔之間做資料交 換。在本節中,我們綜觀一些常用的交換機制並大致區分為兩類:延伸存

RF0

FU FU

RF1

FU

Cluster 0 Cluster 1 FU

取,和共用空間。

„ 延伸存取(extended access)

由 硬 體 的 角 度 來 看 , 延 伸 存 取 是 經 由 額 外 的 交 換 繞 線 (crossbar router) 使功能單元(function unit) 在一些特定的情 況下可以直接讀出或寫入非專屬的暫存器檔的方式。其中這個功能 單元並不一定指運算單元(ALU) ,它可以是匯流排(BUS),IO 單元 (load-store unit),或是其他可用做資料交換的電路(圖 2-11)。

以軟體的角度來看時,延伸存取還可以再細分成三種類形:資料搬 移、延伸寫入和延伸讀取。

‹ 資料搬移(copy operations)

在指令中,運算單元要用到外面的資料時,必需先透過專 門的搬移的指令把資料複製到專屬的暫存器檔內才能使用 [13]。這些搬移資料的指令通常會經由特定的發出格(issue slot)來發出(issue)並執行,而硬體的交換電路會出現在用來 執行搬移指令的運算單元中。如 ADSP-21xx 必需透過特定的資 料搬移的指令,它利用 R bus 把資料般到專屬的暫存器檔才能 被下一個運算單元讀取(圖 2-11 (a))。

‹ 延伸寫入(extended write)

在原本限制存取的機制中開放寫入的權限給運算單元。讓 運算單元可以直接寫入其他的暫存器檔。在指令中的運算的結 果,可以不受存取範圍的限制,利用廣播或運送…等等各種方 法送到非專屬的暫存器檔諸存。在這樣的機制下硬體的交換電 路會出現在運算單元的輸出端。(圖 2-11 (b))

‹ 延伸讀取(extended read)

和偷寫相反的概念,交換電路被置於運算單元的輸入端。

這樣運算單元的輸出結果雖然只能存入專屬的暫存器內,在需 要時可被讀取並運送到其他的運算單元繼續被運算 (圖 2-11 (c))[19]。

RF0 RF1 RF2 RF3

FUs0 FUs1 FUs2 FUs3

(b) extended write

Crossbar Router

FUs0 FUs1 FUs2 FUs3 RF0 RF1 RF2 RF3

(c) extended read

Crossbar Router

圖 2-11 extended access model

„ 共用空間(shared storage)

相對於延伸存取利用額外的交換電路做資料溝通,而共用空間 則利用的是分級(Hierarchical)的概念以增加額外的暫存器空間 來達成資料交換。在這樣的交換機制中主要有基本型的共用暫存器 和增強型的 Ring structure 兩種做法(圖 2-12)。

‹ 共用暫存器(shared registers)

這是共用空間最基本的蓋念,在專屬的暫存器檔之下再加 一層共用的暫存器檔,資料可以透過共用暫存器做交換。這個 共用的暫存器檔的功能就如同集中式的暫存器一般可以和每

個專屬的暫存器做資料的交換。雖然功能上像集中式的暫存 器,但是因為它只支援必要的資料交換的動作,所以暫存器的 數量和 IO 埠的需求比起真正的集中式的暫存器檔已經少了很 多[18]。

‹ Ring Structure

Ring Structure 是把 banking 的概念再套用在上面的共 用暫存器上面,如圖 2-12 (b)共用的暫存檔一樣可以分成不 同的 bank 一次對應到一組專屬的暫存檔。當需要交換資料 時,可以經由 bank 的動態對應,可以把不同的 bank 對應到需 要資料的地方。

(a) Shared registers

(b) Ring structure 圖 2-12 Shared storage RF0

FU FU

RF1

FU FU Cluster 0 Cluster 1

SRF0 SRF1

相關文件