<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 內存條容量與顆粒容量的關系   首先說一下顆粒   簡單的講,顆粒就是內存條上的幾片較大集成塊,顆粒數據是每片集成塊的數據,與內存容量是一個倍數關系。   容量單位:Mb,MB,注意字母B的大小寫。   8Mb=1MB   電腦以及人們常說的256兆,512兆,是指256MB,512MB。   三星內存顆粒:   512Mb 128M\*4   512Mb 64Mb\*8   512Mb 32M\*16   等等,都是顆粒資料,而非內存條的實際容量。   內存條容量=顆粒容量*顆粒數量   顆粒容量:即顆粒數據提供的容量,   顆粒數量:即內存條較大集成塊的數量,也就是有幾片,數量就是幾。   比如:   根據網友提供的資料:   力積電子的顆粒:   512Mb 32M\*16   直接使用Mb為單位計算:   顆粒容量=512Mb(32M\*16),   顆粒數量=2,   內存條容量=顆粒容量\*顆粒數量   =512Mb\*2=1024Mb=128MB(注意單位中字母B的大小寫,1024MB/8=128MB)   即128兆。   或者這樣算:使用MB為單位計算:   512Mb/8=64MB,   顆粒容量=64MB,   顆粒數量=2,   內存條容量=顆粒容量\*顆粒數量   =64MB\*2=128MB。   可見廠方標的是正確的。   隨便提一句,混淆視聽的公司還是有的。比如電信營運商說2兆(2M)的寬帶,用戶一般認為2兆(2M)是2MB,可電信營運商說2兆實際是2Mb,也就是256KB,2Mb/8=0.25MB=256KB. # DRAM 內存介紹 SDRAM(Synchronous dynamic random access memory),同步動態隨機訪問內存,通常包括 SDR (Single Data Rate) SDRAMs以及DDR (Double Data Rate) SDRAMs.在顯卡中常用的是GDDR SDRAMs以及HBM。 ??????? 如圖一所示,左邊就是PC系統中常用的內存條,該內存條是雙通道2G內存(dual inline Memory Module),通常簡稱為DIMM。我們可以看到內存條上黑色的128MB內存芯片,這些內存芯片簡稱為IC。該內存條是雙面內存,就是說正反兩面都有8個IC,總共16個IC,16*128M=2GB。DIMM的單面稱作rank,比如下圖的2GB內存條,它就是由rank1,rank2兩個單面組成,每個面有8個IC。 ![](https://img.kancloud.cn/72/43/72433f76961cc3609781b50cf810f91c_550x758.png)*圖一,DRAM的組成* ???? 每個IC內部通常由8個bank組成(DDR3通常為8個bank,GDDR5通常有16個bank),這些bank共享一個memory I/O controller, 但是在每個bank內部的讀寫可以并行進行。 ???? 每個bank內部包括行地址解碼器,列地址解碼器,傳感放大器,以及DRAM內存陣列。如圖2所示,這些內存陣列由行列組成,每個行列交叉的單元,表示n bit,通常是8bit或者16位【每一位都是由一個晶體管和一個電容組成,在GDDR5和HBM內存中,通常為32Byte】,表示一個字節或者一個word。bank中的每一行組成一個page,每一行又包括很多列(這兒列是指單個交叉單元)。內存讀寫的最小單位就是這些交叉單元,通常只有這些單元被放入傳感放大器的時候,才能夠被讀寫,所以通常要不斷在行和傳感放大器之間移動數據。 ??? 把一行放入傳感放大器稱作"activate”,因為這個操作會激活bank。把傳感放大器的內容放入行,稱作“precharge”。有時候Read或者write的時候會隱含著 precharge的操作,稱作AP-read,或者AP-write,AP(auto precharge)。 ![](https://img.kancloud.cn/9a/f5/9af5de7be0eef074c900f511ca8c5971_477x415.png)圖二 bank內部結構 >[danger]在圖一中每個bank由16k(16384bit)的page組成,每個page包括1k的列,每列是8bit的byte,所以總共16384 rows/bank x 1,024 columns addresses/row x 1 byte/column address x 8stacked banks=128M 對于DDR3,我們通常說它是8n-prefetch(這兒n是指每個rank的bank數目),因為DDR3,每個IC有8個bank,每個bank讀取數據的最小單位是8bit,一個byte。每次數據讀取request,都會讀取8\*8bit=64bitdata,而不管這些數據是否都是我們所需要的,比如我們只需要其中的某個byte,但讀request會讀取8個byte。 ???? 如果圖三所示, SDRAM讀寫通常能用一個簡單的狀態機來描述,它的狀態包括idle, active, precharging一個或多個bank。和任何其它狀態機一樣,從一個狀態轉換到另一個狀態,并在新的狀態開始數據操作,都需要一些最小等待時間,這些時延會影響SDRAM讀寫數據的性能,從而影響整個計算機系統的性能。 SDARM bank中的內存單元行列交叉(通常稱作cell? )點,用來存儲數據,它通常都是一些電容和放大器組成,由于電容的特性,它的電量會隨著時間衰減,比如溫度等因素都會影響它的衰減速度,所以需要周期性進行加電刷新操作,維持其中的數據。刷新頻率通常依賴于內存die的工藝以及cell本身的設計。對內存cell的讀寫和內存刷新有相同的效果,但是在電容電量衰減到必須刷新之前,并不是所有的內存cell都有讀寫操作,所以定時刷新仍是需要的。通常刷新操作是按行或者說page進行的,刷新之后,該行cell的電容就會被充電。通常的刷新操作周期是幾百clocks到幾千clocks。 ???? 在刷新命令之前,每個bank必須要先precharged,然后處于idle狀態,這需要消耗一個tRP時延(The minimum number of clock cycles required between the issuing of the precharge command and activating a different row within the same bank)。在一個刷新命令完成后,所有的bank處于precharge (idle)狀態,在刷新命令和下一個activate命令(ACT)之間cycles數目必須大于等于tRFC(the Row Refresh Cycle Time )。 ![](https://img.kancloud.cn/0f/46/0f4695f9e5d244db58d5c9aa1dc5dc3e_550x919.png)圖三,? SDRAM數據傳輸狀態機 由于數據傳輸時候,都有一定的時延,所以有下面的一些符號描述bank內數據傳輸的各個階段時延。 | 參數 | 符號 | 注釋 | | --- | --- | --- | | Row Active Time | TRAS | The minimum number of clock cycles required between a bank active command and issuing the precharge command. | | Row Address to Column Address Delay | TRCD | The minimum number of clock cycles required between the activation of a row and accessing columns within it. | | CAS latency | CL | The time between sending a column address to the memory and the beginning of the data in response. This is the time it takes to read the first bit of memory from a DRAM with the correct row already open. | | Row Precharge Time | TRP | The minimum number of clock cycles required between the issuing of the precharge command and activating a different row within the same bank. | | Activate to Activate in same bank. | TRC | The minimum number of clock cycles required between the activation of a row activting another row in the same bank. | | Burst | | The number of data beats in a column access. This is usually 8 for recent DDR3/GDDR5 devices. | SDRAM在響應讀寫命令之前,bank必須處于激活狀態,內存控制器通過發送activate命令,指定被訪問的rank,bank以及page(row)。激活一個bank的時間稱作tRCD,the Row-Column (or Command) Delay ,它表示激活發送active命令,program控制邏輯以及把內存行列單元讀取到傳感放大器中以便讀寫的cycles數目。 ???? bank激活之后,傳感放大器中有完整page內容,這個時候,可以發射讀寫命令,指定從某列開始讀寫數據。從某個激活的page(放在傳感放大器中)中讀取一個byte數據消耗的時間稱作, the Column Address Strobe (CAS) Latency ,通常間歇位CL 或者tCAS, 它包括在讀寫接口發送讀寫命令,program控制邏輯,把傳感放大器的內容傳輸入到輸入輸出緩沖,并把數據的第一個word放在內存總線上總共消耗的時間。 ???? 一個bank每次只能打開一個page(這兒打開是指把page內容放入到傳感放大器),對于處于打開狀態的page,我們可以進行讀寫操作,如果不需要再對該page進行讀寫操作,可以關閉該page, 把該page內容寫入bank的行列單元對應的page中,以便對其它page進行讀寫操作。這個關閉操作通過發射一個Precharge命令實現,precharge命令可以關閉某一個bank,也可以關閉rank中所有打開的bank。 ??? Precharge命令可以和bank中的上一個讀寫操作進行綁定,從而進行一個組合操作,這時發送一個Read with Auto-Precharge (RDA) 或 Write with Auto-Precharge (WRA)代替單獨的讀寫操作命令。只要滿足一定的條件,這將允許SDRAM控制邏輯自動的打開或者關閉bank。需要滿足的條件包括:(1) A minimum of RAS Activation Time (tRAS) has elapsed since the ACT command was issued, and (2) a minimum of Read to Precharge Delay (tRTP) has elapse since the most recent READ command was issued。 ??? precharge命令把傳感放大器中的數據寫入bank中對應的page中,然后DRAM core能夠準備下一個數據訪問。 precharge一個打開的bank所消耗的時間稱作the Row Access Strobe (RAS) Precharge Delay ,通過寫作tRP。同一個bank兩個activate命令之間所消耗的時間稱作tRC,它等于tRAS+tRP。不同bank的ACT命令間隔時間稱作the Read-to-Read Delay (tRRD)。 下面的時序圖標出了各個階段時延: ![](https://img.kancloud.cn/2a/2c/2a2cd5db524658192aa2cf5234bb01ee_1105x235.png) [https://blog.csdn.net/qq\_39759656/article/details/81672895](https://blog.csdn.net/qq_39759656/article/details/81672895)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看