Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(十一)

11.2 DRAM Command Interactions 命令之间的交互

      在前一节中,对基本的DRAM命令进行了详细描述。在本节中,将更详细地研究基本DRAM命令之间的相互作用。在本章中,资源使用模型被用作主要模型来描述DRAM命令之间的相互作用以及对各种时序参数的需求。在资源使用模型中,DRAM命令可以连续调度,取决于共享的芯片上资源(如感应放大器、I/O门控复用器)和命令、地址和数据总线等外部资源的可用性。然而,即使有共享资源的可用性,考虑到设备电流限制等因素,也可能会阻止命令连续调度。

      本节将研究具有简单的开页和闭页行缓冲管理策略的内存系统中的读写命令。在实施开页行缓冲管理策略的内存系统中,一旦为访问打开了某一行,感应放大器数组将继续保存相同行的后续读写访问的数据,直到需要对同一存储区的不同行进行访问,这将迫使控制器对感应放大器进行预充电,以准备访问新的行。开页内存系统依赖于以某种程度的空间局部性访问内存的工作负载,以便在不需要多次DRAM行周期的情况下,可以对同一行进行多次列访问。

在开页内存系统中,对于给定的请求,DRAM命令序列取决于内存系统的当前状态。开页内存系统中DRAM命令序列的动态性意味着存在大量可能的DRAM命令交互和内存系统状态组合。这种复杂性在调度命令序列时提出了挑战。本节将详细研究开页内存系统中大量可能的DRAM命令交互。这种详细的研究有助于创建一个总结DRAM命令之间最小调度间隔的表格。最小调度间隔的摘要,反过来有助于本章对DRAM内存系统性能的分析。

11.2.1 Consecutive Reads and Writes to Same Rank 连续读写

      在现代DRAM内存系统(如SDRAM、DDR SDRAM和Direct RDRAM内存系统)中,对于同一内存存储区、同一存储库、同一通道的打开行,可以通过数据总线上的数据突发持续和DRAM设备的内部预取长度来进行流水线处理和连续调度。

       图11.12显示了两个连续流水线处理的列读取命令,标记为read 0和read 1。如图11.4所示,将列读取命令放置到命令和地址总线上后,DRAM设备开始在数据总线上返回数据。由于对同一存储库的任何打开存储库的列读取命令都可以连续流水线处理,因此可以理想地每个tBURST时间段调度一次对同一内存存储区的同一存储库的连续列读取命令。调度连续列读取命令到存储库的同一行的一个重要条件是tBURST必须大于或等于tCCD。显然,在所有RDRAM、SDRAM、DDR SDRAM和DDR2 SDRAM内存系统中,tBURST都大于tCCD。

       唯一的例外是DDR3 SDRAM设备中的tCCD为4个时钟周期,因为DDR3 SDRAM设备的预取长度为8数据节拍。因此,对于同一或不同存储库的DRAM设备的同一存储库的连续列读取命令的最佳时序是MAX(tBURST, tCCD)。

      最后,类似于连续的列读取命令可以被调度到同一内存等级的不同打开存储库中,连续的列写入命令可以被调度到同一内存等级的不同打开存储库中,每隔MAX(tBURST, tCCD)时间段进行一次调度。

理解:现在用的DDR,比如DDR3,DDR4,LPDDR4等tCCD都远大于tBURST;所以不再考虑tBURST的事情。对于连续操作,单rank下,对于访问相同bank,相同row和不同已经打开的bank这两种情况,写操作命令的间隔都是tCCD。即burst len的时间长度,所以此时数据可以无缝传输。

FIGURE 11.12: Consecutive column-read commands to the same bank, rank, and channel.

11.2.2 Read to Precharge Timing

      图11.13展示了紧随列读取命令之后的预充电命令的最小命令定时。图11.13展示了最小命令定时的公式,即tBURST + tRTP - tCCD。在DRAM设备的内部突发长度tCCD等于列突发持续时间tBURST的情况下,列读取命令和预充电命令之间的最小命令定时就是tRTP。然而,在某些DRAM设备中,突发持续时间可能由多个内部数据突发组成。例如,如前所示的在DDR2 SDRAM内存系统中,列访问命令被编程为以8个数据突发的持续时间来移动数据,DDR2 SDRAM设备的内部突发持续时间仅为4个数据突发。

