最新电影在线观看,jrs低调看直播,avav天堂,囯产精品宾馆在线精品酒店,亚洲精品成人区在线观看

SDRAM詳細分析——03 流水線內存訪問和內存效率

大家好,這里是大話硬件。

在上一篇文章中介紹了SDRM讀寫數據最基礎的內存訪問周期,其中提到了因為電容漏電,SDRAM工作時需要不停的刷新,這無疑是會降低DDR的效率。

為了進一步提升DDR的效率,目前采用的技術是流水線內存訪問方式。

對硬件開發人員來說,流水線內存訪問的實現的基礎是SDRAM的命令總線和數據總線分開。

下面的圖解釋了流水線操作指令的核心。

命令總線先發出對bank0的操作,然后發出對bank1的操作,此時數據線開始傳輸bank0的數據,在傳輸bank0的數據的同時,命令總線并沒有閑著,繼續發送對bank2的操作,當bank0的數據傳輸完成后,因為bank1的命令提前就已經下達了,所以數據總線可以直接無縫切換傳輸bank1的數據。

命令和數據分開方式,就像我們并行工作一樣,當我們在設計A項目原理圖時,B項目的項目經理會提前告訴我們B項目要做的事情,這并不會影響我們正在開發的A項目。當A項目圖畫好以后,因為前期已經下達過任務,又開始直接干B項目。本質就是提高效率。如果等你干完A項目,B項目再來分配任務,就會耽誤這個分配的時間。

上面這種無縫切換,命令總線不空閑的方式就是流水線技術的核心,極大地減少了內存因為等待指令而產生的空閑時間。對硬件來說,數據總線上會一直存在數據。那么在相同的之間內,可以帶來更高的效率和數據吞吐量。

從前面的分析可知,SDRAM的刷新會影響效率,但是流水線指令又能增加效率,那到底如何定義這個內存效率呢?

內存效率定義公式:

efficiency=transfer_cycles/ total_cycles

這個公式說明內存效率關注的是SDRAM到底有多少個周期是在傳輸數據。這個比值越高,就說明內存的利用率越高。

一共有五個方面會影響到內存效率。

第一個:刷新效率

SDRAM因為內部構造原因,需要定期的進行刷新來保持數據不丟失。根據狀態機的可知,在進行刷新操作時,肯定不能進行數據的傳輸。就像人要固定的時間吃飯睡覺補充能量而停下工作。這是SDRAM從制造出來就已經決定的。

平均7.8us就需要對一個行進行刷新。

要想提升刷新效率,那必須對SDRAM內部的設計進行改進,這個比較困難。因此,刷新效率很難改變。

第二個:讀寫效率

數據總線的方向在讀和寫之間切換是需要時間的,如果一會讀,一會寫,頻繁的切換方向,這些切換的開銷就會累積起來。

讀到寫需要花費2個時鐘周期,寫操作切換到讀操作,需要花費4個時鐘周期。可想而知,如果是連續大量的讀或者大量的寫,效率就會比較高。

所以優化內存讀寫效率,就需要在命令總線上巧妙的安排指令,盡可能將相同的指令安排在一起,減少數據來回的切換。

第三個: Bank沖突效率

SDRAM內部是多bank架構,如果連續兩次訪問請求都是指向同一個bank的不同行,就需要先關閉前一行,再打開新的一行,這個過程非常消耗時間,就會產生沖突,降低效率。

根據SDRAM的時序約束要求,如果要激活同一個bank的新行,命令需要至少等待12個周期。但是如果訪問時,是切換不同的行,就只需要等待2個周期,這樣就能極大的降低bank沖突帶來的影響。

第四個:命令沖突效率

命令總線上發出的效率比較密集,就會發生沖突,造成延遲。

數據總線是雙倍速率傳輸,命令總線是單倍速率傳輸,這樣數據總線完成數據傳輸后,但是命令總線的指令還未及時下發,就會導致多個指令一起要發出,造成沖突。

第五個:數據效率

SDRAM在一次操作中取回的數據是不是百分百都是我們想要的,有時候為了數據對齊,內存會一次性讀取一個數據塊,但只有其中一部分的有效的,多取出來的部分就造成了浪費。

這和內存工作方式有很大的關系。內存并不是一個字節一個字節單獨讀取數據,這樣太慢,通常是一個固定大小的塊來讀取,如下所示,有用的數據只有中間的紅色的部分,但是讀取的時候,是一行全部獲取。

從下面的資料可以看出,讀取數據的突發長度不一樣,效率也是不一樣的。

根據上面的分析可知,內存效率和內存在工作時的訪問方式有非常大的關系。巧妙的安排指令的順序,數據是否在同一個bank,每次取出數據塊的大小,數據的對齊方式等等都是會影響到內存的效率。所以,設計出一個高效的SDRAM控制器在應對高數據帶寬的場合非常重要。

下一節介紹內存控制器。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關注 608
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