因此,上述DDR2 SDRAM内存系统中的列读取到预充电定时可以简单地重写为tRTP + tCCD。

      实际上,定时参数tRTP规定了列读取命令和预充电命令之间所需的最短时间。然而,在像DDR2 SDRAM这样的DRAM设备中,会使用多个较短的突发来构建一个连续的突发,用于列读取命令。在这种情况下,DRAM设备必须保持感放器打开以将多个短突发通过I/O门控多路复用器传递,并且必须修改定时参数tRTP以考虑感放器保持打开的延长时间。更一般地,列读取到预充电定时的公式可以写为tRTP + (N - 1) * tCCD,其中N是形成单个列读取命令的扩展突发所需的内部突发数量。

理解:读命令到precharge命令之间的时间为:tAL+tBURST + tRTP - tCCD;

读操作不需要数据传输完毕就可以进行precharge;只需要等数据传输到IO缓存即可进行。这样就会进行。

发送读命令到CA BUS上不代表读操作进行,所以需要考虑tAL。

(1)比如说LPDDR4,BL16mode下,读命令到precharge的命令是tRTP;因为tBURST=8CK tCCD=8CK;D但是在BL32nmode下,读命令到precharge的命令是RTP+8nCK;因为此时tBURST=16nCK;但tCCD=8nCK不变。

FIGURE 11.13: Read to precharge command timing.

11.2.3 Consecutive Reads to Different Rows of Same Bank

       在大多数现代DRAM设备中,可以像图11.12所示那样,对同一打开的同一行的多个列读取命令进行连续发出和流水线处理。然而,对同一存储体中不同行的列读取命令将产生整个行周期时间的成本,因为当前的DRAM存储体必须进行预充电,并由感放器阵列激活不同的行。

最好的情况

       图11.14说明了两个连续的读取请求到存储体数组同一bank内不同行的时间和命令顺序。在此顺序中,当发出第一个读取命令(标记为read 0)时,必须在可以打开同一组内的不同行进行访问之前,对感放器阵列进行预充电。在从预充电命令的断言经过时间段tRP之后,随后可以发出不同的行访问命令,而在行访问命令之后的时间段tRCD之后,第二个读取命令(标记为read 1)就可以继续执行。

图11.14说明了可以在满足行恢复时间tRAS的条件下以最佳时序tBURST + tRTP – tCCD + tRP + tRCD安排不同行内连续列读取访问。

FIGURE 11.14: Consecutive column-read commands to different rows of the same bank: best-case scenario.

最坏的情况

      当前行的数据尚未完全恢复到DRAM存储单元中,因此在同一银行的上一个行访问命令之后,必须等待tRAS时间段后才能发出预充电命令。与图11.14中显示的最佳时序相反,图11.15显示了在同一银行的不同行之间执行两个连续读取命令的最坏时序,其中第一个列命令是在行访问命令后立即发出的。在这种情况下,预充电命令不能在第一个列读取命令之后立即发出,而必须等待前一个行访问命令的tRAS时间段过去。然后,在预充电命令后的tRP时间段之后,可以发出第二个行访问命令,在该行访问命令之后的tRCD时间段之后,第二个列读取命令完成这一命令序列。图11.14说明了对同一银行的不同行执行两个连续读取命令的最佳时序,而图11.15说明了在同一银行的不同行之间执行两个列读取命令的最坏时序。这两种不同情况之间的差异意味着DRAM内存控制器必须跟踪行访问命令的时序,并延迟任何行预充电命令,直到行恢复要求得到满足。

理解:tRCD与tRAS之间会一般存在比较大的时间;远超过RTP的时间;在各个打开一个bank的一行时,虽然经过tRCD后可以发送读命令了,此时data 还没有restore。所以如果要进行precharge需要满足RTP时间也要满足RAS时间,此时RAS-RCD的时间远大于RTP;所以此时precharge需要需要考虑RAS的时序要求。

FIGURE 11.15: Consecutive column-read commands to different rows of same bank: worst-case scenario.

11.2.4 Consecutive Reads to Different Banks: Bank Conflict

       前一部分已经研究了连续读取命令针对同一银行不同行的情况。本节研究了连续的读取请求到不同银行的情况,其中第二个请求与目标银行中的活动行发生了冲突。第二个读取请求在不同银行之间产生冲突的连续读取请求场景有多种可能的最小调度距离组合,这些组合取决于银行的状态以及DRAM控制器在不同事务请求之间重新排序命令的能力。
Without Command Reordering
      图11.16说明了对同一rank不同bank的两个连续读取请求的时序和命令顺序,第二个读取请求是针对该bank的感应放大器阵列中与活动行不同的行进行的。图11.16基于三个隐含的假设。
(1)第一个假设是银行i和j都是打开的,其中银行i不同于银行j。
(2)第二个读取请求发送到银行j,但是要读取银行j感应放大器阵列中不同于当前活动行的行。在这种情况下,对银行j的预充电命令可以与对银行i的列读取同时进行。第二个假设是tRAS的要求已经在银行j中满足,可以立即对银行j进行预充电。
(3)第三个最后一个假设是DRAM控制器不支持在不同事务请求之间重新排序命令或交易。也就是说,与第一个请求相关的所有DRAM命令必须在安排与第二个请求相关的任何DRAM命令之前得到安排。
      根据图11.16,由于银行冲突,对银行j的读取请求被翻译成了三个DRAM命令的序列。序列中的第一个命令是对银行j的感应放大器进行预充电,第二个命令将所选行引入感应放大器,而序列中的最后一个命令执行实际的读取请求,并将数据从DRAM设备返回到DRAM控制器。
图11.16说明了一个情况,其中连续的读取请求发送到不同的行,第二个读取请求发送到同一银行的不同行。在DRAM命令序列没有被内存控制器动态重新排序的情况下,这两个请求最多可以在tRP + tRCD的最小时序距离内安排。
理解:前面在读bank i ,然后下一步读bank j,读bank j 的row不是当前bank j 处于 act状态的row,所以需要先关闭bank j 中处于act的这一行,然后打开另外一行。关闭bank j的这一行需要precharge,precharge不需要关注bank i中的读操作。对于没有command reorder的控制器,只能一步一步来。
FIGURE 11.16: Consecutive DRAM read commands to different banks; bank conflict; no command reordering.
With Command Reordering

       图11.16说明了两个请求的时序,这两个请求发送到不同的银行,其中第二个请求导致了银行冲突,并且DRAM控制器不支持命令或事务的重新排序。相比之下,图11.17显示了如果DRAM控制器可以交错或重新排序来自不同事务请求的DRAM命令,则DRAM内存系统可以获得带宽利用率。

      图11.17显示了一种情况,其中DRAM控制器允许银行j的预充电命令在事务请求发送到银行i之前执行。在这种情况下,对银行i的列读取命令可以与对银行j的预充电命令并行执行,因为这两个命令利用了不同银行的不同资源。为了更好地利用DRAM内存系统的带宽,DRAM控制器必须具备重新排序和交错来自不同事务请求的命令的能力。图11.17显示了在DRAM内存系统可以交错和重新排序来自不同事务请求的DRAM命令的情况下,两个列读取命令可以按照tRP + tRCD - tCMD的时序进行安排。因此,图11.17展示了DRAM内存系统如何通过先进的DRAM控制器设计获得更好的带宽利用率的一种方式。

理解:如果控制器支持Command Reordering,那么就会先precharge bank j的act row,然后发送读命令访问bank i。这样可以省掉一个tCMD时间。
FIGURE 11.17: Consecutive DRAM read commands to different banks, bank conflict, with command reordering.

11.2.5 Consecutive Read Requests to Different Ranks

       图11.12说明了对同一级别的DRAM设备中已打开银行的连续读取命令可以被连续发出和流水线处理。然而,对于不同存储器级别的连续读取命令,根据系统级同步机制和内存系统的操作数据速率,可能无法连续发出和流水线处理。在某些内存系统中,对不同存储器级别的连续读取命令依赖于复杂的系统级同步机制,对于多级别、高数据速率的内存系统而言,这并不简单。

       在这些系统中,数据总线必须在共享数据总线上来自不同级别的数据突发之间闲置一段时间。图11.18说明了对不同级别的两个连续读取命令的时序和命令序列。在图11.18中,读写(DQS)数据同步重新同步时间被标记为tRTRS。对于相对低频率的SDRAM内存系统,不使用数据同步 strobe,tRTRS为零。对于Direct RDRAM内存系统,使用与拓扑匹配的源同步时钟方案可以避免需要单独的 strobe 信号,tRTRS也为零。然而,对于DDR SDRAM和DDR2 SDRAM内存系统,使用由所有级别共享的系统级数据 strobe 信号,意味着tRTRS数据 strobe 重新同步惩罚不为零。

FIGURE 11.18: Consecutive column-read commands to different ranks.

11.2.6 Consecutive Write Requests: Open Banks

         不同于连续的列读取命令发送到不同级别的DRAM设备的情况,现代DRAM内存系统中,连续的列写入命令发送到不同级别的DRAM设备可能会被连续流水线处理,这取决于采用的总线终端策略。
        连续列写入命令发送到不同级别的DRAM设备与连续列读取命令发送到不同级别的DRAM设备之间的区别在于,在连续列读取命令发送到不同级别的DRAM设备的情况下,DRAM设备的一个级别必须首先将数据发送到共享数据总线并放弃对共享数据总线的控制,然后DRAM设备的另一个级别必须获得对共享数据总线的控制并将其数据发送到DRAM控制器。而在连续列写入命令发送到不同级别的内存时,DRAM内存控制器可以向不同级别的DRAM设备发送数据,而无需将共享数据总线的控制权交给另一个总线主控。因此,在SDRAM和DDR SDRAM内存系统中,可以连续流水线处理不同级别的DRAM设备的写入突发。但是,随着数据速率的增加,多点拓扑总线上的信号传输变得更加复杂,DRAM设备制造商和系统设计工程师不得不采用更复杂的机制来改善系统级信号完整性。
      在DDR2 SDRAM内存系统中用于改善信号完整性的一种机制是在DDR2 SDRAM设备上使用主动式的On-Die Termination(ODT)。然而,在DDR2 SDRAM内存系统中,ODT的不幸副作用是需要2个周期才能启用DDR2 SDRAM设备中的ODT,而要关闭ODT则需要2.5个周期,开启和关闭时间的差异需要在写入突发之间增加一个额外的周期。图11.19显示了两个不同级别的写入命令,标记为write 0和write 1,连续流水线处理,但在不同级别之间有一个ODT切换时间惩罚,标记为tOST。图11.19显示,可以在每个tBURST + tOST周期内连续发送到已打开内存银行的列写入命令。在SDRAM和DDR SDRAM内存系统的情况下,可以在数据总线上不需要任何空闲时间的情况下发送到不同级别的写入数据突发。对于DDR2和DDR3内存系统,需要准确控制数据总线信号特性,这意味着需要额外的周期来切换内存通道中终端元素的位置。实际上,在级别之间进行读取时也需要tOST。但由于tRTRS通常大于或等于tOST,因此可以将MAX(tRTRS, tOST)简化为tRTRS。
FIGURE 11.19: Consecutive column-write commands to different ranks.

11.2.7 Consecutive Write Requests: Bank Conflicts

     类似于连续的读取请求发送到同一银行的不同行的情况,连续的写入请求发送到同一银行的不同行也必须遵守tRAS和tRP的时序要求。此外,列写入命令还必须遵守写恢复时间tWR的时序要求。在向同一银行的不同行发送写入命令的情况下,写入恢复时间意味着只有在写入恢复时间允许数据从DRAM设备的接口通过感应放大器进入DRAM单元后,才能开始预充电

图11.20显示了发送到同一银行不同行的两个连续写入请求的最佳时序情况。不同行之间的两个写入命令的最小调度距离为tCWD + tBURST + tWR + tRP + tRCD。

      图11.20还展示了连续的写入请求发送到不同级别的DRAM设备的情况,其中第二个写入请求导致银行冲突。在这种情况下,第一个写入命令继续执行,假设用于级别n的银行j已经满足了tRAS时序要求,那么可以立即发出不同银行或不同级别的预充电命令。类似于连续读取请求的情况,发生在连续写入请求中的银行冲突,不同银行和不同级别的情况也可以受益于命令重排序。
FIGURE 11.20: Consecutive write commands, bank conflict, best cases.

11.2.8 Write Request Following Read Request:Open Banks

       与连续的读取命令和连续的写入命令类似,紧随列读取命令之后的列写入命令组合可以按顺序安排,只要共享数据总线上的数据突发的时序允许。图11.21说明了一个跟随列读取命令的列写入命令,并显示了列写入命令的内部数据传输不与列读取命令的内部数据传输发生冲突。因此,只要DRAM设备为列写入命令返回的数据突发的时序与DRAM控制器为列写入命令发送到DRAM设备的数据突发的时序不发生冲突,列写入命令可以在列读取命令之后立即发出到DRAM内存系统。图11.21显示了跟随列读取命令的列写入命令之间的最小调度距离简单地为tCAS + tBURST + tRTRS - tCWD。
      跟随列读取命令的列写入命令之间的最小时序距离因不同的内存访问协议而异。然而,tCAS +  tBURST + tRTRS - tCWD的最小时序表达式适用于SDRAM内存系统以及各种DDR x SDRAM内存系统。例如,在SDRAM内存系统中,tCWD和tRTRS都为零,因此在SDRAM内存系统中,跟随读取请求的写入请求之间的最小时序距离简单地为tCAS + tBURST。相比之下,在DDR SDRAM内存系统中,tCWD和tRTRS都需要2个节拍(1个完整的内存时钟周期),跟随读取请求的写入请求之间的最小时序距离也是tCAS + tBURST。在这两种情况下,时序相同,但是通过不同的方式得到了相同的方程。
理解:对于不同bank之间 读命令之后跟着写命令,需要保证DQ数据上读数据传输完后,才能进行写数据,需要满足这个要求
FIGURE 11.21: Write command following read command to open banks.

11.2.9 Write Request Following Read Request to Different Banks, Bank Conflict, Best Case, No Reordering

     图11.22说明了写入请求跟随读取请求发送到不同银行的情况。在图中,列读取命令被发送到银行i,列写入命令被发送到银行j,其中i不等于j。通常情况下,这两个命令可以按照图11.21所示的最小调度距离连续流水线处理。然而,图11.22中的假设是写命令是对不同于银行j当前持有的行的写命令。因此,DRAM控制器必须首先对银行j进行预充电,并向银行j发出新的行访问命令,然后才能发出列写入命令。在所提供的最佳情况下,银行j中的写入命令所访问的行已经恢复到DRAM单元中,并且自行初次访问以来已经过去了超过tRAS时间。图11.22显示,在这种情况下,读命令和随后发送到不同银行的写命令可以按照最小调度距离tCMD + tRP + tRCD来安排。
      图11.22显示了严格遵守来自不同请求的DRAM命令之间顺序的情况。在这种情况下,发送到银行j的预充电命令不受发送到银行i的列读取命令的限制。在具有支持命令重排序和交错来自不同事务请求的DRAM命令的DRAM控制器的内存系统中,与在图11.16和11.17中展示的连续读取请求相同,可以通过增加DRAM内存系统在安排在读取请求之后跟随读取请求的具有银行冲突的写入请求时的效率。
FIGURE 11.22: Write command following read command to different banks: bank conflict, best case.

11.2.10 Read Following Write to Same Rank,Open Banks

      图11.23展示了列写入命令后跟随同一级别DRAM设备中的列读取命令的情况。读取命令和写入命令之间的区别在于所选DRAM设备内部数据流的方向相对于彼此是相反的。数据流方向的重要性可以在将读取命令安排在写入命令之后到同一级别的DRAM设备时观察到。图11.23显示,数据流方向的差异限制了列写入命令和随后到同一级别设备的列读取命令之间的最小调度距离。图11.23显示,在DRAM控制器将数据放置到数据总线上后,DRAM设备必须利用DRAM设备内的共享I/O门控资源将写入数据移动到所选银行的适当列中。由于I/O门控资源在同一级别DRAM设备的所有银行之间共享,因此无论各列访问命令的目标或目的银行ID如何,跟随写入命令到同一级别DRAM设备的读取命令都必须等待写入命令完成后才能使用共享I/O门控资源。图11.23显示,写入命令和随后的读取命令之间的最小调度距离为tCWD + tBURST + tWTR。

为了减轻图11.23中所示的写入到读取的切换时间,一些高性能的DRAM设备,如Rambus Direct RDRAM,设计了写入缓冲区,以便一旦数据写入写入缓冲区,I/O门控资源可以被另一个命令(例如列读取命令)使用。

FIGURE 11.23: Read following write to the same rank of DRAM devices.

11.2.11 Write to Precharge Timing

      图11.24显示了列写入到列读取时序和列写入到预充电时序之间的微妙差异。基本上, tWTR用于表示需要用于DRAM设备接口中的多路复用器(如图11.24所示的I/O门控阶段)将数据驱动到感放大器阵列中所需的时间。从列写入命令的发出开始,经过tWTR时间,列读取命令可以使用I/O门控资源将数据从活动感放大器阵列中的数组移出DRAM设备。列写入到预充电命令组合与列写入到读取组合不同之处在于预充电命令释放了感放大器中存储的数据并对感放大器进行了预充电,因此,随后的预充电命令不能在写入命令将数据通过I/O门控资源传送到感放大器并将新数据值直接驱动到DRAM单元之前启动。图11.23和11.24说明,在DRAM设备中,tWTR通常持续时间比tWR短。
理解:WTR为什么会比WR短;因为写操作之后进行读操作,不需要等待数据 restore到储存电容中;但是precharge需要。
FIGURE 11.24: Write to precharge command timing.

11.2.12 Read Following Write to Different Ranks, Open Banks

       图11.25展示了一种略有不同的情况,即列写入命令后跟随列读取命令的情况,与图11.23中所示的情况不同。在图11.25中,列写入命令后发出的列读取命令与图11.23中所示的列写入命令后发出的列读取命令的组合不同,因为列写入命令和列读取命令发出到不同级别的内存。由于数据移动发生在内存的不同级别中,因此在每个内存级别内数据移动方向的冲突是不相关的。因此,不同级别内的写入命令后跟随读取命令之间的时序约束仅减小到数据总线同步开销tRTRS、突发持续时间tBURST和读写命令延迟之间的相对时序差异。因此,不同级别内的写入命令和读取命令之间的最小时间间隔为tCWD + tBURST + tRTRS - tCAS。
      在DDR SDRAM内存系统中,tCWD是一个时钟周期,tRTRS是一个时钟周期,列写入命令和随后跟随到不同级别内存的列读取命令之间的最小调度距离为MAX(tCMD, tBURST – tCAS – 2)。相比之下,在DDR2 SDRAM内存系统中,tCWD比tCAS少一个完整时钟周期,如果tRTRS可以最小化为一个完整时钟周期,那么tCWD + tRTRS – tCAS将抵消为零,跟随写入命令的读取命令到DDR2 SDRAM内存系统中不同级别的最小调度距离仅为tBURST。
        FIGURE 11.25: Read following write to different ranks of DRAM devices.

11.2.13 Read Following Write to Same Bank,Bank Conflict

      图11.26展示了读取请求跟随写入请求到同一银行的不同行的情况。在最佳情况下,被写入请求访问的行已经被恢复到DRAM单元中,并且自上一行初始访问以来已经过去了超过tRAS的时间。图11.26显示,在这种情况下,只有在从列写入命令写入DRAM单元后,才能发出预充电命令。也就是说,在进行预充电DRAM阵列之前,必须遵守写入恢复时间tWR。图11.26显示,跟随写入请求的读取请求到同一银行的最佳最小调度距离是tCWD + tBURST + tWR + tRP + tRCD。
      图11.26展示了在没有写入缓冲区的DRAM设备上,读取请求跟随写入请求到同一银行的不同行时的命令交互。在具有写入缓冲区的DRAM设备中,列写入命令的数据被临时存储在写入缓冲区中。如果在写入请求之后,读取请求到达以从同一银行的不同行检索数据,那么DRAM控制器可能需要向DRAM设备发出单独的提交数据命令,以强制写入缓冲区将写入缓冲区中存储的数据提交到DRAM单元,然后才能为另一个行访问进行预充电。
FIGURE 11.26: Read following write to different rows of the same bank.

11.2.14 Read Following Write to Different Banks of Same Rank, Bank Confl ict, Best Case, No Reordering

      最后,图11.27展示了读取请求跟随写入请求到同一排的不同银行的DRAM设备的情况。然而,读取请求发送到银行j,银行j中的活动行与读取请求所需的行不同。图11.27假设银行j的tRAS时序要求已经得到满足,并且DRAM内存系统不支持不同内存事务之间的DRAM命令重排序。图11.27显示,在这种情况下,读取请求命令的预充电命令可以在写入命令发出后立即发出。因此,图11.27显示,在这种情况下的最小调度距离是tCMD + tRP + tRCD
      图11.27还揭示了几个值得注意的要点。
       一个明显的要点是,图11.27中所示的DRAM命令序列可能会受益于不同内存事务之间的命令重排序。
       第二个不太明显的要点在图11.27中有所体现,即计算得出的最小调度距离取决于各种不同时间参数的相对持续时间。也就是说,图11.27假设预充电命令可以在写入命令之后立即发出,并且tCMD + tRP + tRCD大于tCWD + tBURST + tWR。如果实际上tCMD + tRP + tRCD小于tCWD + tBURST + tWR,那么共享的I/O门控资源将成为瓶颈,列读命令必须等待,直到列写命令的写入恢复阶段完成,然后列读命令才能继续。也就是说, 写入请求和带有银行冲突的不同银行的读取请求之间的最小调度距离实际上是tCMD + tRP + tRCD和tCWD + tBURST + tWR中的较大者。 
FIGURE 11.27: Read following write to different banks, bank confl ict, best case.

11.2.15 Column-Read-and-Precharge Command Timing

       图11.13说明了在列读取命令之后立即发出的预充电命令的最小命令时序,最小命令时序计算为tBURST + tRTP - tCCD。此外,在列读命令是已发布的列读命令的情况下,还必须将附加的延迟参数tAL添加到总体命令时序中,从而导致了在列读命令之后发出的预充电命令的最小命令时序为tAL + tBURST + tRTP - tCCD。列读取和预充电命令实际上采用了相同的时序规范,并在发出列读取命令后tAL + tBURST + tRTP - tCCD时间内自动执行了隐式预充电命令。然而,预充电部分仍然必须在前一行激活命令的行数据恢复时间tRAS之前进行,因此现代DRAM设备(如DDR2 SDRAM)具有额外的硬件,内部延迟了命令的预充电部分,以确保在启用命令的集成预充电部分之前尊重行访问的tRAS时序。图11.28说明了在行访问命令之后发出的列读取和预充电命令的最小时序仅为tRCD - tAL。
FIGURE 11.28: Row access to column-read-and-precharge command timing.

11.2.16 Column-Write-and-Precharge Timing

      紧随行访问命令的列写入和预充电命令的时序必须确保集成列写入和预充电命令的列写入部分和预充电部分都遵守行访问命令施加的时序约束。幸运的是,时序参数tRAS已经被定义为包括列写入命令,因此在行访问命令之后可以自由发出列写入和预充电命令,而不会违反命令的集成预充电部分的预充电时序。图11.29显示了列写入命令和随后的预充电命令之间所需的最小时序。与列读取和预充电命令类似,列写入和预充电命令采用相同的时序规范,并在原子方式下执行隐式预充电命令。

       最后,DRAM设备通常受到写周期的限制,并且tRAS通常在SDRAM和DDRx SDRAM内存系统中已经定义了足够的时序余量,以容纳单个列写入命令。然而,其他内存系统和未来的内存系统可能会以不同方式定义tRAS,并且在这些内存系统中,列写入和预充电命令的时序可能具有额外的约束。

FIGURE 11.29: Row access to column-write-and-precharge command timing.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哈哈黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值