CN101069211A - 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 - Google Patents
分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 Download PDFInfo
- Publication number
- CN101069211A CN101069211A CNA2005800397778A CN200580039777A CN101069211A CN 101069211 A CN101069211 A CN 101069211A CN A2005800397778 A CNA2005800397778 A CN A2005800397778A CN 200580039777 A CN200580039777 A CN 200580039777A CN 101069211 A CN101069211 A CN 101069211A
- Authority
- CN
- China
- Prior art keywords
- section
- data
- address
- staggered
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
Abstract
一种用于对多个存储器区段(12,72)寻址的交错寻址技术使用多个缩略交错(0,1,...,2B-1),每一交错对多于一个且少于全部的存储器区段寻址。交错与相邻的交错彼此偏移(S),以对所有存储器区段同等地寻址。与交错存储器一起使用的储存多个向量的智能存储器区段包括设置装置(96),它接收每一向量的初始地址(B+C+V+NMSK)和间隔数据(D)。寻址逻辑(90)将存储器单元选择(C)与多个向量的每一个的每一初始和后续地址相关联。单元选择装置(98)使用与每一向量的初始和后续地址中相应的一个相关联的存储器单元选择(C)来访问(92中的)存储器单元。
Description
发明领域
本发明涉及对存储器寻址,尤其涉及对区段化分页且位寻址的存储器、智能存储器区段以及存储器交错中交错数据的并行访问。
发明背景
为并行访问而交错的存储器被排列成可独立访问的区段。用于对某些地址处的数据的并行访问的地址分配技术要求分页存储器中区段的数目等于H的某次幂的某一倍数M,即M·HB,其中M>0,B>1且H是逻辑状态的个数(在二进制中H=2)。对于M个翼(wing)中的每一个,通常对某些页交错、且因此由每一页相等地使用的区段的个数等于2B。通常,交错的存储器包含足够的区段用于一个或多个完整的交错。
如果每一存储器区段包含2C个数据单元,如为使物理存储器具有连续的数据地址所需的,则每一个交错包含2B+C个数据单元,其中C>>B。因此,对每一翼中的每一数据单元进行寻址的数据地址的个数是2B+C。
每一数据地址根据所选择的存储器部分的不同类型和/或用途包含选择值的不同位范围。每一翼使用数列0,1,...,M-1中的翼选择值来选择。所选择的翼的每一区段使用数列0,1,...,2B-1中的区段选择值来选择。所选择区段的每一单元使用数列0,1,...,2C-1中的单元选择值来选择。
诸如目前在大多数交错存储器系统中使用的经典交错方案以每一区段一个地址的速率在2B个区段之中分配所有2B+C个地址,且以2C次重复来重复简单的模式。由此,经典交错方案对每一次交错重复采用了2的幂个数据区段。然而,如果重复数据区段的个数的所有非单式(non-unitary)质因子是2,如在对每一翼采用2B个区段的经典交错方案的情况下,则交错方案的效率要比其中区段的重复次数具有非单式奇质因子(即,大于2的奇数个重复数据区段)的交错多个数据区段的方案要低得多。
采用大于2的奇数个数据区段的一种交错方案是Ranade交错,它对模式的2C次重复中的每一次以每一区段一个地址的速率在2B-1个区段之中分配总共(2B-1)2C个地址的每一组2B-1个地址。Ranade方案对每一次交错重复采用奇数个数据区段(2B-1)。采用七个重复数据区段的Ranade交错方案的效率为87.8%,这意味着平均87.8%的区段保持大范围的固定跨距值的数据。作为比较,采用八个重复数据区段的经典交错方案的效率为67.2%。
Ranade方案的一个问题是它只能应用于要么对单个区段翼具有单次交错、要么具有不连续的物理地址空间的未分页存储器。由此,对连续范围的数据地址的一次完整的Ranade交错需要使用整个存储器的所有区段。此外,Ranade方案限于具有2B-1个区段的存储器,并且不能在每一翼具有2B个区段的存储器,如分页和位寻址存储器中使用。
已作出了其它尝试来提高数据分配的效率同时保留分页。一种这样的方法是由B.R.Rau在1991年9月计算机机器协会(Association for Computer Machinery)的会议录的“Pseudo-Randomly Interleaved Memory”(伪随机交错的存储器)中提出的伪随机交错方案。Rau交错采用了由异或门(XOR)组成的树来以伪随机方式分配地址。然而,Rau对XOR的使用由于存储器选择和虚拟-物理地址关联的串行计算而引入等待时间。诸如Rau等的伪随机交错对于在八个区段之中分配固定跨距值的数据的效率约为66%。
Rau还描述了用于除2的幂之外的个数的存储器区段(尤其是非单式奇质数个区段)的“质数次”交错方案。但是在Rau描述的质数次交错方案中对奇数个存储器区段的使用对于分页存储器是不合适的,因为分页和位寻址存储器对每一翼需要2的幂个存储器区段。
当处理存储器数据的多个向量的并行高速率流时,使用单个串行(例如,每次一个向量的一个地址)数据地址流的现有存储器方案需要每一向量的所有元素数据都具有连续的存储器地址,且所有向量的所有流(例如,每一向量一个流)在相同的方向上(例如,寻址越小,则每一向量的数据地址越大)且以相同的基本数据速率(例如,每一单位时间的数据位数)流动。为使单个这样的地址流服务多个这样的数据流以使其数据的这样的流传送不会中断,单个数据流的单个地址值对具有足够的连续元素数据的单个数据块寻址,以对其不需要的多个连续地址周期满足全速率的流传送。与按大小排列的数据块(例如,每一块的总数据位数)一样,对于其它向量它们仅使用一个地址流来寻址。由此,对于每一流的每一数据块的所有数据,每一向量不必是连续的。
在存储器分区段且交错的情况下,每一区段(或每一这样的专用区段组)能够在由来自地址流的所有序列的单个地址值访问时访问一流传送的按大小排列的数据块。同样,单个区段不能比串行地寻址多个其它这样的区段的次数更频繁地访问。最后,交错了足够的区段以允许每一区段被顺序地访问来访问每一流动的流的数据。由此,且对于每一区段,每一流在相同的流再次访问之前访问一次,所有的访问都按照情况确定、但对至少每一情况的持续时间的大部分都唯一地保持的顺序来进行。由此且最终,必须保持的每一情况的一个主要顺序不允许对同一情况有两个寻址方向。
为允许每一流在最坏情况对同一区段的访问之间的时间分隔,每一数据流需要很大的数据缓冲区,因为当在时间上进行测量时,必须允许一个数据流在所有其它数据流之前流传送,并且所有的各种前导读数据流和尾随写数据流必须被缓冲,直到最后一个数据流开始向存储器流传送数据。缓冲区在计算机资源和关于大小的延迟方面的成本都较高。同样,所有数据流对存储器的寻址也必须在相同的方向上且以相同的全数据速率,因此以全速率的这些流传送不会经历导致数据流动中断的连续不断的区段使用冲突。因此,需要这样一种向量流传送技术,其中向量数据从存储器中预读取且后写入存储器中,使得向量数据在使用最小缓冲区时看到有最小的延迟,同时以处理器单元所需的速率、方向和固定间距来移动数据。
发明概述
本发明的第一实施例针对一种用于使用缩略交错形式的复杂交错(与简单交错相对)来对多个交错存储器区段寻址的技术。在本实施例的一种形式中,寻址装置对多个缩略交错进行寻址,其中每一交错对一组不同的多于一个、且少于全部的存储器区段寻址。交错也被设置和安排成对所有存储器区段共同寻址。
在该寻址装置的一种形式中,每一交错对不同的一组Q个存储器区段寻址,其中Q是大于1且小于存储器区段个数的数字。
在该寻址装置的另一种形式中,缩略交错彼此偏移,使得它们同等地共同使用多个存储器区段的全部。
本发明的原理可以应用于具有H个状态的寻址逻辑,其中在二进制中H=2。在该装置的某些形式中,Q没有与H相同的非单式因子。在该装置的某些形式中,Q是大于H的质数。在该装置的某些较佳形式中,区段选择设备响应于一输入交错存储器区段序列。在某些形式中,区段选择设备对每一交错定义一个行和列的表,该表包括包含Q个可寻址位置的L个对齐的行,其中L>1。每一列中的存储器区段选择在对该列的多个行之一中的位置寻址时被访问。在某些形式中,剩余的行包含R个可寻址位置,其中0<R<Q。该剩余的行与L行对齐,使得剩余的行中的第一个位置在与L行中的第一个位置相同的列中。
在该装置的某些形式中,每一个后续的缩略交错与前一交错偏移,使得后续交错的行的第一个位置偏移S,其中S=R或者S=R-Q。
在某些形式中,存储器包含M个翼,每一个翼包含HB或2B个存储器区段,且翼选择设备响应于选择存储器的一个翼的地址。可任选地,一掩码对翼选择设备的地址的一部分掩码,以从多个翼中选择单个多翼数据元。
本发明的第二实施例是一种用于对多个存储器区段寻址的结构。该数据结构在诸如根据第一实施例的寻址装置中用于对多个交错的存储器区段寻址,以形成有偏移关系的缩略交错,使得交错共同使用这多个存储器区段的全部。
本发明的第三实施例是一种用于使用对多个存储器区段的全部寻址的多个偏移缩略交错来对多个交错存储器区段选择性地寻址的过程。
本发明的第四实施例针对一种用于交错向量的智能存储器区段。该智能存储器区段可与第一、第二和第三实施例的新颖交错技术一起使用,或者可独立于新颖交错技术,诸如与经典交错一起使用。在这一第四实施例中,设置装置接收多个向量的每一个的初始地址和间距数据。寻址逻辑将存储器单元选择与每一向量的每一初始和后续地址相关联。单元选择装置使用与每一向量的初始和后续地址中相应的一个相关联的存储器单元选择来访问存储器单元。
在该智能存储器区段的一种形式中,该寻址逻辑包括储存与初始地址相关联的单元选择的第一锁存器。计算器基于第一锁存器中的单元选择和间距来为相应向量的相应后续地址计算有效后续单元选择。该单元选择装置包括储存每一向量的有效单元选择并将所储存的有效单元选择发送到存储器的第二锁存器。启用操作该第二锁存器以将其储存的单元选择发送到存储器。
在该智能存储器区段的另一种形式中,端口设置装置接收多个向量中的每一个的初始地址和间距数据,处理逻辑将区段选择与多个向量中的每一个的每一初始和后续地址相关联,并且接口装置使用与每一向量的初始和后续地址中相应的一个相关联的区段选择来访问存储器区段。
附图简述
图1是示出根据本发明第一实施例的用于寻址分页存储器的装置的功能框图。
图2是示出用于为图1所示的装置生成区段选择值的特定存储器装置和数据结构的功能图。
图3和4是可用于解释图2的图的推广形式的图。
图5是可用于解释图1和2所示的装置的更一般操作的图。
图6是示出根据本发明一种变体的用于为寻址装置生成区段选择值的逻辑树的功能图。
图7是示出根据本发明的另一种变体的用于为寻址装置生成区段选择值的另一种存储器装置的功能图。
图8是可用于解释图7所示装置的操作的图。
图9是如图1一样示出根据本发明另一种变体的用于寻址包含各种大小的数据块的分页存储器的装置的图。
图10是如图9一样示出根据本发明又一种变体的用于寻址包含比页大的小页(pagelet)的存储器的装置的图。
图11是如图6和7一样示出为多个数据流处理提供受管伪随机区段选择顺序的本发明的另一种变体的图。
图12是如图1和2一样示出根据本发明另一种变体的用于向量处理的装置的图。
图13是根据本发明第二实施例的智能存储器区段的图。
图14-16是可与根据图13的智能存储器区段一起使用的智能端口和读写逻辑的图。
较佳实施例的详细描述
如在本文中更全面地理解的,本发明适用于以处于任何个数的状态H的逻辑来操作的存储器,其中H≥2。在二进制中H=2,在三进制中H=3,依此类推。如在本文中所使用的,“数字排序”指的是H的幂(例如,HB),而“位排序”是其中H=2(二进制)的数字顺序,例如2B。同样如在本文中所使用的,“缩略交错”是这样一种交错,它根据对已寻址区段的单个预定排列,对多于一个且少于多个存储器区段的全部的数据进行寻址。缩略交错的“旋转”是多个缩略交错的预定模式的单次循环。“小页”或者是位对齐的缩略交错的位对齐旋转,或者是两个接连的未对齐缩略交错的互补部分的位对齐旋转,所有这些都根据预定的模式。“完整交错”是足够地设置以在期望模式中对多个存储器区段内的所有数据寻址的一个或多个小页。
图1是根据本发明一个实施例的用于寻址交错数据的存储器寻址装置的框图。图1的实施例将结合具有两种逻辑状态(即二进制,因此H=2)的存储器来描述,其中缩略交错的旋转包括对单个翼的所有存储器区段寻址相等次数的缩略交错的完整周期,而完整交错包含利用单个翼的所有区段的所有数据地址所需的所有旋转,且对每一完整交错有一个或多个旋转。如以下更详细描述的,具有多个翼(例如,M个翼,其中Ω>0且(M/2Ω)>0并且(M/2Ω)是整数)的存储器采用了M/2Ω次完整交错。
地址10保持具有至少四个字段的虚拟地址:含有值[A]的A位固定大小字段、含有值[B]的B位固定大小字段、含有值[n]的n位可变大小字段、以及含有值[i]的i位可变大小字段。n位和i位可变大小字段一起形成含有值[i+n]的(i+n)位固定大小字段。为简明起见,本发明的所有实施例都假定旋转且因而小页在大小上是相同的,且每一个都需要一个翼的所有存储器区段的每一个的2A个单元,即每一区段的全部2C个单元中的2A个,C≥A。字段A和B的大小对应于存储器的每一翼的相应2B个区段的每一个中的相应2A个单元的数目。由于每一存储器区段包含2C个单元,因此存储器的M个翼中的小页的数目是M·2C-A。值[n]是指示对一页中2n个小页寻址的小页的小页选择值。值[i]是指示对可以在虚拟存储器中的2i个相同大小的页寻址的页的页虚拟指示。字段n和i在大小上是相对可变的,且是总体固定的;当每一页的小页数增加时(页更大),每一虚拟存储器的相同大小的页的可能数目减少。字段n和字段i的大小、以及字段i和n之间的边界由关联30使用当前由地址10中的当前虚拟地址访问的某一大小页的2n小页大小的映射信息(未示出)来适当地调整。
区段选择
来自地址10的字段B和A的串接的(A+B)位的值被应用于只读存储器(ROM)14以选择一B位宽的区段选择值。该区段选择值由解码器16解码,以向存储器区段的翼0,...,M-1的每一个中的2B个存储器区段之一提供一启用位。ROM 14将结合图2和5来更详细地描述。
关联选择
关联30从地址10接收虚拟页ID值[i]和小页选择值[n],而没有字段i和n之间以虚线示出的边界的指示。关联30包括保存有序表的专用寄存器和/或存储器(未示出),该有序表含有定义虚拟页的存储器到物理页的映射的条目。为了唯一地标识和定位映射,表中的每一条目具有一页大小指示符、大小正确的i位虚拟页ID值、以及相应大小的(W+C-A-n)位物理页选择值。对从用于虚拟地址的地址10寻址的存储器的每一次成功访问如关联30在地址10的值[i]和某一表条目的i位值之间所找到的那样是匹配的,这两个值都是按照所找到条目的页大小来定大小的。根据所找到条目的页大小来定大小的所找到条目的(W+C-(A+n))位值且因而n的值从关联30作为来自所有存储器的物理页选择输出。地址10中的n位字段按照所找到条目的页大小来定大小,且其值作为小页选择未经改变地通过关联30。
页ID字段i的大小是对于来自关联存储器30的任何相同大小页,位数大于物理页选择W+C-(A+n)的固定数。Nmax/Nmin是用于选择存储器的最大/最小页大小的2N max/2N min个固定大小的小页之一的小页选择值[n]的最大/最小位数。以其中当n是Nmax/Nmin时i为Imin/Imax的互补方式,Imin/Imax是用于选择存储器的最大/最小页大小的2I min/2I max之一的虚拟页选择标识值[i]。
翼选择
物理页选择W+C-(A+n)的关联被分段成翼选择W和单元选择C-(A+n)。W位的翼选择值[W]是值0,1,2,3,...,M-1之一。W的值根据存储器翼的个数M固定,其中(2W-1+1)≤M≤2W。翼选择值[W]由解码器36解码以选择存储器区段12的M个翼之一。
单元选择
地址10的字段A的A个位的值[A]是使得2A是一个翼中2B个区段的每一个中一个小页的可选择单元的个数的值。单元是双射(bijectively)地选择的,且很容易如此选择,因为数据可使用如图1所示的本发明的寻址方案来读入单元中并从单元中读出,字段A的各个位简单地在串接器34处串接,并且在根据小页的每一个位对齐的第1/2B个部分选择2A个单元之一时被解码。串接器32将来自关联30的C-(A+n)位与经由关联30来自地址10输入的n位串接以得到C-A个位,而这些位进而与来自地址10的A个位串接以得到输入到解码器18的C位单元选择值[C]。位数C是使得2C是以数据单元为单位的区段大小。由此,C-A位的值[C-A]是使得2(C-A)是对于每一完整交错每一翼中的每一组2B个区段中可选择小页的数目的值。通过关联30到串接器32的地址10的字段n的n位值[n]是使得2n是一个翼中2B个区段的每一个中这一大小的一页的可选择小页的数目的值。由此,(C-(A+n))个位的值[C-(A+n)]是使得2(C-(A+n))是可以在2B个区段的每一个翼中的大小为2n小页的可选择页的最大值。
小页选择值[n]具有在最大值Nmax和最小值Nmin之间的值,其中Nmax≥n≥Nmin≥0。较小的最小值Nmin提供了逐渐更好的结果,其中在Nmin=0处得到最佳结果,使得一个最小的页是一个周期的区段使用,即单个小页。Nmax是对于小页选择值[n]的最大值n,因为值[Nmax]用于选择存储器的最大页大小的2N max个小页之一。
选择概述
使用来自解码器36的翼选择启用、来自解码器16的区段选择启用和来自解码器18的单元选择启用,选择存储器的M个翼的选中一个内的2B个存储器区段的选中一个内的2C个单元之一。由此,馈入解码器36、18和16的W、C和B位信号形成了用于寻址物理存储器的M×2B+C个可寻址数据单元之一的[W+B+C]的(W+B+C)位物理地址。
ROM 14的数据结构
图2图解地示出了图1的ROM 14的数据结构。如将解释的,旋转的连续缩略交错偏移达S个区段数或区段选择。图2示出了其中S仅为正的环境。如将解释的,尤其是结合图5所解释的,偏移值S可以是正或负。
如图2所示,ROM 14包含用于旋转缩略交错的表,它定义了表示连续的缩略交错0,1,...,2B-1的行和列的子表。每一子表中由一条线隔开的底行标识了2B个相对区段选择值100,它们被标识为值0,1,2,...,2B-2,2B-1,尽管某些是在不应用模数2B的情况下用其它项来表达的。相对区段选择值对所有的子表都同样地排列,使得每一子表包含2B个列,每一列对应于2B个相对区段选择值中相应的一个。每一缩略交错具有Q个连续位置的L次全循环以及包含R个连续位置的最后或剩余循环,其中0<R<Q且2<Q<2B,每一循环的第一个位置在同一列中。对应于每一列的区段选择值和Q是奇数,循环的位置数是指定L个循环的任一个中每一个翼的毗邻(具有如缩略交错1和2B-1所示的绕回)且可选择存储器区段的数目的奇数。在较佳实施例中,Q是质数3、5、7、11、13、17、...,即大于H且小于翼的区段数的质数。
为解释起见,Q和R个位置的每一循环的第一个位置被指定为F或F,其中每一缩略交错的第一个循环的第一个位置是F,而Q个位置的每一个循环的最后一个位置104被指定为Y,R个位置的循环的最后一个位置106被指定为Z,且每一Q或R位置的第一和最后一个位置之间的每一个位置被显式或隐式(X之间的点)指定为X。该表的每一字母表示来自地址10(图1)的数据地址的较低个A+B位的不同值[B+A]。B位相对区段选择值100跨所有子表的所有2B个列来排列,对每一子表在隔开的行(最低行)中跨越一次,使得由每一子表中的每一循环L和R中的字母F/F、X、Y、Z表示的、来自地址10的每一个A+B位地址(值)对应于一相应的区段选择值100。由于每一循环中的地址位置的数目要么是Q要么是R,它们都小于每一子表中的总列数(2B),因此每一子表中的地址对应于大于H且小于所有区段选择的某一集合。每一子表表示一次缩略交错,因为L·Q+R=2A。单个区段选择值100对应于同一列中的所有地址值,使得将由表中的字母表示的地址值与来自地址10的串接地址值[B+A]匹配从同一列中选择一对应的B位相对区段选择值100,以输出到解码器16。
如特别地通过缩略交错0和1的比较所示的,由任一子表中的Q的第一个循环的F所示的第一个定位字母在前一缩略交错或更高子表(具有从顶部到底部的绕回)的剩余循环中字母Z的位置之后的下一连续寻址位置处,这由交错0中的Z后跟交错1中的F示出。由此,缩略交错的每一循环Q和R的第一个位置F或F从前一缩略交错的每一循环的第一个位置偏移S或R(图2,S=Rodd),如通过比较对应于交错0和1的子表的隔开底行所示的。如果R和/或Q个地址的连续字母位置达到超过区段选择值2B-1的最右边列的界限之外,则每一序列如从2B-1到0值位置的同一行中那样在同一行上绕回,如在交错1和2B-1的子表中所示的。在任何情况下,可以理解,在具有包含Q个寻址位置的循环的每一行中有2B-Q个未使用位置,而在具有剩余循环的每一行中有2B-R个未使用位置。所有未使用位置被示为图2中标记为未使用的点范围。
在图2中,R是奇数,因此S是正奇数,且S=R。如将更全面理解的,尤其是结合图5所理解的,R可以是奇数或偶数,且当R为偶数时,S将为负。由此,不论R与2的互质性(奇数性)如何,S都将是奇数,且可以为正或负。如果存储器逻辑以H个状态操作则结果也是相同的,其中H和Q使得对翼中的HB个区段,1<H<Q<HB且mod(H,mod(Q,H))≠0,则R=mod(HA,Q),且对于缩略交错中的HA个地址,S=if(mod(H,mod(R,H)),R,R-Q),如在本文中所解释的。
可以理解,每一缩略交错上的Q和R序列中的可寻址位置的总数是L·Q+R,且Q和R字母序列表示了如此对齐的任何旋转的对应缩略交错的2A个地址。由此,2A=L·Q+R。此外,Q是指定循环中奇数个毗邻且可选择存储器区段的奇数。由此,每一字母F、F、X、Y、Z都表示输入到其中储存了对应的B位区段选择值的ROM14的(A+B)位地址。图2中字母的二维布局的形状按照地址组和缩略交错组(使用Q个区段)展示了区段使用频率和同一性。
每一交错的底行定义了包含R个地址的剩余循环,其中2<R<Q,因为对于二进制逻辑,缩略交错的地址数是位排序的2A,且Q是奇数(与二进制逻辑的状态数互质)。取决于A和Q的值,R要么是奇数要么是偶数,R=mod(2A,Q)。如将在以下更全面理解地,更优选的是所选中的值导致R更接近0或Q。对于同等地接近0或Q的两个R值,偶数R值对于奇数是优选的,除了R=1(奇数)和R=Q-1(偶数)是同样优选的之外。R的值和L的值是选择Q和A的值的结果,其中2A是缩略交错中数据地址的数目。由此,A和Q确定了缩略交错的形状,其中R=mod(2A,Q)且L=trunc(2A/Q)。缩略交错形状是(L个循环)乘以(每一Q循环的Q个地址)+(一个R循环)乘以(每一R循环的R个地址)=每一缩略交错的2A个地址,即L·Q+R=2A。
如图2所示,旋转以顶部循环(参考标号108处)中左侧的最上面字母F(如缩略交错0所做的那样)开始,并顺序地向右通过循环的各个字母,且因此向下通过第一个交错的各个循环,包括剩余循环,并以参考标号106处的Z结束。在缩略交错0的Z之后按序的下一顺序字母是下一缩略交错1的顶部循环的参考标号102处的F。该序列继续通过每一交错,并在需要时绕回,且每一连续交错的字母F的位置从之前的那些位置偏移S个位置(列)。由此,在如图2中对图1的ROM14所示的所有实施例中,S是奇数。
对于图2所示的情况,偏移S仅是正数。不论为正(如图2中那样)还是负,S总是奇数,因此S对2,即二进制的H值是质数,且因此S不与翼的区段数2B(没有奇数因子的位排序数)共享非单式因子。如本文中可以更全面理解的,在存储器的逻辑状态数(H)是除二进制以外的数目(H>2)的情况下,S在为正或负时可以是奇数或偶数(与2互质),但是HB和S不共享共同的非单式因子,即S和H彼此互质。如将结合图5更全面理解的,S=if(mod(R,2)=1,R,R-Q)且因此可以为负,即R-Q。如图2中那样,在S为正的情况下以及S为负的情况下(图2未示出),最后一个缩略交错2B-1(第2B个)的最后一个(剩余)循环的最后一个字母Z(参考标号110)是其旋转的最后一个字母或地址,且如图2的示例中所示,在S为正的情况下,缩略交错的旋转的最后一个地址总是在最后一列或相对区段选择位置中,但是如未示出的那样,在S为负的情况下,最后一个地址总是在第(Q+1)列或相对区段选择值Q的列中。对于S为正,下一旋转的F的位置(旋转的第一个缩略交错的第一个地址,前一旋转的最后一个地址之后的下一地址也是如此)从前一个旋转的最后一个缩略交错的F的位置向右偏移+S(R),并且因此下一旋转的第一个地址在第一个位置上,如同前一旋转一样。相反,对于S为负,旋转的F的位置也总是在各个旋转之间相同。旋转的最后一个缩略交错的Z在第(Q+1)个列(相对区段选择Q的列)上,且最后一个缩略交错的F在第(Q+1-R)个位置向左的R处,从而使得F如对等于R-Q的负S应当表现的那样在向左|R-Q|的第一个位置上。因此,所有缩略交错同等地与下一交错偏移,且所有旋转在考虑翼之间的相对区段使用顺序时以及考虑每一翼中的实际区段使用顺序时是相同的。
当第一个缩略交错的第一个字母F分配一实际地址值时,其中0≤F≤2A,则所有2A+B-1个其它字母取实际值。因此,在每一缩略交错的隔开底行中表示的、紧靠标字母的地址值下方的区段选择值的行可统一地首尾循环移位任一量。这一特征允许设计灵活性,因为第一个字母F可以被分配给对于实际区段选择值的2B个选择的任一个,且其本身可以是输入地址的2A个选择的任一个。ROM 14的内容的这一灵活性允许将ROM 14实现为出于安全目的对不同用途或用户具有不同的内容选择的SRAM。
任一缩略交错的每一个这样的循环的最后一个字母Y在其中相对区段选择值被计算(忽略绕回)为X·S+Q-1的位置上,其中X是缩略交错,0≤X≤2B-1。如将在以下解释的,S是引起循环、因而使得来自ROM 14的区段选择从一个缩略交错向下一缩略交错偏移的奇数有符号分流值。S的值被求值为S=if(mod(R,2)=1,R,R-Q),其中R是被求值为R=mod(2A,Q)的剩余值。因此,因为R在图2中被示为仅是奇数,如在缩略交错1中那样,其L+1个循环在其中相对区段选择值同时是由缩略交错0与缩略交错1所示的R和S的位置处开始。
ROM 14的数据内容产生了以缩略交错的旋转形式对齐的每一翼的区段使用的最小重复模式的一个周期。S的值计算偏移,该偏移逐步定位连续缩略交错0,1,...,2B-1的共同的、相同的相对模式。为便于理解,某些实施例将第一个交错中的F设为0,因此缩略交错的对齐旋转与ROM 14的边界对齐,且ROM 14的第一个地址对缩略交错的第一个旋转的区段选择值进行寻址,依此类推,直到两者的最后一个地址,且因此,小页是缩略交错的单个循环的区段选择。为增加简明性,这些实施例也使ROM 14的输出区段选择对于地址F为0,如图2所示。
图3示出了一个旋转内的三个连续缩略交错的模式,其中与图2中一样,由于R是奇数,S=R(正奇数值)。图4示出了一个旋转内的三个连续缩略交错的模式,其中由于R是偶数,S=R-Q(负奇数值)。在任一情况下,调整A和/或Q,使得R=mod(2A,Q)=1(最接近0的奇数)或Q-1(最接近0的偶数)使用根据某一数目的连续缩略交错的最少区段形成最紧密且一般最佳的排列。如将在以下更全面描述的,较接近0的奇数R或较接近0的偶数Q增加了其中没有区段出现在一个以上循环位置中的Q个区段的循环的未中断交错效果的范围的度量G(参数G将在下文中描述)。
图5是如图2中的对单个旋转内的缩略交错的所有形状和排列定义ROM 14的内容的子表的表。ROM 14被物理地设计成具有至少2A+B位宽的可寻址数据单元,以保存对应的区段选择元素。图5的表达式通过固定A、B、Q、F和K的值,使得2≤B<A,3≤Qodd<2B,mod(Q,2)=1,0≤F<2A且0≤K<2B来求值。从所选择的A和Q的值中,所得到的影响L、R和S的形状和排列的值被计算为L=trunc(2A/Q),R=mod(2A,Q)且S=if(l=mod(R,2),R,R-Q)。
图5的表应用于这一旋转内的任何四个或多个的位排序(例如,H2或更多的数字排序(H>1))数目的缩略交错。它应用于一个旋转内缩略交错的所有排列(由S的值确定)和形状(基于从有效的A和Q值所得到的L、Q和R值)。图5所示的交错模式适用于对单元选择位对齐小页的旋转形式(缩略交错的形状和排列)的所有对齐(有效F值),且由此适用于ROM 14内的对齐。该模式适用于ROM14内的区段选择(有效K)的所有对齐,因此适用于旋转形式并适用于小页对其具有单元选择对齐的翼的区段。例如,考虑图5中的地址位置和对应的区段选择。如将结合图9和10更全面描述的,选择2Ω个公共选中的区段(从某些2Ω个公共选中的翼的每一个中选择一个区段)。在Ω>0的情况下,从公共单元选择,例如0·2A,1·2A,2·2A,3·2A,...,(2C-A-1)·2A的每一个开始,选择每一小页的前2Ω个元素数据(所有都属于第一个最大的交错数据)的前2Ω个公共选中的单元。
图5的子表示出了每一缩略交错0,1,...,2B-2,2B-1的模式。每一缩略交错具有L+1个循环或行乘以Q个区段选择位置或列的维数,并且包含每一子表中除总是为空、因而不包含任何表达式、且总是求值为如空白那样无值的最后一个循环的最后一个单元之外的所有Q(L+1)个单元中的表达式。每一缩略交错的最后一个循环中除第一个单元之外的所有非空单元具有条件求值为值或空白的表达式。子表的最后一个循环的第一个单元以及其它循环的所有单元具有不是条件的且总是求值为值的表达式。
从左到右,在一个循环中逐个单元地,并且从上到下逐个循环地,Q·(L+1)个单元的前2A个具有标识从F开始连续递增+1模2A+B的(A+B)位值的表达式。由此,当第一个子表的自足(self-sufficient)表达式(任一个可在没有其它表达式的情况下求值)都被完全地定义和求值时,求值显现为从最左上角单元中的F的表达式到等于mod(F+2A-1,2A+B)的求值的表达式递增了1模2(A+B),这与第(L+1)个(最后一个)循环的第R个单元中的mod(F+L·Q+R-1,2A+B)的求值相同。这最后一个非空白求值也被标识为引用图2中标记为R-1的相对区段选择的Z。最后一个循环中的最后Q·(L+1)-2A个单元要么求值为空白,要么总是为空白(最后一个单元)。由此,通过基本定义且在求值之后,最后一个循环中的非空白(值)求值(所有左侧定位的单元)的个数是R,且最后一个循环的剩余单元中非值(空白)单元(所有右侧定位的)的个数是Q-R。
每一子表具有两个分别针对Q个列的标题。每一个第一标题标识了Q位置号,并且标记为第一、第二、...、第Q,作为输入的每一行中的(A+B)位地址表达式和输出的每一缩略交错的第二标题的区段选择表达式的相对位置。标记为用于输入值的循环的Q个输出值的第二标题保存同样用于求值的Q个区段选择表达式。例如,用于缩略交错0的区段选择值被标识为K,mod(K+1,2B),...,mod(K+(Q-2),2B),mod(K+(Q-1),2B);其它子表的每一个具有其自己的用于后续的模数2B求值的独特范围的2B个独特区段选择表达式的标题,每一范围具有一不同的第一求值,为0,1,2,...,2B-1之一。
在图1的实施例中,图5的表的内容被储存在ROM 14中,该ROM 14在使用时作为稳定内容的物理存储设备。完全求值的表具有用于A、B、Q、F、K的有效选择固定值,且因此具有用于L、R和S的有效导出固定值,其中A>B,2<Qodd<2B,0≤F<2A,0≤K<2B,L=trunc[2A/Q],R=mod[2A,Q],且S=if[mod(R,2)=1,R,R-Q]。由此,对于第一个子表(缩略交错选择0),ROM 14在(A+B)位地址处储存具有值K的B位数据,该地址如由顶部(第一)标题(Q个输出值...)的第一个位置以及由底部(第二)标题(Q个位置号...)定位的循环1(第一)的第一个位置所示等于F。类似地,ROM 14在如由顶部标题的第二个位置以及循环1的第二最左单元所示的地址mod(F+1,2A+B)值处具有mod(K+1,2B)数据值。由此,对于给定的输入地址值的输出数据是已知的。F指向ROM 14的地址及其对应的输出区段选择值K。按照对第一缩略交错的定义,F是一个旋转的2B个缩略交错的任一个的最小且因而是最早的第一个地址。
第一缩略交错以及因此旋转的模式以F开始。仅仅关注其自身,无论是缩略还是旋转的任何交错的对齐都根据F的值来确定。对齐在F=0时是位对齐,而在F>0时未对齐达F个地址。由此,对于F的任何有效值(0≤F<2A),旋转(以及因此的第一个缩略交错)以小页的第(F+1)个地址处的区段使用的独特模式开始。一个旋转的前2(A+B)-F个地址(以及因此所有的前2B-1个缩略交错的所有地址和最后一个缩略交错的前2A-F个地址)在小页的大小相同的最后部分中。作为补充,一个旋转的后F个地址(以及因此最后的缩略交错或第2B个缩略交错的最后F个地址)在小页的大小相同的最先部分中。由此,小页是缩略交错的位对齐部分的位对齐旋转。
图5的缩略交错子表中所示的(A+B)位输入地址在所表达的(甚至是那些条件空白的)值中跨一循环从左到右增加了1模2A+B,并且从缩略交错的上到下从一个循环到下一循环增加了Q。当定义了参数并对表达式求值时,缩略交错的最后一个循环L+1总是以R结束,作为至少一个但不多于Q-1个有值(非空白)单元。R个有值单元在Q-R个空白单元的左边。最后,所表达的地址(甚至是那些条件空白的地址)从一个子表(缩略交错)到下一子表、并从最后一个子表回到第一个子表增加了2A模2A+B。
图5中每一子表的每一缩略交错的顶部标题的区段选择表达式在必要时在从左到右(在(2B-1)处绕回到0)的每一位置增加1。对于后续的子表的顶部标题并从最后一个子表的顶部标题到第一个子表的顶部标题,这些区段选择表达式也增加或减少有符号的偏移S,并且对于正偏移从(2B-1)绕回到0,或者对负偏移从0直接绕回到(2B-1)。
由此在图5中,对第一个子表(缩略交错选择0)的地址的第一个循环(循环号1),相应单元中的地址表达式和位置1到Q中的区段选择表达式为
F和K,
mod(F+1,2A+B)和mod(K+1,2B),...,
mod(F+(Q-2),2A+B)和mod(K+(Q-2),2B),
mod(F+(Q-1),2A+B)和mod(K+(Q-1),2B);
对第二个循环(循环2,缩略交错0),地址表达式和相应的区段选择表达式为
mod(F+Q,2A+B)和K,
mod(F+1+Q,2A+B)和mod(K+1,2B),...,
mod(F+(Q-2)+Q,2A+B)和mod(K+(Q-2),2B),
mod(F+(Q-1)+Q,2A+B)和mod(K+(Q-1),2B);
依此类推,直到第L个循环,其中地址表达式和相应的区段选择表达式为
mod(F+(L-1)Q,2A+B)和K,
mod(F+1+(L-1)Q,2A+B)和mod(K+1,2B),...,
mod(F+(Q-2)+(L-1)Q,2A+B)和mod(K+(Q-2),2B),
mod(F+(Q-1)+(L-1)Q,2A+B)和mod(K+(Q-1),2B)。
以类似的方式,对第(L+1)个(最后一个)循环,同一列中的地址表达式和相应的区段选择表达式为
mod(F+LQ,2A+B)和K
if[R<2,(空白),mod(F+1+LQ,2A+B)]和mod(K+1,2B),...,
if[R<(Q-1),(空白),mod(F+(Q-2)+LQ,2A+B)]和mod(K+(Q-2),2B),空白)和mod(K+(Q-1),2B)。
填满ROM 14的缩略交错共享相同的形状和相同的相对排列。因此,如果大于其上限2A-1,因此过大的F冗余地指向第一个缩略交错(缩略交错选择0)之后的某一缩略交错的第一个地址,则第一个缩略交错仍然是具有在0≤第一个地址<2A的范围内的第一个地址的缩略交错。由此,ROM 14的内容对于正确界定的值F=x和K=y与对于过大的、但仍然在其中F=mod(x=z·2A,2(A+B))和K=mod(y+z·(S+2B),2B)的旋转内的F值是完全相同的,其中范围0<z<2B内的z使得F过大,但z=0却不会。F和K的值被固定为ROM 14的实现的完全独立地选择的元素参数,并且既不影响存储器的大小也不影响存储器的性能;2A>F≥0且2B>K≥0。
如图1、2和5所示,地址10中虚拟地址值的最低(A+B)位的值选择ROM 14的2A+B个字之一,来输出完全定义且求值的表(图2和5)的子表的同一列中所示的B位宽的区段选择值。例如,如果A=8,B=4且Q=7,则缩略交错的2A=256个数据地址在2B=16个区段的Q=7之中交错,且一个旋转的2A+B=4096个数据地址在一个翼的所有2B=16个区段之中同等地(对每一区段的2C个单元中相同的相应2A个)交错。从这点中,可以示出R=mod(2A,Q)=4,S=if(mod(R,2)=1,R,R-Q)=-3,且L=trunc(2A/Q)=36。同样,如果F=0同时作为旋转和第一个缩略交错(缩略交错选择0)的第一个地址,且如果K=0作为ROM 14中该第一个地址(0,并且因此是小页的第一个地址)处储存的区段选择值,则图5的表达式(缩略交错选择1)的第二个子表可如以下适当表示地对值的第二个子表求值:
Q个区段选择→ | 13 | 14 | 15 | 0 | 1 | 2 | 3 |
Q个位置号#s→ | 第一 | 第二 | 第三 | 第四 | 第五 | 第六 | 第七 |
循环号1 | 256 | 257 | 258 | 259 | 260 | 261 | 262 |
2 | 263 | 264 | 265 | 266 | 267 | 268 | 269 |
3 | 270 | 271 | 272 | 273 | 274 | 275 | 276 |
L或36 | 501 | 502 | 503 | 504 | 505 | 506 | 507 |
L+1或37 | 508 | 509 | 510 | 511 |
8.4.7.0.0旋转的第二个缩略交错
例如,如果地址10中的虚拟地址对ROM中的第512个单元(由最低的(A+B)或8+4或12位=511选择)寻址,则如由以上示例所示地选择B或4位区段选择值(通过找出底部循环的ROM地址511、并笔直向上查看到最顶部标题行中的0)。所选择的区段选择值在B位宽的字(例如在本示例中,位值1000)中应用于解码器16(图1)。
可以理解,以上示例还示出了剩余的循环包含四个值(R=4),并且缩略交错1的第一个位置的区段选择值13是区段选择值0左边的3个位置(S=-3)。出现这一情况是因为K=0是缩略交错0的第一个位置中的区段选择值,并且连续缩略交错之间的区段选择值的偏移是
S=if(mod(R,2)=1,R,R-Q)=if(false,4,4-7)=-3。
区段选择值(VBS)可被表达为:
VBS=mod(mod(mod[A]-F+2A,2A),Q)+[B]·(S+2B)-K+2B,2B)
其中[A]和[B]是保存在地址10的字段A和B,即各自具有A和B位的字段中的值。如果F=0且K=0,则表达式约简为:
VBS=mod(mod[A],Q)+[B]·(S+2B),2B)
还可以理解,该组地址对2C-A次重复的区段使用的复杂模式化周期的每一次重复以每一区段2A个地址的速率在每一翼的2B个区段之中分配,其中2C是每一存储器区段中的数据单元数,2A是每一缩略交错中的地址数。缩略交错是一种在L个循环的每一个期间连续地分配2A个地址中的Q个,然后在剩余的循环期间分配2A个地址中剩余的R的简单模式。由此,2A=L·Q+R,其中0<R<Q。在较佳实施例中,Q是奇数,且更佳地也是质数,使得在所有区段之中均匀地分配更不同的数据模式。缩略交错的简单模式对旋转的复杂模式的每一次重复重复2B次。每一后续缩略交错的区段使用模式基于剩余的R相对于其之前的交错的模式偏移一偏移量S。S=R或S=R-Q,无论哪个都使得S是奇数,并且一个旋转的所有缩略交错都偏移到Q个连续区段选择的2B个不同组中一不同的组。因此,一个缩略交错的最后一个单元和下一缩略交错的第一个单元之间的转换要么是+1,要么是-Q,以便在Q个连续区段选择的不同的连续使用的组之间有序转换。
关于区段使用的交错周期最方便地被描述为两种模式:一种是其中地址有F个地址位不对齐作为缩略交错的旋转的模式,另一种是其中地址位对齐作为缩略交错的位对齐部分的小页或位对齐旋转的模式。每一(对齐和未对齐)模式的长度为2A+B个连续数据地址。不论对齐如何,交错的区段使用模式的一个周期最容易地由与缩略交错的一个旋转的第一个循环的第一个地址对齐的区段使用的周期来描述,如图2和5所描述的。存储器的一个翼的2B个区段的每一个具有总共2C个可寻址单元,它们共同由在2B个区段之中交错的2B+C个物理数据地址使用,区段的完整交错需要缩略交错的相同数量的旋转的2C-A个小页。区段使用的缩略交错周期的长度是Q个连续数据地址,它具有这一(相同的Q个区段/简单周期)区段使用的(L+(R/Q))个周期或循环,每一周期有Q个地址。因此,存在2B个缩略交错,它们包括这些交错的每一个别的旋转,并同等地共享其2A+B个连续数据地址。此外,2B个缩略交错对每一旋转作为下一交错之前的交错的开头是相继的,并且存在其2C-A个相继的小页或每一翼的位对齐的旋转,其中每一翼或完整的交错具有在每一周期使用Q个区段的Q个连续数据地址的(L+(R/Q))·2B+C-A个周期之间有受管的不连续性的复杂模式,同时还具有对每一周期同等地使用2B个区段的2A+B个连续数据地址的2C-A个位对齐周期(小页)的非寻常但统一的模式。
ROM 14的内容可以有带有F和K的不同值对的2A+B个不同的版本,任一版本关于A、B和Q的相同值的性能(在重复区段之中分配所有数据模式的效率)都将在交错存储器中同等良好地操作。
存储器交错的设计通常以由两种设计规范定义的两个参数开始:1)支持分页的预定的最小页大小,以及2)允许在不大于某一最大成本的某一最大周期时间下的区段超过某一最小存储器访问速率的Q的预定的最小奇数值。由此,初始的试验B被定义为B=ceil(log2(预定最小Qodd))。B可以逐渐变大,从而将Q释放得更大,并对可以由于更长的周期时间而变得更廉价的区段施加较小的压力,因此可以认识到在慢得多的区段和略快一点的区段设计之间存在不可预测的总成本/性能折衷。初始的试验小页大小(2A+B个地址)被设为等于可以为优选的(它为优选是因为小页大小不小于最小页,而越来越大的差异逐渐变得越来越不优选)的某一最小页大小。初始的试验A被定义为A=log2(预定最小页大小÷2初始试验B)。同等优选的试验A和试验B值的对同等地求和为初始试验A+初始试验B。在不能避免大于最小页的小页的情况下,逐渐变得不优选的试验A和B对具有逐渐变小的和,并且在小页逐渐小于给定的最小页大小的情况下,较小的B降低了对Q的上限。由此,一旦小于小页的页增加了对用于限制某些物理页对某一虚拟空间的分配的系统软件的需求,则设计可进一步继续,而不必关心总差别、小页大小>页大小,除了未知的成本和软件问题之外。
接着,对一范围内,即预定的最小Qodd≤Qprime<2trial_B的Q的所有高度优选的质数(优于较不优选的非质数)奇数值使用几个试验A值和成对的试验B值来测试,即在Q等于(优选)或大于(逐渐变得较不优选)初始试验A值的情况下测试A、B和Q的组。所有所得的S的值,S=if(mod(R,2)=1,R,R-Q)(其中对所测试的A、B和Q值的组R=mod(2A,Q))被计算并被记录。在S=-1或+1(|S|=1)时对A、B和Q的选择对于具有用于并行访问的宽范围地址而言都是同等最优选的。对逐渐大于1的|S|的S随着负S优于相同绝对值的正S为优选而逐渐变得较不优选。较大的A和/或B和/或较小的Q允许更大的最大数据地址范围,从而区分了并行访问的固定分隔的数据的最大和最小数据地址。较小的A和/或B允许对较小的最小页大小的较小的小页大小。较大的小页大小可能是允许较大的A和/或B且因此允许较大的Q、更优选的S和/或较大的G所必需的。对于更高密度的对其|S|=1的A的可能值,大Q提高了较大数目P个并行访问、和/或采用(2J-1)或(2J-1+1)形式的质数Q个更固定的间距和/或选择的性能,其中ceil(log2Q)≤J≤B。
如果对A和Q的可使用值不存在|S|=1,则接下来的选择逐渐增加|S|的值,从而选择负S优于正数(其中S是大于1的相同的绝对值),直到可选择对于A和Q且因此对于B的最佳可用值。
本发明尤其可用于分页和位寻址存储器,关于其交错这些存储器可按照对单个区段的两次串行访问的启动之间的最小时间来维持P个并行访问的速率,其中P的范围是2≤P≤Q。由此,对P个区段中P个数据地址的数据的P次访问以从1到trunc[G÷(P-1)]个数据地址的顺序数据地址之间的固定间距发生,但是不包括等于非单式质因子Q的倍数的间距,其中
G=if(mod(R,2)=1,2A·trunc((2B-Q-R+1)÷S)+Q+mod(2B-Q-R+1,S),2A·trunc((Q-2B)÷S)+1+R)
所导出的参数G是确保无冲突的可并行访问的固定间隔的数据的最小和最大数据地址之间的最大差。值得注意的是,G=(2A·(2B-Q)+Q),其中R=1且其中R=(Q-1);对这两者|S|=1。由此,S=+1和S=-1都同样是优选的。同样值得注意的是,G在R为偶数时比R为奇数时略大,其中|S|>1且|S|、A、B和Q对两者是相同的。因此,S的较小绝对值优于较大绝对值为优选,并且在|S|>1时负S优于相同绝对值的正值是优选的。
根据本发明的用于对7个区段(Q=7)寻址的交错方案的效率与Ranade方案是相同的,即87.8%,这意味着平均有87.8%的区段保存大范围的固定跨距值。然而,本发明允许对分页存储器寻址,而这是Ranade方案所不能的。通过比较,对于在8个重复的数据区段之中分配固定跨距值的数据,经典交错方案的效率为67.2%,而伪随机方案的效率约为66%。
图1的实施例的一种变体允许通过加宽ROM 14来输出2B位宽而非B位宽的区段选择来消除解码器16。由此,来自这一经修改ROM 14的2B条输出线之一上的单个位被直接输入到区段12的区段启用中,以选择每一翼M的单个区段12。这一变体的优点在于消除了由于解码器16而引起的延迟,但是以增加ROM 14的大小为代价。
在图6所示的本发明的另一实施例中,如果Q=(2J-1),其中J的范围为1<J≤B,则ROM 14可被实现为J位宽的金字塔20、或J位宽的首尾循环进位加法器22的树,其中J=ceil(log2Q)。数据地址10的最低A位被输入到树20中,它们按照来自字段A的trund(A÷J)J位输入排序,且以J从最右边的J开始来取J。少于J位的任何另外的右对齐的剩余输入从字段A的最左边的mod(A,J)位中取得。来自树20的J位输出右对齐地被输入到单个加法器,即B位宽的无进位输出加法器24的一个输入中。
加法器24的第二个输入接收来自乘法器26的B位输出。乘法器26是将数据地址10的数据的最低(A+B)位的最高B位乘以一基于S的乘法因子的B位宽乘法器。当S为正数时,乘法因子是S;当S为负数时,乘法因子是S+2B。加法器24的输出是对解码器16的B位区段选择值,以选择每一翼的2B个存储器区段12(图1)之一。除了作为树20的输入之外,与来自关联30的C-A位串接的A位也如上所述地由解码器18解码,以选择由解码器16(图6)和解码器36(图1)选择的一个或多个存储器区段中的2C个数据单元之一。
对于其中|S|>1且S=-1(即,S不是+1)的情况,树20如左上角加法器22的左上输入所示地偏离一额外的+1。尽管可使用+1的偏离,但是对于其中S=+1(且R=1)的特殊情况,对树20的+1偏离是不必要的且可被任选地消除。同样,可任选地采用+1和HJ-1之间的其它偏离以获得独特的结果。注意,对于树,仅对ROM14可能的地址和区段的2A+B种排列(F和K的值)中的极少数几个是可能的,且F=0是不可能的。其它不同的F的可能值是+1偏离是诸如加法器输入能够输入的不同较大值的结果。
图7示出了本发明的另一实施例,它类似于图6的实施例,但是不同之处在于树20由储存至少2A个数据段的只读存储器(ROM)40(与保存至少2A+B个数据段的ROM 14形成对比)替换。在这一情况下,ROM 40接收有序的A位以导出J位宽的输出来输入到加法器24,其中J是ceil(log2Q)≤J≤B范围内的某一值。如果K=0且F=0,如在J变得更小的情况下优选的,则在图7中,J=ceil(log2Q),且ROM40的数据宽度关于K和F是最优(最小)的。然而,如果K>0或F>0,则J的值变为A、B、Q、F和K的函数。在这些情况下,J最佳地通过对ROM 40的如图8的数据结构所示的输出区段选择值的全范围进行精密检查和模拟来找出,其中J=ceil[log2(ROM 40的最大输出值)]。在某些情况下,K和/或F可在单个设计中改变,诸如出于安全原因,因此图8的数据结构未定义,且J=B,从而形成最大可能的ROM 40数据宽度。ROM 40、乘法器26以及无进位输出加法器24实现了ROM14对所有有效的A、B、Q、F和K的功能。
图8是ROM 40的数据结构的一种表示,并呈现了在F=0的情况下对字段B的每一值从加法器24产生单个缩略交错、并在F>0的情况下对字段B的每一值产生两个相继缩略交错的互补部分(一个数据的最后F地址后跟下一数据的前2A-F个地址)所需的数据结构。图8将该数据结构呈现为具有单个子表的表达式表中的两个缩略交错的数据结构,从而提供了其中输入值小于F的一组Q个输出值、并提供了其中输入值大于或等于F的一组不同的Q个输出值。然而,在这一情况下,相对区段选择表达式在被定义并求值时变为ROM 40的输出值(与不与ROM 14有关的那些值形成对比)。该输出ROM 40的表达式在图8的Q个位置的三个对齐标题的两个中示出,其中一个标题在另一个标题之上,且两个标题(一个用于输入值<F,而另一个用于输入值≥F)都在第三个标题(示出缩略交错的区段使用周期内的位置)之上。该表的主体具有用于表示虚拟地址10中的仅字段A的所有2A个可能值的A位输入值。一个标题具有用于其中输入值小于F的情况的Q个输出的相对区段选择值,而另一个标题具有用于其中输入的A位值大于或等于F的情况的Q个值。如按照交错的元素和导出参数来表达的,所有表的输入值从左到右跨一整行Q个位置逐个单元地增加1模2A,并且从一行的最右边单元到下一行的最左边单元增加1模2A,由此从顶行到底行逐行增加Q模2A。
虚拟地址10的最低A位的A位值选择ROM 40的一个单元以输出J位宽的相对区段选择值,作为来自表的这一些值的两个标题之一的一个位置(取决于输入值是小于F还是等于或大于F)。所输出的J位宽的字然后变为对B位宽加法器24(图7)的右对齐输入,以生成实际(非相对)区段选择值来输入到解码器16。
例如,如果交错虚拟地址的最低A位少于F、且由图8的表的任一行的某一第二个位置单元中的表达式来表示,则所输出的ROM 40的J位值是mod(K+(2B-S)+1,2B),如在该表的顶部标题的同一位置中所呈现的。否则,如果所输入的值等于或大于F但仍由某一其它行的某一第二个位置单元中的表达式来表示,则所输出的J位值是mod(K+1,2B),如位于中间(下一较低)标题的第二个位置中。
图8中的两个顶部标题都具有被求值为从左到右、在必要时从2B-1绕回到0增加的值的相对区段选择表达式。顶部标题的值(对于表<F中的A位值)与中间标题的值偏移有符号的偏移S的负值,并且对于减去的负偏移从2B-1绕回到0,或者对于减去的正偏移直接从0绕回到2B-1,且在任一情况下仅在需要时才绕回。顶部标题使得ROM 40的输出补偿了虚拟地址10的字段B的值[B],从而根据定义对位对齐块(结束的缩略交错的最后F个地址的2A个数据地址后跟开始的缩略交错的前2A-F个数据地址的位对齐块)寻址,其中ROM 40的内容是在对存储器实现缩略检错的未位对齐(F≠0)旋转时的适当部分(最后F个地址后跟前2A-F个数据地址)的内容(相对区段选择值)。ROM 40对乘法器26的输入从顶部标题起无需补偿,且在F=0时不发生任何补偿,由此,缩略交错是位对齐的。然而,在F>0的情况下,顶部标题是图8的表所需且使用的,以呈现对于当前B值之前的字段B的值以及同一缩略交错的最后2A-F个数据地址的每一缩略交错的前F个数据地址的相对区段选择。
图8通过示出较上方的标题即使在对F=0无关时也具有值,成为用于任何F的值的一般设计工具。
缩略交错及其在[B]=0的情况下的旋转对于其中ROM 40的所表示的来自虚拟地址10字段A的A位输入值从mod(F-1+2A,2A)转变为F的情况开始(而之前在此情况下结束)。由此,当F>0时,从(F-1)(结束)转变为F(开始),而当F=0时,在A字段处绕回从(2A-1)转变为0。
对于图6的XOR树的输入和输出数据位宽度的导出参数J是奇异表达值,即J=ceil(log2Q)。然而作为对于图7和8的ROM 40的输出数据位宽度的J的范围是ceil(log2Q)≤J≤B,其中在Q和B值的某些情况下,J可大于ceil(log2Q)。
类似于图5所示的ROM 14的(A+B)位输入的2B个子表的每一个的表达输入值,如在图8的表中表达的所表示的A位输入值也对具有Q个表达式/循环的Q个单元跨每一循环从左到右逐个单元地增加1模2A,并且最后一个循环也具有Q-1个表达式且最右边的一个空(无表达式且为空白)单元由此总是不包含任何值。由此,相继行中同一位置的单元从上到下并再次回到该表的顶端逐个循环地增加Q模2A。L个全循环具有Q个表达式,且最后一个且剩余的循环具有Q-1个表达式加上一个最右边的空的、无表达式的无值空白单元。同样类似地,输入值递增1并在必要时绕回,但是是从(2A-1)的值绕回到0而非从(2A+B-1)绕回到0。再一次类似地,该表的最后一个循环、即循环号L+1以至少一个但不多于Q-1个求值为值而非空白的位置结束。当被完全定义并求值时,该最后一个循环的行将在其R个最左边单元中具有R个有值位置,并且具有Q-R个空白的最右边位置。此处再一次,对于图8,如同图5中一样,R=mod(2A,Q)并且L=trunc(2A/Q),且S=if(mod(R,2)=1,R,R-Q),并且A、F、B、K和Q也被选为如上所述的设计的有效固定值。
图9是本发明的另一种变体的框图,它尤其可用于访问各种大小的交错数据。图9的实施例尤其可用于通用和个人计算机。简言之,图9所示的本发明的概念通过对每一存储器区段建立每一次访问的单个最小大小数据块、并在每一次访问多个翼的每一个中的一存储器区段时进行访问,来访问来自多个翼的较大大小的数据,而扩展了图1-8中所示的本发明的概念。为便于解释,图1和9中相同的元素标有相同的参考标号。
虚拟地址200类似于虚拟地址10(图1),这表现在它包括i、n、B和A字段,但是它还包括含有表示值[Ω]的Ω个位的Ω字段,其中0≤[Ω]<2Ω。此外,与响应于字段i和n以提供翼选择值W作为物理页选择的一部分的关联30(图1)不同,关联204仅提供W的固定个数的最高有效位。翼选择值W的最低有效位是来自Ω字段的Ω位。由此,关联204提供物理页选择作为W-Ω+C-(A+n)。物理页选择的C-(A+n)位通过串接器32和34来应用以导出单元选择值,如在图1的实施例的情况中那样。
来自虚拟地址200的若干最低位的另外Ω个位在208处与来自关联204的若干位(现在为W-Ω)串接,以导出用于选择比关联所提供的更多翼的较大的翼选择值W。W翼选择值的位被应用于掩码解码器206。解码器206类似于解码器36(图1),不同之处在于位W的若干最低有效位中的一个或多个,即作为位W的最低Ω位的来自地址200的Ω位可用具有Φ位的掩码202来掩码,其中0<Φ≤Ω。掩码202的最右边的位可以具有某一公共值(例如,二进制“1”)以形成位宽的掩码,其中0≤≤Φ。Ω和Φ是设计的固定参数,而可在设计内改变,并且将根据所访问的数据大小和每一次访问中所访问的多个翼来改变。
如图1的实施例中那样,所寻址的交错存储器具有各自含有2B个存储器区段的M个翼。在图9的实施例中,M是2Ω的大于0的整数倍。因此,存储器具有每一块的2Ω个翼的M/2Ω个位对齐的块。ROM 14的2B个缩略交错(先前对包含含有2B个区段中的2B+C个单元作为每一单元地址的排序区段使用的一个翼的完整交错所描述的)对于在每一组的2个区段的2B+Ω-组中包含每一组的2个单元的2B+C+Ω-组的完整交错的2Ω个对齐翼中的2个对齐翼,对每一对齐的单元组地址的对齐区段组使用进行排序。由此,如图所示,在=Φ且Φ=Ω的情况下,ROM 14的交错的(最大)交错数据大小是2Ω个翼的某一位对齐块的2Ω个共同寻址区段的2Ω个共同寻址单元。
大于最小值的每一交错数据大小是最小交错数据大小(最小大小是单个区段的单个单元的大小)的不同的位排序倍数。最大数据大小是缩略交错的一个旋转的2Ω个翼的大小。任何大小的交错数据的扩展跨2个翼的位对齐块的2个共同寻址区段的位对齐块的2个共同寻址单元,其中如果Φ=Ω,则是范围0≤≤Ω内的值。对于访问交错数据的最小元,=0且2=1。为了访问最大的交错数据大小,Φ=Ω,=Ω且2=2Ω,尽管最大交错数据大小在Φ<Ω的情况下并不被实际访问,且对于0≤≤Φ的任何或所有值可能不被除了=Φ和=0之外的合理设计访问。
掩码202输出在每一次访问用于选择一个或多个翼的位对齐块的掩码。掩码具有一公共位值(例如,二进制值1)的可变的个最右边的位,该公共位值区分使得掩码的解码器206移除对W位编码的翼选择值的个最右边位的解码的任何最左边的位。因此,作为虚拟地址200的Ω部分的最低位的W的个最低有效位关于从掩码的解码器206输出的启用的区分而被忽略。由此,如果对访问最少的数据量(2=1)为0,则W位中没有一个位被掩码掉且仅M个输出的翼选择(启用)中的一个选择一个翼。如果为1(2=2),则W位的最右边的位(最低有效)被掩码掉,且一对位对齐的翼由剩余的(W-1)位编码的翼选择值来选择。因此,掩码的解码器206输出其总共M个可能启用作用的两个激活的启用。来自2个区段的数据被访问,因为掩码的个最右边的位从W位中移除了个最右边的位,导致剩余的最左边的(W-)个已编码位操作掩码的解码器206来输出该解码器的总共M个可能启用中2个激活启用的位对齐块,而这些启用进而选择存储器的M个翼中的2个位对齐块,以访问来自对每一选中翼的一个区段的一个数据。
ROM 14和解码器16在每一次访问选择每一选中翼的一个区段,并且对解码器18的所有输入都使得它在每一次访问都选择每一选中区段的一个元素数据。由此,解码器16和18以及掩码的解码器36的输出使得所有选中的区段12来访问2C个交错数据的2个共同寻址的元素数据的某一交错数据,这2C个交错数据属于2B个组的某一组2个共同寻址区段,这2B个组属于2Ω-个块的2个翼的某一位对齐块,这2Ω-个块属于对存储器的前M/2Ω个块的缩略交错的2C-B个旋转的完整交错公共的2Ω个翼的某一位对齐块。对2C-B个旋转的完整交错共同的每一块的2Ω个翼的前M/2Ω的位对齐块都是物理存储器,其中是对每一实际可访问的交错数据大小的单个唯一值。
必须从掩码202输出的线路的数量是等于最大实际可访问交错数据大小(图9中示为Φ)的log2的数字,取决于存储器设计它是从0到Ω的某一数字,Φ=0且Ω>0对访问高速缓存线的某些行锁存DRAM设计是一种实用的选择。
在=0的情况下,交错数据大小是单个区段的元素可寻址数据的大小。可用图9的装置来寻址的交错存储器只需具有最小数目的翼M,其中M是2Ω的某一倍数。此外,如果2Ω大于2Φ,则期望随机访问可良好执行。在任一情况下,存储器对从=0到=Φ的任一且每一个实现的交错数据大小,具有用于2Ω个翼的每一位对齐块的2B+Ω个存储器区段的一个完整交错。
由图9的装置寻址的存储器可具有用于最大交错数据大小的2(B+C)·M/2Ω个连续的物理地址、用于最小交错数据大小的2(B+C+Ω)·M/2Ω个连续的物理地址、以及用于中间交错数据大小的2(B+C+Ω-)·M/2Ω个连续的物理地址。区段使用的周期是用于最大交错数据大小的2(A+B)个连续的物理地址、用于最小交错数据大小的2(A+B+Ω)个连续的物理地址、以及用于中间交错数据大小的2(A+B+Ω-)个连续的物理地址。
缩略交错的区段使用的相对周期是用于最大交错数据大小的Q个连续的物理地址、用于最小交错数据大小的Q·2Ω个连续的物理地址、以及用于中间交错数据大小的Q·2(Ω-)个连续的物理地址。
由图9的装置寻址的交错存储器的一个特征是它对多种大小的交错数据的各种模式(包括伪随机模式)进行了高效的分配和因此的访问。
图10是本发明的另一种变体的框图,它尤其可用于具有大于单个页的小页的存储器。先前,小页的大小被假定与存储器的最小页大小一样小或比之更小,且使用虚拟地址的n字段来定义每一页的全部小页的数目。由此,每一页有2n个小页,其中n≥0。图10的实施例允许应用本发明来不仅适应如上所述的每一页有一个或多个小页,而且还适应一页上的部分小页。简言之,图10所示的本发明的概念通过建立固定的按设计的整数参数U,使得2U是对于最小小页大小的整数个小页或单个小页的一部分,来扩展图1-9所示的本发明的概念。U的值被选为使得对整数个小页U≥0,而对小页的部分U<0。为便于解释,图10中的元素与图1和9中相同的元素一样具有相同的参考标号。
图10不仅示出并且还标记了虚拟地址300的字段i和n之间的虚线边界301。对于任何特定的设计且如上所述,边界301的位置根据由关联306对于所访问的不同实现的页大小所找到的页的映射而变化。在任何情况下,边界301可以是不在固定界线302右边的任何地方。界线302可以被建立为在303处的B字段左边界的左侧、之上或右侧。更具体地,界线302可以被建立在边界301(i和n字段之间)和边界304(A和Ω字段之间)之间、且包括这两个边界之间的任何地方。参数U的绝对值等于界线302离边界303的位数。同样,如果界线302从边界303的左侧偏移,则U为正数;如果界线302从边界303的右侧偏移,则为负数;且如果界线302与边界303重合,则U为0。在图10中,界线302被任意地示为在边界303的左侧,其中U是正数。界线302不是任何字段的边界。作为虚拟页指示的字段i从不延长超过界线302、或达到界线302的右侧。字段i可延长以与界线302重合,作为一个设计的对其最小页的最大虚拟标识。
对于任何特定设计,U=nmin且n≥U,并且U的范围在-(A+B)和(i+n)之间延伸,即-(A+B)≤U≤(i+n)。由于U在给定设计中可以为负数,因此n可以对这样的设计,对于至少最小的页、且同样对于某些较大或甚至包括最大页的所有较大页为负数。
在对于具有U=-(A+B)的所有那些极值设计的其各种允许的极值内,字段i和n之间的可变边界301可以改变,且总是从其中最小页的大小等于仅一个最大可访问数据的字段Ω的左边界处的界线302,到取决于最大页大小的左边的某一地方,到左至其中i的左和右边界重合且i=0的字段i的左边界处。可以示出,由于i和n字段是可逆变的,因此边界301可以与字段i的左边界重合,从而导致i=0。在这一情况下,可以与边界301重合的界线302可以与字段i的左边界重合。在这些情况下,最大页不需要任何标识,因为它是所有的虚拟存储器,且因此虚拟存储器的大小等于仅一个物理存储器。为此,大多数设计将建立偏离其极值的U以及最大页大小,使得最小的页保存多个最大实际可访问数据、且虚拟存储器大小是多个完整的物理存储器。
如在先前的实施例中那样,(i+n)对任何特定实现仍是固定值,因为对于现在i可以大于(i+n)的程度,n将是同样大小的负数,且可以达到U为负数的程度。当n为负数时,负字段n在字段i的右端内折回,从而通过字段B的左端返回到B的左边界303。
关联306接收可变虚拟页标识,作为尚未完全指定的输入,即尚未对固定个数的固定格式之一指定,且对每一实现的页大小有一个标识。输入包括来自地址300的最左边(i+n-U)位,它包括界线302左边的所有位。由此,输入包含对于最小页的字段i的对最大格式的最大数目的位,即imax位。对于经由地址300对存储器的每一次尝试访问,关联306试图使来自地址300的未知格式的(i+n-U)位输入的必要数目的最左边位的值与根据仅为关联306所知的每一特定映射页的实现大小的每一映射的虚拟页标识相匹配。该匹配将来自地址300的(i+n-U)位输入定义为对于根据特定页大小的所必需数目位的i字段具有唯一地匹配某一特定匹配页的值的最左边的位。由此且如果存在,则来自映射页的表的匹配页标识定义对从地址300到关联306的输入的格式、虚拟页标识字段(i)和小页标识字段(n)的位数及其符号、以及其公共边界301的地址300和位置两者。
从虚拟到物理的所有映射页的表的已找到条目中,关联306提供(W-Ω+C-A-npos)位的物理标识(关联306的左边两个输出),它要么是页标识要么是小页标识(或在大小相同时为两者),取决于哪一个具有更少的位,并且是与每一定义的虚拟页标识相关联的物理页、小页或两者的标识的全部或部分,其中npos=if(n>0,n,0)。取决于U的大小(且因此其符号)以及当前访问的页大小,来自关联306的输出的一部分是物理小页标识的任何(npos-Upos)位未关联部分,其中Upos=if(U>0,U,0)。(npos-Upos)个位的值不变,作为界线302的左边或边界303的左边(取决于哪一个更左边)的字段n的值。不来自关联306的物理小页标识的任何未关联部分是直接来自界线302的右边和边界303的左边的字段n中的任一个的Upos个位。物理小页标识的三个部分是(W-Ω+C-(A+npos))部分(关联306的左边两个输出)、npos-Upos部分(关联306的右边的输出)以及Upos部分(来自虚拟地址300中界线302右边和边界303左边的字段n的任一部分,除界线302外边界303左边没有任何部分)。
当n为正数或0(且U是正数、0或负数)时,对字段npos组合的关联306和地址300如早先在图1和图9的实施例中所描述的那样运作,对于字段n仅有关联30或关联204:先前关联的(W+C-(A+n))和(W-Ω+C-(A+n))的物理标识现在是(W-Ω+C-(A+npos))位,并且先前的n现在是npos,并且npos是字段i右边和字段B左边的任何正数或0数目的未更改小页标识位,其中这些位通过和/或围绕关联306和/或直接来自地址300以将npos个位定义为串接器32处(C-A)位的一部分。
当n为负数(且U至少为负数)时,串接器32的串接总是为小页选择,尽管访问了小于小页的页。关联306否则将不会对小于小页的页产生每一小页的页选择。边界303右边的任何|n|位是所标识的物理小页内的物理页选择的最右边,这些位离开关联306的左边两个输出npos、Upos,并且因此npos-Upos都是0。由此,当虚拟数据或数据空间最初被映射到物理存储器、且所映射的量是小于小页的某一大小的页时,映射不是任意地到任何可用的这一大小的物理页,而是到由所有映射的数据地址的公共n字段的公共值为要映射的页大小而选择的那些页中可用的一个,其中在每一如此大小的可用物理空间(如果尚未映射,但是如果已映射则不必通过解除映射并重新映射来可用于这一映射)中有一个这样的页。小于小页的页的这一可选择映射允许存储器的虚拟空间映射到要为所期望的区段使用而排序的这样较小的物理页。为程序的程序员保留区段使用的期望次序通常对于良好的存储器性能而言是重要的。
如果由于其数据未映射到物理存储器而使读访问不成功,则不在物理存储器中的所有虚拟数据在其它存储中(通常是经由访问这类存储的系统控制的输入/输出的盘存储),包括当前需要读取的数据。系统有了来自各种源的对所有使用该系统的组件(包括具有不成功读访问的组件)管理系统资源的信息之后,选择要包括物理存储器中所需的读数据的页大小。同样,对于不成功的读访问存在来自虚拟地址300的(i+n-U)位最小页标识值,即系统通过对于不成功访问向系统给出这一信息的状态改变包而已知的标识值。由此,如果对于系统选择的页大小n为负数,则系统知道对所选择的页大小,这一必需的公共标识的值来自地址10的边界303和301之间。由此,当对读访问作出一次新尝试时,系统必须为要从盘或其它存储中读取的数据提供一物理页,即具有与即将来自边界303和301之间的地址300有相同的所需公共标识的物理页。同样放置或替换了关联306的映射表中的一个条目的系统经由用于该条目的状态改变包用仍成功的读访问来激活该条目。由此,具有要读取数据的数据以用于所选择大小的页的小页内的页的所需公共标识被加载到页中,并且用关联306的所有映射表中新的或经更新的条目来映射到所选择的物理页。
当所选择的页大小小于小页大小时,虚拟数据可被仅映射到物理存储器中这些可能的页的1/2|n|。由此,当页大小与小页大小之比缩小到低于1时,可用物理存储器空间缩小相同的比例。然而,对于不少于1的所有比例,所有物理存储器空间是可使用的。
例如,如果对于所选择的页大小n=-2且对于要属于该大小的所有虚拟数据[n]=1,则访问该页数据的任何数据地址的刚好在地址300的边界303的右边的两位对每一小页选择四个页中的第二页,这四个页是由选择0、1、2和3来选择的。当成为由关联306使用的这一映射表中的条目时,对要通过这一映射映射到物理存储器的所有虚拟数据地址,虚拟数据可以仅被映射到具有等于公共字段n的值(在本示例中为值1)的选择值的物理页。由此,所有物理存储器空间的3/4对其中n=2的页的任一映射是不可用的。
在某些情况下,多个数据流处理可能变得不平衡,而使一个流优于另一个。对区段选择次序的受管伪随机性可以有助于最小化不平衡条件,而不会中断根据本发明的交错模式所达到的高数据率。
图11示出了对图6和7所示的实施例的一种用于生成输入到解码器16的区段选择的变体,该变体用于管理对区段选择次序的伪随机性。与图6和7一样,图11未示出与图1相比未改变、且同样来自图6和7的所有所需的元素,而是示出了未改变的足以传达改变和未改变之间的边界的元素。对未重新绘出且因此对图11未改变的那些元素的连接是与关联30、区段12和泡34的连接,所有这些都属于图1、图6的金字塔20以及图7的ROM 40。对区段选择的任何随机性降低了所有固定间隔的数据的分配效率,该效率在没有随机性的情况下为超过约66%。由此,图11所示的不能用于选择I区段72(将结合图12来描述),在该选择中需要所访问数据的100%的分配效率。
地址10(图1和11)的i字段和n字段如上所述被输入到关联30(图1)中。作为地址10的组合字段i和n的最左边的所串接的(i+n-α)位作为种子输入被应用于伪随机生成器400,后者进而向B位宽的加法器402的第一输入输出一B位伪随机值。加法器402的第二输入是地址10的字段B。加法器402的输出被应用于乘法器26的B位宽输入(否则如图6和7中那样),以输入到B位宽的无进位输出加法器24(如图6和7中那样)。由此,来自加法器402的B位输出替换了对图6和7中乘法器26的地址10的B字段输入。加法器24从金字塔20(图6)或ROM 40(图7)接收之前产生的J位(ceil(log2Q)≤J≤B)形式的其第二输入。此外,在大多数情况下,F被设为0,即F=0,因此缩略交错的定义形式的边界与地址10,尤其与字段B位对齐。
在图11的实施例的一种形式中,加法器402是全B位宽2的互补加法器,它可调整地至少对于小页大小是伪随机的。在这一情况下,作为VBS-1输入到解码器16的区段选择值被表达为:
VBS-1=mod(mod(mod[A]-F+2A,2A),Q)+
mod(mod([B]+fpr([(i+n-α)],2B),2B))·(S+2B)-K+2B,2B),
其中函数“fpr”使用第一个参数作为要成为伪随机值的种子来模第二个参数。生成器400输出函数fpr的值。
伪随机性的第一种形式可通过在较大的位对齐块边界处应用伪随机性来调整成较不随机的,这通过增加α(0≤α)的值,由此减少种子位(i+n-α)的数目来实现。由此,α是当地址10在字段B的左边界左边的位数不属于种子(i+n-α)时存储器设计的另一固定参数,作为对函数fpr的第一个参数和对生成器400的输入。
在图11的实施例的另一种形式中,加法器402是简单的逐位B位宽部分加法器(B双向XOR),它对于小页大小是最随机的。在这一情况下,区段选择值VBS-2被表达为:
VBS-2=mod(mod(mod([A]-F+2A,2A),Q)+
mod(fpr([B],[(i+n-α)],2B)·(S+2B)-K+2B,2B)
其中函数“fpr”是第一个参数值使用第二个参数作为种子模第三个参数的一对一伪随机转换。在这一情况下,函数fpr的值表示部分加法器402的输出,其中生成器400及其输入和输出对两种情况是相同的。
这一第二种形式的伪随机性对于所有的S值都同等良好地表现,因为设计的伪随机性是在缩略交错级上的。由于从加法器402到乘法器26的输入已经如此伪随机地受到影响,因此对乘法器26的偏离输入可以是独立于S的任何常量值。因此,参数S的值和对乘法器26的任何偏离输入的值可以是无关的,这对其中偏离必须为S的第一种形式的伪随机性并不是如此。在作为第二种形式的这一情况下,乘法器26可以偏离+1而非S,并且可以被实现为将B个输入位连接到B个输出位的B条线路。
图12-16示出了采用根据本发明另一实施例的新颖的智能存储器区段(I区段)的本发明的一个实施例。特别地,图12示出了一个翼(或者如果还根据图9和10的实施例,则是2Ω个翼)的I区段、以及操作所有翼的相应I区段的附随I端口。对每一翼有2B个I区段,并且对所有的翼有多达2V-1个I端口。图13示出了一个I区段72的细节,而图14示出了一个I端口100的细节。这一实施例将对其中未使用Ω或Ω=0的具有M个完整交错的存储器来描述,尽管其原理可以延及其中Ω>0的存储器。
如图12所示,每一翼0,1,...,M-1包含2B个I区段72,每一I区段(图13)包含用于包括如通用计算机中的某些向量数据在内的通用数据的2C个单元的存储器区段92。结合数据流的属于虚拟地址10的所有字段的初始虚拟地址值,向量设置70(图12)提供一V位向量标识以及一D位固定间隔值。V位向量标识将无任何寻址设置([V]=0)与用于对所有不同的通常需要的存储器访问(数据高速缓存线加载和储存、指令高速缓存线取出、系统状态包交换、关联30对虚拟到物理页映射的表的存储器部分的搜索、对共享存储器或永久存储的系统输入/输出等)进行寻址的某一设置([V]≠0)区别开来。这些访问启用作为多个向量的访问启用来运作和表现,其中每一向量并发访问作为一不同的单个存储器数据流的存储器。因此,多个不同的流可基于每一个是某一不同非零标识来并发地流传送。每一非零标识值指示在这一专用的特定I端口[V]上的从存储器的读取或对其的写入,只有这个才是来自设置70[v]的实际非零值。作为任何非零值的每一这样标识值指示了来自地址10的、用于访问由关联30对初始地址找到的页访问的初始数据的初始地址,并指示了用于对由关联30对初始地址10找到的一页所访问的所有数据从设置70[D]寻址间隔(绝对值)和方向(符号)的固定值。由此,每一指示[V]≠0用于仅访问关于读取或写入在初始地址处开头,换言之在与前者相隔有符号值[D]的任何另外地址之前的页数据、并且作为解释刚巧在访问另一页的数据之前停止的页数据的一个找到的页。
定义流数据的存储器寻址的地址10和设置70的字段值由此一次仅对可能正在积极地访问存储器的多达2V-1个向量的每一个发送,以便于每一数据页的初始访问。所有字段值以适当更新的地址值通过地址10、关联30和设置70重新发送,以便于每一向量的每下一页的每一初始访问。每次发送字段值时,设置70的指示[New]也被发送,它指示了正在继续同一向量或者开始了新向量。如果地址10和设置70中的字段表示同一向量的重新发送,则处理逻辑90(图13)的一行等以及处理逻辑190(图14)中的一个端口等中任何当前活动的寻址值保持活动,直到达到一页边界、并由此使得对下一页的下一流的重新发送在处理逻辑90和190中变为活动。等待对下一数据页处理的寻址值在区段的设置数据96的行(图13)和端口的设置数据196(图14)中等待。当前一流的地址值到达其页边界并且停止其对存储器区段92的访问的处理时,延迟的寻址值移至相应的I区段的处理逻辑90行等以及相应的I端口的处理逻辑190等中。加法器90-1和190-2的进位输出指示处理逻辑90和逻辑190的行在处理下一区段选择198-4(图14)和下一单元选择98-3(图13)的值的同时到达页边界。加法器进位输出使得在设置数据96和设置数据196的行中等待的新鲜流分别替换逻辑90和逻辑190的行中已耗尽的流。
经由设置70对新向量的指示使得设置数据96、逻辑90等以及设置数据196、逻辑190等中的任何当前活动的一个或多个流停止、控制被复位、并且其任何未使用的读数据被有效地丢弃。如果要储存在存储器92中的任何写数据尚未被储存,则对相应区段的读/写请求98-1、读/写数据98-2以及下一单元选择98-3不被清除,并且允许完成其对相应存储器92的存储操作。由此,任何新向量的初始流不等待,而是立即开始。
向量的长度规范既不是逻辑90也不是逻辑190所需的。所有页数据可以在通过将数据写入读/写缓冲区198-3(图14)中或在读/写缓冲区198-3中有空间而开始逻辑90和逻辑190的寻址处理时访问。对同一向量流传送数据页的设置,即通过地址10和设置70的设置的每一次成功的重新发送意味着下一页在物理存储器中并且关联30找到并保存了映射条目。使下一流在设置数据96和196中等待的早期的成功重新发送可用于在跨越页边界时保持数据流移动。它也可用于写入数据流以避免成本过高地针对产生需要不可用页的过多写数据进行保护。
本发明的这一实施例允许实现关联30来搜索存储器以找到一映射条目,同时多个向量(甚至是引起搜索的向量)继续其以全速率对存储器的访问。每一新开始的读数据向量,诸如关联30所进行的每一次存储器搜索可在维持全数据速率之前持续一较短的初始时间段。
某些非常短的向量操作不需要通过地址10和设置80进行任何重新发送。高速缓存线的数据从不跨越页边界,并且如果初始地址10的值由关联30映射,则它可以是完整的。
向量设置70的每一发送和每一重新发送对设置70的字段V中的每一非零值发生。如图12所示,每一次非零出现都与来自地址10的(A+B)位ROM输入地址、经由串接器32来自关联30的(C-A)位值、以及同样来自关联30的NMSK位页大小组合,以输入到一个由[V]选择的智能端口(I端口)100(图14)以及每一智能区段72(图13)中并由其使用。区段的选中和未选中翼的所有I区段都使用设置的每一次发送,包括最初不是由地址值通过地址10来访问的选中翼的2B-1个区段、并包括所有未选中翼的所有区段。选中翼的每一个I区段准备用于为端口[V]的即将到来的区段使用而访问存储器区段92的下一单元选择98-3。如果端口[V]是读数据端口,则每一I区段着手将下一数据预读到读/写数据98-2中,从而将下一单元选择98-3更新为下一次预读的单元选择。每一未选中翼的每一个I区段与选中翼的对应I区段完成相同的工作,它对每一步骤投阴影,除了不实际访问存储器区段92且不挡住另一I端口的任何实际访问之外。由此,选中和未选中翼的每一I区段等待读/写请求98-1、提供预读的读数据、捕捉后写数据、或对这样的提供或捕捉投阴影。由此如在图12和13中的泡74所示的,关于向量数据的实际(未投阴影的)页(驻留在其中Ω=0的某一单个翼内或其中Ω>0的2Ω个翼内)的所有I区段接收B位ROM输入值、从中得到A位输入(C位单元选择的最低A位)和对于最大页大小的最大大小(位数)的小页选择((C-A)位串接器32的最低NMAX位)的C位单元选择、V位向量和I端口100标识、用于对由关联30找到的较小小页的NMAX位进行位掩码的NMSK位页大小掩码值以及D位有符号固定间距值。由此,非零的V位向量标识选择图12所示的多达2V-1个向量端口,即I端口100中的一个。图14更详细地示出了I端口100。如由泡110所示的,选中的I端口接收I区段经由泡74接收的同一设置信息中的大部分。
为访问存储器中的读或写向量数据,对每一规则的、以及各自从中断返回的页的初始数据地址都通过地址10重新发送经更新的向量地址。对应的向量标识和偏移或通过设置70的固定间距值在每一活动向量的I端口100和该端口的当前页的所有I区段的一部分连续地更新逻辑90和190中的地址(逻辑190(图14)中的NOR、B、A和逻辑90(图13)中的NOR、B、A)时产生,以连续访问将要跨越页边界(由图14中的加法器190-2和图13中的拣选加法器90-1的进位输出指示)的存储器数据。
当跨越每一页边界时,下一页的端口和区段较佳地已接收到来自地址10和设置70的延续设置。该延续设置被更新为以更新的地址以及页大小掩码和相同的偏移及标识来首次访问下一页。如果端口和区段尚未将延续设置信息接收到向量设置数据96和196(图13和14)中,则数据流动停止以等待设置。
向量经由泡110到达图14中的向量设置数据196的第一设置信息具有等于选择在设置196中有匹配的[端口号]的一个I端口100的[端口号]的值[V]。位(未示出)泡110指示该向量是否为新向量。不论是否为新向量,[V]等于[端口号]都使得泡110的相应标号位锁存到设置数据196的NMAX、B、A、D、NMSK块中并使得有效位196-1被置位。
对新向量设置有效位196-1直接并立即复位有效位190-1和198-1,并清除或复位缓冲区IFPB/IB 198-5以及读/写数据缓冲区198-3中的进行中计数、加上缓冲区中读数据或一个写数据。清除或复位的有效位190-1或加法器190-2的进位输出使得设置数据196的值锁存到地址处理逻辑190中的对应位置中,使得有效位196-1被清零(除非它再次由设置196中等于[端口号]的后续[V]输入设置),并且使得设置196中的NMAX、NMSK锁存到逻辑190中的NOR,在逻辑190中有将两个字段变为一个字段的逐位逻辑OR,并且NMSK 196中的掩码值迫使NOR中不对当前页内的小页寻址的任何较高位成为加法器190-2的进位启用。所有这些都在从有效位190-1被清除或复位、或加法器190-2有进位输出开始的下一地址时钟周期上发生。
当逻辑190中的NOR、B、A不是从向量设置数据196输入时,它可由加法器190-2的输出来输入。如果NOR、B、A不从设置196或加法器190-2输入,则它保持不变。加法器190-2具有与逻辑190中的NOR、B、A相同的位数,并且它将[NOR,B,A]与右对齐的[D]相加以产生相同位数的和与一进位输出位。D总是小于A+B,因为[D]不能大于G/(比交错的区段数少1),即G/(Q-1),其中Q是预定的,且G是交错的导出参数。同样,[D]不能具有等于任何非单式因子Q的任何非单式因子。清除的有效位198-1或来自OR门185的发送/接收启用使得来自ROM 190-3的区段选择由解码器198-2解码,以便于使B、A在逻辑190中有效被锁存在读/写区段选择(启用)198-4中、并且使得有效位198-1被锁存。来自门189的2B个发送/接收数据信号之一引起来自OR门185的发送/接收启用。门189使用来自在逻辑198的读/写区段选择中同样单数且有效的2B个区段启用的单个有效区段启用来输出单个逻辑“1”。门189也经由通过泡96向下的箭头向I区段72提供有效的2B个发送/接收数据信号。仅对于读数据端口且仅在为特定读数据端口选择的翼的所有2B个区段都对该端口提供读数据准备指示时,读端口的门189才产生其单个逻辑“1”输出,该输出表示被选中翼的单个I区段以发送读数据。所示的输入到门198中的2B条读数据准备线对作为写数据端口的图14不存在,但是对作为写数据端口的图14,存在所示的输入到同样条件存在的AND门183的写数据准备线。从输入到2V-1条相应线路77(每一端口一条线路)的M个翼的每一个相同区段72(图12)的每一访问寄存器98(图13),存在各自对应于2V-1个端口的2V-1个读/写数据准备信号。某些线路77用于读数据端口,而其余线路用于写数据端口。由此,在来自所有翼的所有区段的M·(2V-1)·2B个读/写数据准备信号中,它们划分为每M个区段2V-1个信号,且每一端口2B个信号。仅一个翼的2B个区段中M个的一个或其每一个可表示读/写数据在线路77上未准备好,在处理向量的地址(端口设置的有效位190-1)时对一个端口选择的翼的每一区段有单个信号。由此,来自未被活动的向量处理端口选中的所有翼的所有区段的所有M·(2V-1)·2B个读/写数据准备信号,并不将准备表示为数据准备,而是表示为对相应线路77的启用。由此,门189和AND门183从来自所有存储器的每一I区段72的路径76(图12和13)、86(图12)和96(图12和14)输入。
门189仅在来自访问接口198的缓冲区准备表示缓冲区准备时才输出其独立的一区段选择输出,因为IFPB/IB 198-5中的计数示出读/写数据缓冲区198-3中用于另一读数据的空间被置于进行中,或者在缓冲区198-3中存在写数据的单个周期。IFPB/IB对来自OR 185的对读数据的每一次发送/接收进行递增计数,并对写数据的每一次发送/接收进行递减计数。将写数据产生到缓冲区198-3中在每次将写数据置入缓冲区198-3中时将IFPB/IB中的计数递增1。使用读数据在每次从缓冲区198-3中取出读数据时将IFPB/IB中的计数递减1。来自OR 185的每一发送/接收更新选择读/写区段选择198-4中的下一区段的启用,以及有效位198-1和逻辑190的NOR、B、A中的有效位。每一次发送/接收还更新逻辑190中D的状态,并且如果有来自加法器190-2的进位,则更新有效位190-1和196-1。如果没有来自加法器190-2的进位,则进入逻辑190的NOR、B、A中的下一更新值来自加法器190-2。如果有来自加法器190-2的进位,即使不是直接的,下一更新也来自设置196中的有效NOR、B、A,因为有效位196-1被清零(在这一情况下,有效位190-1被清零,直到在有效位196-1用来自地址10、关联30和设置70的等待设置再次置位之后被再次置位)。
使用来自地址10和设置70的泡74中的所有信息,设置了存储器的I区段72以同时且对于与I端口100相同的向量流来流传送向量数据页。所有I区段72以由泡74中的[V]选中的I端口100几乎相同的方式响应于泡74中的新向量指示符。该新向量指示符如同向量设置数据96中达到的设置一样在一个周期中置位并清零,使得在对所选择的I端口的所有存储器的每一I区段中,对到达的读数据复位定时链,清除有效锁存器以与下一单元选择98-3和读/写数据98-2的两个有效位中那样处理逻辑90中的地址,以保持预读的读数据。在新向量用于写数据的情况下,所有的清零和复位关于读数据都相同,除了由关于指示了新向量的I端口的所有存储器的任何I区段在读/写数据98-2中接收的写数据及其下一单元选择98-3不被清零、而是将数据如所寻址地储存到存储器92中之外。关于未被指示[V]的新向量选中的其它I端口的所有存储器的每一I区段不被清零和复位,也不直接受到影响。
所选中翼的I区段在设置96中正如设置196所做的那样将设置信息和有效位锁存在所选择的I端口的锁存器行中。设置96中的设置正如设置196等待或不开始处理逻辑190中的处理那样,要么等待,要么不等待来移至逻辑190中的地址处理。定时是出于相同的原因。I区段要么检查,要么跳过检查所有地址,以找出恰巧是其自己的下一单元选择,这是其自己的永不比每第Q·[D]个地址更频繁的单元选择。另一方面,I端口对向量的每一数据地址,即每第[D]个地址处理I区段选择。同样,处理地址以找出I区段的下一单元选择对于读数据I端口比对于用于写数据的I端口可能要困难。关于写数据端口的I区段只需搜索下一单元选择,从而搜索每第[D]个地址。然而,必须通过将地址提供给ROM 90-2的输入、并检测其对区段地址是否有单个位的输出而跳过每一次检查要检查多于[D]-1个地址,而更快地搜索写数据下一单元选择和读数据下一单元选择。由加法器90-1加到页内的单元地址的数,即处理逻辑90的[NOR,B,A]必须是处理逻辑90的[D]的倍数。由此,拣选加法器将所拣选的[D]的位排序乘积加到连续的单元地址和以供检查。仅在发现每一单元地址属于区段时才进行x1以上次拣选。多个加法器或者乘法金字塔将更快,但是如此快并不是必要的、且在拥挤的逻辑空间中可能不是优选的。因此,读和写数据端口仅需每一端口一个加法器。
不论是用于读还是写数据,关于端口的区段的下一单元选择的下一地址仅被每一地址值具有单个位的ROM 90-2的输出[B,A]所知。ROM 90-2类似于ROM 14(图1),不同之处在于它不对交错的所有区段输出B位区段选择。相反,ROM 90-2仅对选择相应I区段的那些地址输出设为“1”的单个位。ROM 90对于一个翼的相同I区段是相同的,但是在一个翼的不同I区段之间是不同的。
向量的数据地址是以来自地址10的初始地址设置开头的每第[D]个地址。为搜索用于这些向量的每一数据地址,从I区段的ROM 90-2产生“1”仅对每一端口或逻辑90的行取一个加法器90-1。较快的搜索对每第[D]个数据地址进行搜索,除了在每一产生“1”的地址之后的那些地址之外,然后再次搜索每第[D]个地址。例外是从2·[D]到两个上限中较小的那一个的[D]的某一倍数。Q·[D]数据地址是对于在每次加法产生“1”之后所添加的上限。为描述得简明起见,[D]被假定为是正数。本领域技术人员可以认识到,此处所描述的技术可以应用于正和负的[D],诸如通过不对负[D]使用进位来检测地址加法器的溢出。所增加的[D]的倍数不应大于Q,也不应导致(倍数)·[D]大于
trunc((2B-Q)/|S|)·2A+R+if(mod(R,2)=1,mod(2B/S),|S|-mod(2B/|S|))。
否则,可能会跳过从ROM 90产生“1”的数据地址。
对从ROM 90-2产生“1”的[D]所隔开的所有地址的快速搜索对从2到Q的值的每一“1”位使用加法器,以拣选并加上[D]的不同左移位,该加法形成了乘积(值)·[D],并且将它们加到最后一次从ROM 90产生“1”的数据地址。在那些被检查并且不产生“1”的地址之后的每第[D]个数据地址仍通过ROM 90-2来检查。应当记住,D也具有用于区段之中的100%效率分配的限制。为确保固定间隔的Q个数据地址[D]在Q个区段之中分配,|[D]|必须不大于G/(Q-1)。如果位拣选加法函数对每一地址周期执行一次,则对每一读(和写)端口的逻辑90的每一逻辑行只需一个加法器90-1。如所解释的,拣选完成至少一次x1拣选并在完成所有其它任务之后完成至少一个x1持续。
对于逻辑90的每一行,对于任何写数据端口,存在一类似于有效位190-1的有效位(未示出)。逻辑90中的该有效位对由ROM 90-2未发现和发现为用于I区段的所搜索的那些地址确认地址NOR、B、A。搜索在ROM 90-2找到在已经输入到访问寄存器98的CFIX、NSEL和A的任何下一单元选择之后接着要输入的CFIX、NMAX(较高掩码位)、NOR(较低掩码位)和A,以及仅用于访问寄存器98的行的端口的下一单元选择的CFIX、NSEL和A的有效位时停止。对于写数据,单元选择等待写数据如由请求98-1所指示的在数据98-2中显现,该请求由写数据I端口用发送/接收数据信号经由泡96、86和76来设置。一旦被设置,请求98-1就使其自身和数据98-2中的写数据保持设置,直到通过如为便于每一I区段的后写而调度的通过将数据写入存储器92中来清除。区段忙碌逻辑(未示出)测量自从任何I端口最后一次访问I端口的唯一存储器区段92以来地址周期中的区段周期时间。访问优先级逻辑(未示出)在所有写数据I端口的请求98-1和所有需求(单元选择98-3有效,且不读取数据有效,将在下文中描述)之中进行选择,以访问存储器92来找出接下来访问存储器区段92当前所需的那些读数据。当等待写数据98-2的请求98-1具有最高优先级时,请求98-1被设置,且区段忙碌逻辑显示存储器92不忙碌,并且写访问锁存器通过清除最高优先级请求98-1来设置。写访问在被设置一个周期之后被清除,即在清除请求98-1之后被清除。写访问锁存器将写访问97发送到存储器区段92,将选择数据98-2发送到存储器区段92,并且使得来自逻辑90的下一单元选择被输入到访问寄存器98的CFIX、NSEL、A中。如果逻辑90已找到了ROM 90-1中具有“1”的下一地址(且由此选择I区段的存储器92),则从逻辑90的有效位输入的之后的有效位被应用于访问寄存器98,并且如果逻辑90在搜索ROM 90-2中的下一地址时达到了如由来自加法器90-1的进位所指示的页边界之后尚未设置有效位,则所有的都等待对设置数据96的任何(如果是向量结束则没有)设置。
为访问读数据,I区段与通过在访问寄存器98中CIFX、NSEL、A中的有效下一单元选择来访问写数据非常类似地运作。由所有需要的对存储器92的访问使用的访问优先级逻辑看见读数据需求,因为用于下一单元地址98-3的有效位被置位,且用于读数据98-2的有效位被清零。如果访问优先级对读数据需求给予优先级,且区段忙碌逻辑指示存储器92从最后一次访问中恢复,则即使不是立即,也是在很短时候之后数据有效锁存(向I区段的I端口表示通过线路77的读数据准备)并保持其自身置位,且读访问锁存器仅对开始沿定时链向下的脉冲的一个地址周期设置。读访问锁存器以已经在下一单元选择98-3中的[CFIX,NSEL,A]向存储器区段92发送读访问97。在下一周期,以经更新的[CFIX,NSEL,A]将单元选择98-3更新到下一个,并且以对于写数据相同的方式更新其有效锁存器。这对ROM和加法器释放了处理逻辑90以搜索下一单元地址值。在由访问优先级脉冲读访问开始的定时链中的适当点处,脉冲锁存读数据锁存器,这经由泡76、86和96回头向I端口表示经由线路77的读数据准备,并表示在从存储器92到达数据98-2的数据之前的数据准备。因此,且优选的是,对I端口的任何等待遇见从存储器区段92到达数据98-2的读数据,且通过泡96、86和76返回一发送/接收数据。定时链的最后一个脉冲更新数据98-2以锁存来自存储器92的读数据。
图12示出了存储器的所有I区段72和所有I端口100。地址10、关联30、泡32、用于翼选择的解码器36、以及每一翼的2B个区段的M个翼与图1所示的一样,除了区段12是I区段72之外。对于图12,地址10总是连同向量设置70呈现其字段一起呈现其字段,它们总是共同呈现。在每一地址周期可呈现地址10和设置70的字段中的一组新值。泡74中的所有内容用于值的同一地址周期。来自解码器36以及泡74和110的呈现给所有I区段72并呈现给所有I端口100的内容属于同一地址周期。从图12的地址10到泡74的字段A和B与从图1的地址到图1的ROM 14的A和B字段相同。从图12的泡32到泡74的内容与从图1的泡32到图1的泡34的内容相同。
来自图12的关联30的NMSK位值是由关联30为地址10中的值找到的页大小的指示。来自关联30的NMSK具有与用于最大页大小的n相同的位数。[NMSK]是将当前映射地址10中的地址的页大小的较高NMSK-n位与较低n位进行区分的掩码。泡110中的NMAX还具有与用于最大页的n相同的位数,且[NMAX]是泡32中值的最低的相同个数的位的值。字段V和D、设置70各自是用于向量数据的向量指示和固定间距。泡74中的所有数据连同来自解码器36的翼选择(启用)以及到达所有I端口100的泡110中的所有数据一起到达所有的I区段72。这些信号(泡74、翼选择和泡110)都是用于地址10和设置70中的值的同一地址周期。
来自地址10和设置70的信息的地址周期由[V]≠0来指示,且无信息的地址周期由[V]=0来指示。关联30仅在[V]≠0时响应于地址10中的[i]和[n]。同样,I区段的每一翼在[V]≠0时响应于泡74中的所有值,但是除了一个翼对由来自解码器36的翼选择(启用)所选择的翼投阴影,即I区段中实际访问存储器和另一个的I区段的一个翼未被选中,这些翼对选择投阴影(但不实际选择访问)以保持其在向量中各自的位置,以在对之后的页选中时进行实际的访问。另外,I端口中其号码匹配[V]的那一个在[V]≠0时响应于泡110中的所有值。
图12中在地址10和设置70下方的所有元素都可对相同的[V]或对不同的[V](所有[V]≠0)响应于地址10和设置70中的某些(并非所有)不同信息的相继的地址周期。[V]≠0的每一地址周期是用于访问单个页中存储器内的数据的不同向量或数据流设置。忽略页错误,这不是本发明的一部分,所有地址被假定为由关联30找到和映射。由此,访问多个页中的数据的向量必须具有通过地址10和设置70(以及关联30)发送的相等数量的设置,其中每一页被映射一次,且没有来自地址10和设置70的另外的信息。由此,因对页的所有访问所需的设置的信息必须被保留在I区段和/或I端口中。
向量[V]的一个I端口保留用于为访问固定间距的相继数据而作出相继的区段选择的信息。所保留的信息允许I端口100为向量的每一次存储器访问选择2B个区段选择之一并将其发送到泡96中。每一区段选择通过泡96、86和76向M个翼的M个I区段提供其自身,所有这些区段都是相同的区段号。在设置处所选择的翼和未选中的翼的2B个I区段保留用于作出相继单元选择或对其投阴影的信息,其中M·2B个I区段中的每一个仅产生它访问其存储器的一部分,即其存储器区段92(图13)或对访问投阴影所需的那些单元选择。由此,在设置处未选中的翼的2B个I区段也保留了用于作出相继单元选择的相同信息,而不实际访问数据,然而保持其在向量中的相对位置,从而如果在设置处为以后的数据页选择了另一翼,则知道从何处进入且实际开始访问数据。
每一I端口为从存储器读取数据或将数据写入存储器而访问存储器。每一I端口被描述为是读数据端口或写数据端口,尽管所有的I端口共享相同的图示并因此具有许多相似性。如果2V-1个不同的向量正在访问存储器,且每一个其自己的有效固定间隔不是太大并且如所解释的与Q互质,则所有的I端口将在使用中,并且它们可每次从每一I端口生成一个区段选择。总体上,I端口一次向存储器生成2V-1个区段选择而不考虑同一时刻选择同一I区段的任何号码。I端口可选择一区段并按需向其发送数据,即与经由I端口产生或消耗存储器数据的区段能够进行的一样快或一样慢,这可以从停止到每一地址周期一次访问,或者是在任何时刻的开始和停止之间的任何速率。这一按需访问可能直到向量的第一页的第一个设置之后的初始时间段之后才发生。
每一I区段根据I端口数据类型,即读或写,并在为读端口时根据所选择的,输出2V-1个读或写数据准备,对每一I端口一个。M个翼的相同区段号的M个I区段72将对同一I端口的所有其数据准备输出到单根线路AND 77中。仅当前为读I端口选中的翼的2B个I区段可在该端口的2B条线路77上产生2B个“未准备”信号,从而对选中区段的一条线路产生一个信号。然而,所有M·2B个I区段,无论是否被选中,都产生该端口的2B条线路77上的M·2B个“未准备”信号,从而对无论是否选中但仅在设置之后并且在开始该端口中的一个“新”向量之前的每M个区段在一条线路上产生M个信号。由此,来自泡260的未准备表示剩余的尚未储存的写数据何时从最后一个向量保留以使用现在希望开始一个新向量的写端口。由此,对特定读端口输入的2B个数据准备是针对关于对该端口选中的翼的读端口的每一区段的,而输入到为特定端口产生写数据的区段的数据准备是针对关于写端口的所有存储器的。所示的输入到每一I端口的2B个读/写数据准备是用于该端口的2B条线路77的数据准备。所示的从I区段到线路AND 77的读/写数据准备对读和写端口都存在。然而,所示的从泡96进入I端口的2B个准备在读端口内与写端口内的存在不同地存在。读端口具有输入到门189(图14)的2B个数据准备,但是写端口却没有,尽管门189的功能是相同的。然而,写端口具有输入到AND门183(图14)的2B个数据准备,但是读端口却没有。AND门183和泡160在读端口内不存在。如果I区段正表示其读数据未准备,则用于读数据的I端口不向该I区段发送发送/接收数据信号。对读数据端口的进展投阴影的未选中翼的I区段不向该I端口表示读数据未准备,直到不进行投阴影并且作出对存储器的访问。然而,用于写数据的I端口将来自AND门183的输出以及来自泡260的输出提供给产生用于输入到读/写数据缓冲区198-3的写数据的组件,因此写数据的产生对新设置的写数据向量直到写端口的前一写数据向量的所有写数据被储存到存储器区段92中之后才开始。
参考图14,I端口100具有在单行中具有锁存器的三个逻辑区域。来自泡110的设置信息的每一地址周期进入向量设置数据196,并锁存到要对一个或多个地址周期保持在那里的锁存器行中。每一行包含与泡110中相同的总位数。设置196中的新向量位(未示出)指示该信息是否反映新向量。端口号表示特定I端口100的逻辑偏离(或地址),为1到2V-1中的一个。[V]的值表示设置196的输入数,其中[V]=1,2,...,2V-1的值标识了一个[端口号],且[V]=0的值意味着没有有效的设置数据。泡110的字段NMAX、B、A、D、NMSK的值被输入到向量设置数据196的相应锁存器中。除新向量位之外的向量设置数据196的所有锁存器的输出被输入到地址处理逻辑190的NOR、B、A、D锁存器中。锁存器B、A、D的信息如同对字段名一样传输。对[NOR]的输入是[NMAX]和[NMSK]的逐位逻辑OR,且任何所得的NOR的较低位值是NMAX的值,而任何较高位的值是对加法器190的启用。[NMSK]反映了所访问的页大小,NMAX的位对用于分页的加法器190-2启用进行掩码。加法器190-2提供对逻辑190中的锁存A的输入,且在对A锁存的两个输入之间有一个选择。加法器190-2具有与其一个输入NOR、B、A相同的位宽度。加法器190-2的另一输入是D锁存,它在该输入内与D的最高位,即符号位右对齐,并且如果是负号则作为对加法器190-2的启用向左扩展。加法器190-2为控制或粘合逻辑(glue-logic)输出最高进位位,即刚好比NOR、B、A的最高者高以完成其和的位。
ROM 190-3类似于图1的ROM 14,并且从B、A输入。I区段访问接口198具有锁存器、IFPG/IB 198-5、读/写区段选择198-4、以及有效198-1。有效198-1从有效190-1输入。区段选择198-4的2B个位直接从解码器198-2输入,而解码器198-2从ROM 190-3输入。读数据端口的进行中加缓冲区(in-flight-plus-buffer)198-1的计数的多个位或写数据端口的入缓冲区198-1(in-buffer)的计数0或1的一个位、锁存器IFPG/IB 198-5在从逻辑递增、递减或不变时从其自身输入。IPFB/IB198-5连同接口198中的缓冲区准备度特征一起标识了缓冲区的充满度或准备度,以从I区段接收更多读数据或向I区段发送另一写数据。缓冲区准备度可以是指示数据缓冲区198-3的准备度以发送写数据或接收读数据、或者IFPB/IB 198-5中的计数小于用读数据填满数据缓冲区198-3的某一倍数的量的单个位,计数较小指示对更多读数据的准备度,或者等于“1”指示对接收数据的准备度(由此指示数据可被直接发送以供写入)。数据缓冲区198-3要么根据箭头220经由泡245、箭头250、泡280(图15)和泡225与来自I区段72(图13)之一的读数据一起从泡225输入,要么从接口198内产生写数据的组件输入。作为写数据产生器的接口198在它将每一写数据置入数据缓冲区198-3的同一地址周期上递增IFPB/IB 198-5,从而以从停止到每一地址周期一个的任何速率产生写数据,如由计算机处理器(未示出)驱动的。数据缓冲区198-3根据箭头230向泡225输出写数据,同时根据图13中的箭头240经由泡225、泡282(图16)和泡245,写数据流入I区段72。最后,数据缓冲区198-3向使用读数据的组件输出,并且在它从缓冲区198-3移除读数据的同一周期上递减IFPB/IB 198-5中的计数。
区段选择198-4向门189输出其2B个启用,门189直接或在准备好时经由图12的泡96、泡86以及图12和13的泡76向所有的I区段72输出2B个发送/接收数据信号,即对每一启用向M个I区段进行输出。来自门189的2B个输出也输入到2B向的OR 185中。2B向的OR 185的单个位输出或者对每一次启用从I区段72发送读数据递增IFPB/IB 198-5中的计数,或者对每一次启用由I区段接收(向其发送)写数据递减该计数。
如果I端口100是读数据端口,则门189也以来自所有I区段72的2B个读数据准备信号输入,其中在端口的每一读数据准备位或线路77上有M个I区段,且所有的信号都经由泡96、86和76。门189对来自区段选择198-4的2B个启用和来自I区段72的2B个读数据准备执行逐位组合。由此,要发送到M个I区段的门控位由来自相同的M个I区段的读数据准备来门控。更特别地,如果来自泡96的读数据准备指示其关于该端口的选中I区段尚未准备好,则对于从区段选择198-4中选择的I区段的M个区段的相应区段启用不能变为来自门189的发送/接收数据信号。如果I端口100是写数据端口,则用于该端口的门189没有输入到其中、并且对相应的启用进行门控以使其不变为发送/接收的2B个读/写数据准备信号。相反,对泡96、86、76中的写端口存在的信号线被输入到2B向的AND 183中以产生来自泡260的信号,该信号指示该端口的最后一个写向量的最后一个写数据已将其来自所有存储器的任何翼的任何I区段72中的端口的任何数据89-2(图13)的最后一个写数据写入该I区段的存储器区段92中。因此,对设置数据96和196等中的新向量设置的写数据等可在泡260指示对要写入某一存储器区段92的所有先前向量的写数据准备好时从接口198内产生。对新向量设置的写数据在该新向量的设置在设置数据196处锁存之后的两个地址周期之前不能被置入数据缓冲区198-3中,由此仅在泡260指示准备好的情况下才被置入。读数据端口不需要2B向的AND183。对于读和写数据端口,输入到门189中的所有2B个启用由来自I区段访问接口198的单个位缓冲区准备来门控,它由来自未准备好的接口198的缓冲区准备门控以不成为2B个发送/接收数据信号中的某一个。I端口100包括粘合逻辑,它输出缓冲区准备[缓冲区准备度198]*[有效198-1]*[非新向量196]。除了缓冲区准备之外,I端口的粘合逻辑提供其新向量位,该位指示设置196中的数据是否用于新向量以及锁存启用(在本文中描述)是否用于各种锁存器。
经由2B向的OR 185来自门189的发送/接收数据信号的定时启动该端口的粘合逻辑的读访问定时链,从而对该端口的每一读访问进行定时。读访问的最后一个锁存器被输入到数据缓冲区198-3的FIFO数据进入控制,以经由箭头220捕捉泡225上的数据。另一个粘合逻辑输出[新向量]OR[非有效196-1]OR[非有效190-1]OR[[非有效198-1]AND[[加法器190-2进位位]XOR[D 190符号位]]]OR[[2B向OR 185]AND[[加法器190-2进位位]XOR[D 190符号位]]],作为用于NMAX、B、A、D、NMSK、有效的锁存启用。设置196中的新向量位没有锁存启用,从而锁存每一地址周期。粘合逻辑还输出[非有效190-1]OR[非有效198-1]OR[2B向OR 185],作为用于NOR、B、A的锁存启用。另一个粘合逻辑输出[新向量]OR[非有效190-1]OR[[非有效198-1]AND[[加法器190-2进位位]XOR[D 190符号位]]]OR[[2B向OR 185]AND[[加法器190-2进位位]XOR[D 190符号位]]],作为用于D、有效的锁存启用。最后一个粘合逻辑输出[新向量]OR[非有效198-1]OR[2B向OR 185],作为用于区段选择、有效的锁存启用。IFPB/IB 198-5锁存每一地址周期,并且其计数由设置196中的新向量位复位为0数据。数据缓冲区198-3是具有其自己的控制逻辑的FIFO缓冲区,它也由新向量位复位为0数据。
参考图13,I区段72具有三个逻辑区域,每一个都在不同的行中具有供每一I端口或向量使用的单独逻辑,每一I端口或向量因此由具有公共外观和用途但并非在各方面都相同的多个逻辑来表示,因为某些I端口用于读数据,而其它则用于写数据。I区段72在设置数据96中是最常见的,而在访问寄存器98中是最不常见的。采用[V]≠0的每一地址周期,来自泡74的有效设置信息进入向量设置数据96,从而扇出到所有行的锁存器,但是作为用于一个向量的有效数据或向量设置信息锁存到2V-1行逻辑的仅一行中。[V]为非零的每一周期将有效信息锁存到行[V]中,并且行、端口和向量从前到后从1计数到2V-1。设置数据96的每一行中所示的具有与泡74相同的总位数,仅仅字段C被进一步分成多个字段,其中字段C-A-NMAX是泡74的字段C中最高的C-A-NMAX位,字段A是字段C中的最低A位,而字段NMAX是字段C中在A和C-A-NMAX位之间的那些位。
每一区段72具有形成在本文中所描述的各种锁存和启用的粘合逻辑。向量设置数据96的每一行都包含新向量、有效和翼选择锁存。以此方式,处理逻辑90的每一行都包含有效和翼选择锁存,以及用于1位宽定时链的某些数量的锁存器的拣选定时链。访问寄存器98的每一行包含下一单元选择有效和翼选择锁存,其每一个为1位。同样以此方式,用于读数据的每一行数据具有读数据准备、读访问有效和阴影读数据访问锁存,以及用于1位宽定时链的某些数量的锁存器的预读定时链,其中定时连的第一次锁存也是用于有效读访问或定时链时间的预读访问位。最后,用于写数据的每一行数据具有后写访问、阴影写访问和写数据未准备锁存,其每一个是单个位锁存。存储器区段92和解码器88是用于串行地访问I区段的存储器数据,即存储器区段92中数据的每一I区段72的两个单项。存储器区段92和解码器88不对两个1位宽定时链、同样为单数且串行使用的存储器区段对读忙碌和存储器区段对写忙碌进行锁存。
粘合逻辑包括用于在每一行中重复以对读数据和写数据端口进行并行使用的设置96、逻辑90以及访问寄存器98的粘合,用于仅供读数据并行使用的每一行的逻辑90和访问寄存器90的粘合,用于仅供写数据并行使用的每一行的粘合,以及用于读和写数据两者的粘合。
来自泡74的信息的每一位被提供给每一行96的相应位的输入,每一位被扇出到2V-1个相应的输入。来自泡74的[V]被解码并向设置96中的(多达)2V-1个有效锁存的每一个的输入提供一不同的非零解码,从而从前行到后行向相应有效锁存提供从1到2V-1的解码。来自解码器36(图12)的1位翼选择启用输入图13的向量设置数据96,并被扇至同样多的翼选择锁存的2V个输入。经由泡74来自设置70(图12)的单个新向量位以泡74中向量的初始设置信息指示该向量是否为新向量[[新向量]=1]AND[[V]≠0](这与延续向量[[新向量]=0]AND[[V]≠0]的延续步骤相反)。新向量位被扇至每行一个的2V-1个2输入逻辑AND门的同一输入,且所有行的其它输入是来自[V]解码器并表示一不同的非零经解码输出,该输出对于来自泡74的每一输入的[V]匹配行号。2V-1个输出输入2V-1个新向量锁存。向量设置数据96的锁存的每一行向处理逻辑90中锁存的相应行的输入输出其信息,在处理逻辑90中有CFIX、NMAX、NOR、B、A、D、NMSK锁存、翼选择锁存和有效锁存的行1到2V-1。
逻辑90包括2V-1组相关联逻辑(不是锁存器)、ROM 90-2和拣选加法器90-1,每一组用于处理逻辑90的锁存器的每一行,且所有的都用于处理I端口1到2V-1的向量1到2V-1的寻址。向量设置数据96的一行锁存器的输出直接或间接(经由粘合逻辑)输入到同一字段名和行号的处理逻辑90的锁存器,其中对相应字段的位数,CFIX等于C-A-NMAX。C-A-NMAX直接输入到CIFX。来自设置96中的NMAX和NMSK的值通过位2输入逻辑OR(NOR)的一位。来自NOR OR门和B、A字段的信息是逻辑90中的(NOR+B+A)位宽2输入较低地址选择的一个输入,它输出至逻辑90中的锁存NOR、B、A。较低地址选择的另一输入是从拣选加法器90-1输出的和。拣选加法器90-1的位宽度与NOR、B、A的宽度相同。从NOR OR门,NOR具有用于不是所访问的页大小之内的交错数据地址(一个I区段的一次访问的数据的地址)的地址位的任何掩码的较高位的拣选加法器90-1启用。任何较低位是NMAX的相应较低位。拣选加法器90-1的一个输入是NOR、B、A,而另一输入是D,它与作为用于负D值的加法器启用向左扩展的符号位右对齐。对于写端口,逻辑90中的D与包括用于符号位的一位(最左边)的设置96中的D位宽度相同。对于写数据I端口,设置96中D的值仅是输入到逻辑90中D的值。
对于读端口,逻辑90中D的位宽度大于设置96中D的位宽度,但是小于拣选加法器90-1以及拣选加法器的其它输入NOR、B、A的位宽度。对于读端口,有对逻辑90中D的多个输入。一个输入来自设置96中的D,它与其符号位右对齐,并向左扩展到逻辑90中D的左端。对于逻辑90中D的所有其它输入是自身到自身的,且向右或向左移位。D中的值通过从自身到自身的所有移位的输入向左移位,但是一个值向右移位。左移位的每一个中的一个或多个导致最初从设置96完全移位到具有单个最左边符号位的逻辑90中D的左端。每一左移位将零从右侧扩展。向右移位的值使得完全移位到左边的值如其原始来自设置96那样完全返回到右边。逻辑90中的D在拣选加法器90-1的较宽输入内右对齐。在对拣选加法器90-1的D输入内,D的最左边位被扇至相同或更高的每一拣选加法器输入位。移位的顺序是固定的,即左侧最先,以任何固定的次序从最小到最大中的一个或多个。右移位在最后。[D]的位排序拣选的这一顺序在D接收每一设置之后重复任意次数。重复的拣选可在序列中的任何地方发生,作为固定次序的一部分,且所有的都表示对D的单个附加输入、零移位或x1拣选。然而,零位移需要零个附加输入(任何数量的零移位都通过在任何相同个数的地址周期内保持逻辑90中D的相同值来实现)。实现大量[D]的输入个数可以是非常合理的。例如,关于设置96(其中Q=31的真实示例)的[D]=31的实现,仅需5次拣选(x1、x2、x4、x8、x16),从而仅需仅具有一个或两个输入的几个位的三个输入。那些仅有一个输入的位具有总是为符号值的较高位,它们在从逻辑90接收D输入之后保持恒定;那些具有两个输入的位的最低位需要来自逻辑90中的D以及来自右移位的值的输入)。从右移位进入的零不需要输入,仅仅是不选择所有的输入。
对于逻辑90中的每一NSEL,粘合逻辑根据NMSK从NMAX中选择任何较高位,并从NOR中选择任何较低位。每一ROM 90-2从B、A输入,并且输出单个位作为用于保持在I区段的存储器区段92中的数据地址的[B,A]的“1”位。ROM 90-2的单个位输出输入到粘合逻辑90中的拣选定时链的第一个锁存器,以沿着定时链向下发送单个定时位来选择输入到D中的移位输入。当读端口的ROM 90-2设置拣选定时链的第一个锁存器时,首先选中且向左移位最少的值已经在D中,该值为零移位作为x1拣选,并且不需要来自拣选定时链或ROM输出位的任何动作。由此,为至少对于此处所提出的用于选择[D]的拣选或移位的方案的(值)·[D]所选择的值必须是奇数,这是没问题的,因为Q如在Q·[来自设置96的D]中那样总是为奇数,且(值)=Q是优选的。当定时位沿拣选定时链向下行进时,除了最后一个锁存器之外的每一相继锁存器选择另一较大的或相同的左移位来更新用于下一拣选加法器90-1的和的D。拣选定时链的最后一个锁存器在其清零时选择输入到D的右移值,从而保持定时链静止且对至少一个地址周期[D]=[来自设置96的D]。不作出任何输入选择的拣选定时链锁存器使得最后一个D值重复,这是静止的情况。如果在拣选定时链的一个周期期间求和的多倍[D]为Q,则ROM 90-2可恰好在D再次保持其最小值(首先从设置96发送)时输出另一1位。由此,设置96中的D输出到读粘合中,且逻辑90中的Dx选择选择对逻辑90中D的输入,其中没有比拣选定时链中的锁存器的个数多2的更多不同的输入,且大多数情况下可能更少。因为此处呈现为最不需要的逻辑,所以对于写数据端口没有拣选定时链,且D对NOR、B、A中较低地址的所有拣选保持在相同的x1值上。
对于读和写数据端口,对于关于特定端口的I区段的设置96的每一翼选择直接输入到对应该端口的行的逻辑90的翼选择。同样,逻辑90中的每一有效从对应行的设置96中的有效输入。新向量96不输入到逻辑90中的任何附加锁存器。新向量96-1对每一新向量设置锁存单个地址周期。对下一单元选择98-3的每一翼选择从作为逻辑90的翼门的2输入AND输入,它由逻辑90的翼选择以及行中对应于一行的非新向量96-1输入。在逻辑90的粘合中形成3输入AND门,即ROM单元门,并且从ROM 90-2、逻辑90的有效以及非新向量96-1输入。下一单元选择98-3中的每一有效从对应行的逻辑90中的ROM单元门输入。访问寄存器98中的每一CFIX、NSEL、A的锁存器从对应行中的逻辑90中的CFIX、NSEL、A的锁存器输入,逻辑90NSEL是先前所描述的粘合逻辑。
对于读数据I端口,每一数据98-2直接由经由与数据98-2一样宽的路径(未示出)来自存储器区段92的扇出读数据输入。数据98-2的锁存器对来自访问寄存器98中读粘合的预读定时链的最后一个锁存器的单个锁存启用。用于端口的区段中的定时链对存储器区段92的每一访问都是活动的,用于在来自从端口到区段的泡76的下一发送/接收数据信号之前预读数据。每一读端口的数据98-2输出到读数据选择,它是访问寄存器98的读粘合逻辑的数据宽的数据选择。对读数据选择的选择输入在读/写请求98-1时产生一个地址周期的脉冲,以对泡245的一个地址周期输出来自用于该端口的存储器区段92的所有读数据位(已被访问且保存在读/写数据98-2中),用于一般在许多地址周期之前的对存储器92的一次访问。读和写数据端口两者的来自泡76的2V-1个发送/接收数据信号输入到相同数量的读/写请求98-1,且每一个直接将一组信号锁存到其中。锁存器对于写端口的置位并保持(set-and-hold)动作总是在发信号通知置位时清零。用于读端口的锁存器自由地锁存每一地址周期的置位或清零。来自I端口的信号可在每一地址周期出现。从一端口到一I区段的信号在每Q个地址周期可出现不多于一次。由此,且对于每一I端口,时间是Q个地址周期在对同一区段发信号通知或请求另一预读或后存储之前在I区段中进行一次预读或一次后存储。
由此,读和写端口两者都向I区段发送发送/接收数据信号。发送/接收数据信号响应于其访问寄存器98的某一请求98-1从读端口发送,该请求请求发送自从对存储器区段92的最后一次预读以来保存在该端口的数据98-2中的下一读数据。数据98-2中所请求的读数据经由访问寄存器98中的读数据选择发送到请求端口,并使用用于读数据方向的箭头250发送到泡245。以此方式,发送/接收数据信号响应于其访问寄存器98的某一请求98-1从写端口发送,该请求请求接收写数据并将其保存在数据98-2中。写数据通过在写数据通过泡245和箭头240到达并扇出到所有存储器的所有I区段的所有数据98-2时锁存并保存请求98-1和数据98-2两者来锁存在数据98-2中。仅由I端口请求的所选翼中的一个I区段锁存并保存写数据。由此,对于写数据,请求98-1通过启用其来自2输入OR的输出的锁存器、写请求锁存启用、访问寄存器98的粘合逻辑来锁存并保存关于设定的设置。写请求锁存启用具有来自请求98-1的非输出的一个输入以及来自行和端口的另一输入,其中I区段72的优先级逻辑的2V-1个输出中相应的一个用于对I区段所需的对存储器区段92的访问排序。用于等待直到后写入写数据的每一锁存且保存的请求98-1将其非输出输出到其相应读/写数据锁存器98-2的所有锁存启用中,从而锁存并保存了写数据,直到以对由优先级逻辑控制的访问寄存器98的写访问锁存器的设置清除该读/写请求之后。
作为I区段72的单数粘合逻辑的一部分的访问优先级逻辑选择接着要使用需要利用区段的存储器区段92的I区段的访问寄存器的所有那些写或读的存储器的访问。访问优先级逻辑从2V-1个可能需要的位输入中的每一个接收一个或多个位输入,作为用于指示尽可能快地访问存储器区段72的每一当前需求的所有必要的位条件。由此,I区段访问其自己的关于指示其用于读的数据或用于写的数据空间未准备好的端口的存储器区段92(I区段的访问寄存器98的一行)。I区段通过向端口发送其预读(早先读取的)数据且由此需要从存储器区段92获得另一数据,或通过从端口接收写数据且由此需要通过完成将所保存的写数据写入(延迟的写)存储器区段92中来恢复其数据空间,而对端口变为数据未准备好。访问优先级逻辑具有用于对2V-1个I端口可能需要的访问存储器的相同数目的行的2V-1个输出信号的输出。仅向访问寄存器98中关于具有最高优先级的I端口的行发信号通知以继续存储器区段72的单次访问。关于刚获得访问的I端口的任何下一访问需求需要再次进入访问优先级逻辑的队列中。对访问优先级逻辑的一个输入的写的每一可能需求在准备其中服务单个相应的写I端口、各自来自读/写请求98-1的位以及翼选择粘合98的I区段时具有访问寄存器98的单行的两个必要条件位。由此,每一当前的写访问需要将两组条件位输入到访问优先级逻辑的一个输入中,从而在准备关于每一写或读端口的每一选中I区段中的接下来需要的写数据空间或读数据时对访问存储器排队。每一当前的读访问需要将三组条件位输入到访问优先级的一个输入中。访问优先级逻辑具有用于供存储器区段92的任意使用的两个单个位的必要条件的一个附加2位输入:存储器区段不对写忙碌和存储器区段不对读忙碌。存储器区段不对写忙碌输出为从存储器区段对写忙碌定时链的每一锁存器的逻辑NOT输入的值的逻辑AND。以此方式,存储器区段不对读忙碌输出为从存储器区段对读忙碌定时链的每一锁存器的逻辑NOT输入的值的逻辑AND。存储器区段对写忙碌定时链的第一个锁存器从泡97(图13)的写访问线输入。存储器区段对读忙碌的第一个锁存器从泡97的读访问线输入。从访问寄存器98到存储器区段92的泡97的读线从具有与读端口一样多的输入的I区段粘合的读访问采集器逻辑OR输入。从访问寄存器98到存储器区段92的泡97的写线侧从具有与写端口一样多的输入的I区段粘合的写访问采集器OR输入。读访问采集器由访问寄存器98的读粘合的读访问的少于2V-1个锁存器输入,而写访问采集器由同样属于访问寄存器98的写粘合的写访问的互补的另外少于2V-1个锁存器输入。
写访问锁存器具有单个位的输入,并且被设置为使得响应于访问优先级的相应输出写入存储器区段92。写访问采集器是对3输入的获得下一单元选择OR写粘合的一个输入,它是对CFIX、NSEL、A、翼选择和有效98-3的锁存启用。对获得下一单元选择的另两个输入是有效和阴影写访问的NOT,它们都是访问寄存器的锁存器。阴影写访问从2输入AND粘合输入,后者的输入是请求98-1和NOT或翼选择。
I区段72的写数据选择粘合响应于写访问选择关于相应写端口的读/写数据98-2中的该访问的相应写数据,以将所选择的写数据通过与图13中未示出的数据一样宽的数据路径发送到存储器区段92。写数据选择具有用于那些读/写数据98-2的足够的不同数据输入作为用于所有写端口的输入,其中每一选择由分别针对所选择数据的不同写访问来选择。写数据选择的输出连同通过作为泡97中两条线之一的写访问采集器的写访问信号一起是对存储器区段92的输入。读访问采集器输出到泡97中的另一条线。由访问寄存器98的写访问选择的C位下一单元选择值作为单元选择值通过解码器88以及对存储器区段92的单元的2C个启用发送。下一单元选择选择器是访问寄存器98对于读和写数据两者的粘合,其中有各自为C位宽的2V-1个输入,且对2V-1个不同单元选择值的选择在读和写数据端口之中分配。由此,多个写访问选择访问寄存器的相应数目的CFIX、NSEL、A,而读访问选择相应的剩余的所有2V-1个CFIX、NSEL、A。最后,在写数据侧,关于访问寄存器的写数据未准备寄存器具有输入到该锁存器的2输入AND,其中AND的一个输入来自设置96中的相应新向量,而另一个是相应的读/写请求98-1。写数据未准备具有从其2输入OR输入的锁存启用,该2输入OR的输入是写数据未准备和写数据访问(两者都是相应的锁存器)的NOT。
对于读数据,每一访问优先级逻辑输入来自访问寄存器98的相应下一单元选择有效、读访问有效和翼选择,所有的每一读端口包括单独的优先级输出和结果。三个输入信号的AND指示对进入存储器的特定端口的需求。一次仅一个端口通过访问优先级,然后仅各自为两个存储器对读忙碌和存储器对写忙碌定时链的长度的每一最小时间段通过。访问优先级的读输出是对作为关于每一读端口的访问寄存器98的读粘合的锁存器的读访问有效。用于读访问有效的锁存启用是具有来自访问有效和读/写请求98-1的NOT的相应输入的2输入OR读粘合,这些在关于每一读端口的每一I区段中。每一读访问有效和相应的访问优先级逻辑输出具有形成关于相应端口的每次访问发射一次的结果,其中访问有效防止一次发射再次由访问优先级逻辑输出激发。每个相应的一次发射来自从其访问有效的NOT接收输入并从I区段的访问优先级逻辑接收其输出的2输入AND。一次发射设置了沿读访问定时链向下的定时位,该定时链的第一个锁存器是输入读访问采集器98以发送对存储器区段92的访问的读访问。沿读访问定时链进一步向下,定时链锁存器被输入到同样属于访问寄存器的读数据准备,它锁存并保存直到产生读/写请求98-1的脉冲。由此,每一读数据准备具有其读粘合的2输入OR,该读粘合的输入是同一读数据准备和相应的读/写请求98-1的NOT。关于访问寄存器98的每一相应线路AND节点77上的每一读数据准备信号接收读粘合的2输入线路AND驱动器OR的输出,该读粘合的输入是翼选择和读数据准备的NOT,所有这些都分别属于访问寄存器。由此,通过未选中的翼迫使相应的读数据有效信号启用相应的线路AND。读访问定时链的最后一个锁存器对经由从存储器区段92到I区段(未示出)的所有读/写数据98-2的数据路径从存储器区段92访问的读数据进行采样。
锁存器之间的数据路径被提供给锁存器的数据输入以接收数据,但是接收锁存器不接收直到其锁存被启用之后提供的数据。一旦数据被接收,它即由锁存器输出,直到对其锁存机制的下一次启用。数据从一个锁存器启用时间到下一个在锁存器之间行进,其中所有的锁存时间被认为是同步的且在每一地址周期上。
对于关于写端口锁存器的设置数据96的每一相应行,写粘合与启用除新向量锁存器之外的所有锁存器的写设置数据启用的每一6门控输入逻辑OR从[新向量]OR[非有效96]OR[非有效90]OR[[非有效98]AND[拣选加法器90-1的进位输出]]OR[[写访问98]AND[拣选加法器90-1的进位输出]]OR[[阴影写访问98]AND[拣选加法器90-1的进位输出]]输入,且由此,关于写端口的设置数据96的锁存器C-A-NMAX、NMAX、B、A、D、NMSK、有效、新向量和翼选择以及所有行被启用。每一新向量96的锁存启用总是被启用。然而对于设置90的每一写数据行,写粘合90的每一3输入写较低地址输入选择OR在从[新向量96]OR[非有效90]OR[拣选加法器90-1的进位输出]输入时选择来自设置数据96的输入,否则它选择来自拣选加法器90-1的输入。再一次,对于设置90的其每一写行,写粘合90的每一6输入写较低地址锁存启用OR从[非ROM 90-1]OR[新向量96]OR[非有效90]OR[非有效98]OR[写访问98]OR[阴影写访问98]输入,并且由此,逻辑90的写端口锁存器NOR、B、A被启用。对于写,设置90的每一行,写粘合90的每一4门控输入写处理逻辑锁存启用OR从[新向量96]OR[非有效90]OR[[非有效98]AND[拣选加法器90-1的进位输出]OR[[写访问98]AND[拣选加法器90-1的进位输出]]OR[[阴影写访问98]AND[拣选加法器90-1的进位输出]]输入,且由此,逻辑90的写端口锁存器CFIX、NMAX、D、NMSK被启用。
对于关于读端口锁存器的设置数据96的每一相应行,启用除新向量96之外的所有锁存器的读粘合96的每一6门控输入逻辑读设置数据启用OR从[新向量96]OR[非有效96]OR[非有效90]OR[[非有效98]AND[拣选加法器90的进位输出]]OR[[读访问98]AND[拣选加法器90-1的进位输出]]OR[阴影读访问98]AND[拣选加法器90-1的进位输出]输入,且由此,关于读端口的设置数据96的锁存器C-A-NMAX、NMAX、B、A、D、NMSK、有效、新向量以及翼选择和所有的行被启用。每一新向量96的锁存启用总是被启用。然而,对于设置90的每一读数据行,读粘合90的每一3输入读较低地址输入选择OR在从[新向量96]OR[非有效90]OR[拣选加法器90-1的进位输出]输入时选择从设置数据96输入,否则从拣选加法器90-1选择输入。再一次,对于设置90的其读和每一行,读粘合90的每一6输入读较低地址锁存启用OR从[非ROM 90-1]OR[新向量96]OR[非有效90]OR[非有效读访问98]OR[阴影读访问98]输入,且由此,逻辑90的读端口锁存器NOR、B、A被启用。对于设置90的每一读行,读粘合90的每一5门控输入读处理逻辑锁存启用OR从[新向量96]OR[非有效90]OR[[非有效98]AND[拣选加法器90-1的进位输出]]OR[[读访问98]AND[拣选加法器90-1的进位输出]]OR[[阴影读访问98]AND[拣选加法器90-1的进位输出]]输入,且由此,逻辑90的读端口锁存器CFIX、NMAX、D、NMSK被启用。
图15是用于将数据从所有存储器、所有I区段72读到一个读数据I端口100的典型路径。由此,在图15中有与读端口一样多的路径。用于所有存储器的I区段的数目是M·2B,且由此,M·2B是对来自所有存储器的读数据的每一位的逻辑OR,即M·2B向OR树284的宽度,其中图15示出一个典型的读端口。该路径如已描述的,单个I区段72的读/写请求98-1经由图12、13和14中的泡96、86和76发送一发送/接收数据信号,并设置一个地址周期以使用泡245的各个位的仅1/(2V-1)来通过图13的泡245在I区段72的读/写数据98-2中选出数据(读数据选择98),这些位在箭头250方向上的读端口中。由此,由一次读对一个读数据端口使用的泡245的位数是存储器的一次读访问的数据位数,即所有泡245的位的1/(2V-1)。由此,对于所有端口,即读和写数据端口两者,可使用泡245的所有位,即箭头250方向上读端口中的那些以及箭头240方向上写端口中的那些,来同时访问同一I区段。由于图15中的所有元素都属于一个读端口或者构成每一地址周期对存储器的一次访问的向量,因此不同访问的读数据可在每一地址周期从所有泡280进入所有的树284,这些数据每一个都以相同的速率通过该树并且以共同进入图15和14的泡225的访问的所有的位(对图15的所有树中的每一树284有一位)从该树的底部开始浮现。进入泡225的位用来自端口100的读访问定时链的最后一个锁存器的定时位捕捉到读端口的读/写数据缓冲区198-3(图14)中。
图16是用于将数据从一个写数据I端口100写入所有存储器、所有I区段72的典型路径。由此,在图16中有与写端口一样多的路径。用于所有存储器的I区段的数目是M·2B,由此,M·2B位是对任何一个写端口的所有存储器的写数据的M·2B向扇出286的宽度,其中图16示出一个典型的端口。该路径如已描述的,单个I区段72的读/写请求98-1(图13)经由图12、13和14的泡96、86和76发送一发送/接收数据信号,并设置该端口的读/写请求98-1。读/写请求98-1锁存刚经由箭头240到达泡245的各个位的1/(2V-1)的写数据。由此,对于通过经由未示出的路径对I区段的存储器区段92的写数据选择98从I区段72的读/写数据98-2中选出数据所需的一样多的地址周期,发送/接收信号被锁存在读/写请求98-1中,且写数据被锁存在读/写数据98-2中。由此,由对一个写数据端口的一次写使用的泡245的位数是存储器的一次写访问的数据位数,即所有泡245位的1/(2V-1)。由此,对所有端口,即读和写数据端口两者,可使用泡245的所有位,即箭头250方向上读端口的位和箭头240方向上写端口的位来同时访问同一I区段。由于图16中的所有元素都属于一个写端口或构成每一地址周期对存储器的一次访问的向量,因此一不同访问的写数据可在每一地址周期从泡225进入所有的扇出286,其中每一数据以相同的速率通过扇出出现,并且共同进入所选I区段的图16的泡282和图13的泡245的访问的所有位(对图16的所有扇出的每一扇出286一位)从扇出的顶部浮现。进入泡245的该数据以经由图12的泡96、86和76从写I端口100发送/接收来自泡76的数据的定时被捕捉到读/写数据98-2中。
对根据本发明的I区段的使用允许如由处理单元所需地以计算机处理单元的速率来流传送向量数据,并以全速率停止或流动该数据流。数据缓冲足以捕捉进行中的数据以及即将在进行中的数据,因为要求将要置于进行中的数据是在进行中的。地址周期中的进行时间来自通过门189(图14)的区段选择198-4中的发送/接收信号之一,从而使得来自任一个I区段72的读数据被锁存到缓冲区198-3中。缓冲区198-3的大小对所有的进行中读数据加上1是足够的,1是数据总是要经过的,对读和写端口都示为经由缓冲区通过读和写数据。
尽管写数据生产器必须在发送新的写向量的第一个写数据之前必须观察潜在等待(等待所有写数据准备好,泡260(图14)),但是写数据无需一个周期的通过数据以外的额外缓冲,因为缓冲区中放置的任何数据将总是由I区段72接收,且该数据最终在需要在至少Q个地址周期之后接收另一数据之前在其方便时被储存到其存储器92中。由此,I区段72不访问其存储器92中的大数据块,而是仅访问与每一地址周期中偏移、寻址和流传送的一样多的数据。偏移是除非单式因子Q的任何倍数以外的任何值的有符号非零固定跨距。由此,偏移在任一方向上分隔相继的地址寻址。
对于对相同数量的数据流在每一地址周期流传送相同数据量的数据的等效存储器,需要更多且更小的更复杂的I区段,大约是之前使用的乘以数据流的数量。与现有技术的流传送单元不同,全速率流传送仅对其中数据分配效率为100%的数据在使用所有交错区段时发生。除了对读数据首先在流中访问的那些区段之外,根据本发明的I区段具有充足但有限的时间,以在其和其工作负载方便时对下一需要的读数据智能地调度存储器92的内部启动的串行访问。
区段的当前工作负载通过由当前有效的逻辑90(图13)中的处理区段的个数所示出的进展中的当前活动向量的个数来反映。对所有可能当前活动的向量,在每Q个地址周期最多需要完成对存储器92的一次访问。对每一I端口需要完成每Q个地址周期一次访问,而可以有多达2V-1个可能当前活动的向量和端口。由此,如果所有区段都能够以全速率运作,则Q需要大于端口数乘以地址周期中的区段周期时间。同样,不仅偏移必须没有与Q公共的任何非单式因子,而且偏移的大小必须不大于G/(Q-1),因此一个向量的Q次相继访问将针对Q个不同的区段。
作为其当前工作负载的一部分,每一I区段还具有充足但有限的时间以在数据被方便地写入存储器92之前智能地延迟每一读/写数据98中的每一到达写数据,从而总是在另一数据到达读/写数据98之前写入数据。读/写数据98是用于每一数据流的每一I区段或用于一次访问、读或写的数据的端口中的寄存器缓冲区。来自/去往I区段的数据寄存器的、需要离开/进入该区段的寄存器的任何读/写数据,即读/写数据98在假定实现了所需的I/O位时将能够并行地完成这一步骤,附加的I/O位对于没有导致流传送数据无序到达的冲突使用的这一并行离开和进入数据路径(图15和16)是必需的。读/写数据寄存器98-2(图10)中的、从I区段的存储器92预取/后储存到I区段的存储器92的数据串行地完成。
每一I区段执行每一数据流的每一页的每一次访问,而无需在对每一数据流或I端口从地址10和设置70发送了每一页的第一个地址之后另外发送一地址。对于每一这样的第一地址和设置,每一I区段计算其自己的内部单元选择,将NOR、B、A加到D并加回到NOR、B、A中,并以要成为对区段的下一单元选择的ROM 90来测试每一次加。该过程在跨越当前页的边界之前停止,且停止由来自加法器90的进位引起。由此,I区段使地址必须被关联并且对每一数据流或端口100在每一页被发送到存储器和端口一次,并且对同一向量(读或写)的下一页的下一相继向量设置可(对全速率数据流动应当跨越页边界,且对写数据必须如此以避免产生在物理存储器中没有位置的写数据)在第一或任一先前设置的页由逻辑90处理、并由访问寄存器98访问而完成之前被发送到向量设置数据96。继续一向量的设置96(不是初始向量)中的内容等待被使用,直到前一设置完成访问其页,但是任何初始设置被直接使用,从而清除或覆盖了逻辑90和访问寄存器98中任何剩余的先前流的内容。由此,2V-1个端口的多个高速率数据流不强调单个串行地址流(进入地址10和70并使用关联30(图12))。
对于特殊情况数据流的一个示例,从指令数据或标量数据的高速缓存线的存储器中取出(读取)在过去是属于某一数量的数据的地址位对齐线内的已寻址数据的正单式分隔,其数据需要对寻址从某一初始地址开始并前进到线的高地址(如果尚未到那里)的线的所有地址为循环的检索次序。因此,如有必要,检索绕回到线的低地址,并且如果尚未在那里则前进到恰好比初始地址低的地址。通常,用于过去设计的线是相对较少固定量的数据,仅仅比1多几个。如过去所构造的,标量数据高速缓存的数据线内的数据仅是连贯的数据,这仅仅如同对于指令高速缓存的指令数据一样来完成。
本发明允许数据流对高速缓存线内的数据具有非单式固定间距。由于对存储器的所有这样的访问可以是向量的特殊情况,因此根据本发明的向量数据流将在需要时使用一个或两个向量对包括需要循环地址次序(高速缓存线)的向量在内的所有向量流工作。本领域技术人员可以认识到,根据本发明的专用I端口和I区段可适用于仅从小于一页的位对齐数据的固定大小的块中访问,或者以较小的最大值[V]进行访问,由此减少了用于设置的逻辑来处理地址。
本发明被描述为以二进制逻辑来实现,即能够仅有两种状态的逻辑。本发明在对基本设计的某些变体下也可适用于更高状态数逻辑格式(三进制、四进制等等)。更特别地,以三进制(三种状态)逻辑操作的分页存储器中的区段数是M·3B,以四进制(四种状态)操作的分页存储器中的区段数是M·4B,依此类推,其中M是翼数。由此,不论装置的逻辑状态数H是多少,每一翼都将有HB个存储器区段。同样,因此页标识仅仅是某一数量的较高地址数字,分页存储器中的页大小是元素数据(单个区段的单次访问的数据)的某一数字排序(H提高到某一整数值或幂)数,且区段大小是元素数据的HC。
在本发明的某些形式中,用于分页存储器的翼的缩略交错的每一旋转包含与交错的区段数相同的数量,即HB个缩略交错,H<Q<HB,其中Q是没有与H公共的非单式因子的大于H的数,Q>H>1,其中mod(H,mod(Q,H))≠0,使得S的值允许在重复下一旋转的接下来HB个缩略交错的模式之前在一个旋转的缩略交错之间进行规则分流。由此,如果H是大于1的任何数,如对于二进制、三进制或四进制逻辑等,则S=if(mod(H,mod(R,H))≠0,R,R-Q),其中R=mod(HA,Q)。由此,关于为S的值以及为二进制逻辑(H=2)选择R的mod(R,H)≠0并不意味着奇数性,而是指示R和H没有公共的非单式因子(R和H彼此互质)。同样,其中H=2的mod(R,H)=0并不意味着偶数性,而是意味着(R-Q)和H没有公共的非单式因子。由此,在二进制(H=2)中,Q没有等于2的因子且为奇数;在三进制(H=3)中,Q没有等于3的因子且可以是偶数(例如,4)或奇数(例如,5),但是不能是6或15,因为Q没有等于3的因子;在四进制(H=4)中,与二进制中非常相似,因为2和4具有相同的非单式因子值(即2),因此Q是奇数;如果H=6,则Q没有等于3或2的因子,如Q等于7、11、13、……、25等等,注意Q等于5是不被H<Q的要求所允许的。
当H本身是对如四的倍数那样的倍数幂(大于1)的某一较小的非单式质数时,则对本发明交错的效果如同H等于该较小的非单式质数的效果一样。由此,具有22种状态的四的倍数的数字如二进制数字一样起作用。由此,将Q求值为没有与H公共的非单式因子的数字(其中1<H<Q<HB)对于其任何H和Q都是有效的,其中mod(H,mod(Q,H))≠0,这使得Q为与H互质的奇数,其中H=2,4,8等。
如由G测得的在Q个区段之中交错的最大可能有效范围通常在S=R=+1或S=R-Q=-1时最佳,其中在|S|>1的情况下负的S=R-Q比正的S=R更有利,并且较小的|S|更有利。对S的两种起作用的值对于一对有效的A和Q值(一个A值和一个Q值)用不存在,其中Q如在每一缩略交错的HA个地址中那样与H互质,Q与H互质意味着H和Q不共享任何公共的非单式因子。然而,S的表达式S=if(mod(H,mod(R,H))≠0,R,R-Q)总是对S产生一个起作用值,尽管它可能不能起到很好的作用或实现起来是不切实际的。对G的求值对于交错工作如何良好提供了丰富的信息,G越大越好并且至少等于HA是最小程度适当的。按照H,G=if(mod(H,mod(R,H)≠0,HA·trunc((HB-Q-R+1)÷S)+Q+mod(HB-Q-R+1,S),HA·trunc((Q-HB)÷S)+1+R)。
本发明由此提供了一种存储器体系结构和交错方案,其中存储器具有用于将虚拟存储器空间映射到多个不同页大小和数据大小的任何混合的灵活物理存储器空间。该存储器方案可用于所有大小以及翼排列和对分页存储器可用的每一翼的区段的数目的存储器,并且使用串行的、跨距起始并行或同时起始并行访问、或这一数据和访问类型的任意组合,可用于标量和向量数据。尽管位和字段位置被描述为从左到右,且子表和交错被描述为从上到下,但是可选择与硬件实现相一致的任何次序,而不脱离本发明的范围。
尽管本发明已参考较佳实施例来描述,但是本领域的技术人员将认识到可以在形式和细节上作出改变而不脱离本发明的精神和范围。
Claims (63)
1.一种用于对多个存储器区段寻址的装置,其特征在于,有多个缩略交错,每一缩略交错对一组不同的一个以上且少于全部的存储器区段寻址,所述交错被设置和安排成共同地对所有所述存储器区段寻址。
2.如权利要求1所述的装置,其特征在于,每一交错响应于相应的有序数据和所述多个交错使得对每一交错的每一同样选择的数据选择一不同的存储器区段的操作,来对所述存储器区段寻址。
3.如权利要求1或2所述的装置,其特征在于,所述交错各自对一组不同的Q个存储器区段寻址,其中Q是大于1且小于所述存储器区段的数目的数。
4.如前述任一权利要求所述的装置,其特征在于,每一交错与其它交错彼此偏移。
5.如权利要求2至4中任一项所述的装置,其特征在于,所述存储器具有H个状态的地址逻辑,且所述Q没有与H公共的非单式因子。
6.如权利要求5所述的装置,其特征在于,所述存储器区段的数目是HB,其中B是大于1的整数。
7.如前述任一权利要求所述的装置,其特征在于,有具有与H公共的至少一个非单式因子的多个交错,每一交错对没有与H公共的非单式因子的多个存储器区段寻址。
8.如前述任一权利要求所述的装置,其特征在于,所述交错具有公共的区段使用时间段。
9.如前述任一权利要求所述的装置,其特征在于,还包括响应于将一区段选择序列交错的输入的区段选择设备。
10.如权利要求3和9所述的装置,其特征在于,所述区段选择设备为每一交错定义一行和列的表,所述表包括:
L个对齐的行,每一行包含Q个可寻址位置,其中L>1,以及
每一列中的存储器区段选择,它可在对所述列的行之一中的一个位置寻址时被访问。
11.如权利要求10所述的装置,其特征在于,所述区段选择设备包括:
第一存储器,且所述表标识第一交错,以及
第二存储器,它提供对所述表的偏离以构造多个第二交错。
12.如权利要求10或11所述的装置,其特征在于,每一表还包括:
包含R个可寻址位置的剩余行,其中0<R<Q,所述剩余行与所述L行对齐,使得所述剩余行的第一个位置在与所述L行的第一个位置相同的列中。
13.如权利要求10至12中任一项所述的装置,其特征在于,用于连续交错的连续表的所述行的第一个位置与前一表偏移S,其中S=R或者S=R-Q。
14.如权利要求5和13所述的装置,其特征在于,H=2,且所述区段选择设备基于mod(mod(mod([A]-F+2A,2A),Q)+[B]·(S+2B)-K+2B,2B)来选择存储器区段,其中[A]和[B]是从输入中导出的值,F是与所述交错相关联的偏移,且K是区段选择值。
15.如权利要求14所述的装置,其特征在于,F和K是0,且所述区段选择设备基于值mod(mod[A],Q)+[B]·(S+2B),2B)来选择存储器区段。
16.如权利要求4以及权利要求6至15中任一项所述的装置,其特征在于,H=2。
17.如权利要求16所述的装置,其特征在于,每一交错包含2A个可寻址位置,其中A>B且2A=L·Q+R。
18.如前述任一权利要求所述的装置,其特征在于,还包括:
响应于所述输入的单元选择设备,用于选择已寻址存储器区段的存储器单元。
19.如权利要求9至18中任一项所述的装置,其特征在于,所述存储器包含M个翼,所述装置还包括:
响应于所述地址的翼选择设备,用于选择所述存储器的翼。
20.如权利要求6和19所述的装置,其特征在于,每一翼包含HB个存储器区段。
21.如权利要求19或20所述的装置,其特征在于,还包括用于对至所述翼选择设备的地址的一部分掩码以选择多个翼的掩码。
22.如权利要求21所述的装置,其特征在于,掩码的地址部分使得所述翼选择设备从具有相同的单元和区段地址的多个翼的每一个中选择一数据元。
23.如权利要求21或22所述的装置,其特征在于,所述掩码选择HΩ个翼和HΩ个旋转,以对于最大大小的数据通过HΩ个存储器区段来选择多个存储器单元。
24.如权利要求9至23中任一项所述的装置,其特征在于,所述区段选择设备是响应于所述输入从包括存储器、首尾循环进位加法器树及其组合的组中选择的。
25.如权利要求24所述的装置,其特征在于,所述区段选择设备包括逻辑树,并且所述装置还包括偏离设备、以及响应于所述树和所述偏离设备的无进位加法器。
26.如权利要求9至25中任一项所述的装置,其特征在于,所述区段选择设备还包括用于伪随机地更改区段选择次序的次序的伪随机生成器。
27.如前述任一权利要求所述的装置,其特征在于,所述多个缩略交错形成缩略交错的一个或多个可重复旋转。
28.如前述任一权利要求所述的装置,其特征在于,所有所述存储器区段被同等地寻址。
29.如权利要求9至28中任一项所述的装置,其特征在于,所述存储器区段中的至少某一些包含多个存储器区段的存储器单元中的向量,所述装置还包括响应于启动对向量数据的页的访问的向量标识的向量设置。
30.如权利要求18和29所述的装置,其特征在于,每一向量具有一初始地址和多个间隔的后续地址,所述向量设置包括:
用于接收多个向量的每一个的所述初始地址和间隔数据的设置装置,
响应于所述存储器的单元选择装置,用于使用与每一向量的初始和后续地址中相应的一个相关联的存储器单元选择来访问存储器单元,以及
响应于所述设置装置和所述单元选择装置的寻址逻辑,用于将存储器单元选择与所述多个向量的每一个的每一初始和后续地址相关联。
31.在具有多个存储器区段的计算机存储器中,每一存储器区段包含多个可寻址存储器单元,所述存储器被安排成储存向量,使得每一向量的数据元以交错模式被储存在不同存储器区段的存储器单元中,每一向量具有初始地址和表示后续地址之间间隔的间隔数据,所述改进包括,对每一向量:
设置装置,用于接收多个向量的每一个的所述初始地址和间隔数据;
响应于所述存储器的单元选择装置,用于使用与每一向量的所述初始和后续地址中相应的一个相关联的存储器单元选择来访问存储器单元;以及
响应于所述设置装置和所述单元选择装置的寻址逻辑,用于将存储器单元选择与所述多个向量的每一个的每一初始和后续地址相关联。
32.如权利要求30或31所述的装置,其特征在于,所述寻址逻辑包括:
第一锁存器,响应于所述初始地址和储存与所述初始地址相关联的单元选择的设置有效性指示,以及
计算器,响应于所述单元选择装置储存一单元选择来基于所述第一锁存器中的单元选择和所述间距为所述相应向量的相应后续地址计算有效后续单元选择;
并且所述单元选择装置包括:
第二锁存器,它响应于所述第一锁存器装置中的有效单元选择并响应于所述第二锁存器中无效储存的单元选择,用于储存对每一向量的所述有效单元选择并用于将所储存的有效单元选择发送给所述存储器,以及
启用,它响应于所述存储器指示它准备好接收单元地址来启用所述第二锁存器以将其储存的单元选择发送给所述存储器。
33.如权利要求32所述的装置,其特征在于,所述第二锁存器在发送到所述存储器之后将其单元选择无效。
34.如权利要求32或33所述的装置,其特征在于,所述计算器包括用于将所述间隔加到所述第一锁存器中的单元选择的加法器。
35.如权利要求30至34中任一项所述的装置,其特征在于,所述单元选择装置还包括用于储存与所述第二锁存器中的单元选择相关联的数据的缓冲区,由此向量元从所述存储器中选择性地预读并后写到所述存储器中。
36.如权利要求30至35中任一项所述的装置,其特征在于,所述计算机存储器包括多个可寻址存储器区段,每一存储器区段包含多个可寻址存储器单元,所述存储器的特征还在于,对每一存储器区段:
用于接收多个向量的每一个的所述初始地址和间隔数据的端口设置装置,
响应于所述存储器的接口装置,用于使用与每一向量的所述初始和后续地址中相应的一个相关联的区段选择来对存储器区段寻址,以及
响应于所述端口设置装置和所述接口装置的处理逻辑,用于将区段选择与所述多个向量的每一个的每一初始和后续地址相关联。
37.如权利要求36所述的装置,其特征在于,所述处理逻辑包括:
响应于初始地址和储存与所述初始地址相关联的区段选择的设置有效性指示的第三锁存器,以及
响应于所述接口装置储存一区段选择,来基于所述第三锁存器中的区段选择和所述间隔为所述相应向量的相应后续地址计算有效后续区段选择的第二计算器;
并且所述接口装置包括:
第四锁存器,它响应于所述第三锁存器装置中的有效区段选择并响应于所述第四锁存器中无效储存的区段选择,用于储存每一向量的所述有效区段选择并用于将所储存的有效区段选择发送给所述存储器,以及
第二启用,它响应于所述存储器指示它已准备好接收地址来启用所述第四锁存器,以将其储存的区段选择发送给所述存储器。
38.如权利要求37所述的装置,其特征在于,所述第四锁存器在发送给所述存储器之后将其区段选择无效。
39.如权利要求37或38所述的装置,其特征在于,所述第二计算器包括用于将所述间隔加到所述第三锁存器中的区段选择的加法器。
40.如权利要求36至39中任一项所述的装置,其特征在于,还包括多个可寻址翼,每一翼包含多个存储器区段,每一存储器区段具有在其翼内唯一的地址以及至每一其它翼的存储器区段的公共区段地址,所述区段访问装置可用于访问由所述存储器区段启用标识的所有翼中的存储器区段。
41.如权利要求40所述的装置,其特征在于,每一翼是独立可寻址的。
42.如权利要求30至41中任一项所述的装置,其特征在于,包括用于更新每一存储器页的每一向量的所述初始地址和间隔的装置。
43.一种用于对包含多个存储器区段的存储器寻址的数据结构,所述数据结构定义了一定义多个缩略交错的表,
所述表包括,对每一交错:
L个对齐的行,每一行包含Q个顺序可寻址位置,其中L>1,且Q是大于1且小于所述存储器区段的数目的数,以及
每一列中的存储器区段选择,它可在对所述列的行之一中的一个位置寻址时被访问;以及
所述表定义了有偏移关系的交错,使得所述交错基本同等地共同使用所有所述多个存储器区段。
44.如权利要求43所述的数据结构,其特征在于,所述存储器具有H个逻辑状态的地址逻辑,且Q没有与H公共的非单式因子。
45.如权利要求44所述的数据结构,其特征在于,所述存储器区段的数目是HB,其中B是大于1的整数。
46.如权利要求43至45中任一项所述的数据结构,其特征在于,所述表还包括:
对每一交错的包含R个可寻址位置的剩余行,其中0<R<Q,所述剩余行与所述L行对齐,使得所述剩余行的第一个位置在与所述L行的第一个位置相同的列中。
47.如权利要求46所述的数据结构,其特征在于,用于连续交错的行的第一个位置与前一表偏移S,其中S=R或S=R-Q。
48.如权利要求45和47所述的数据结构,其特征在于,H=2,且所述区段选择基于mod(mod(mod([A]-F+2A,2A),Q)+[B]·(S+2B)-K+2B,2B),其中[A]和[B]是从输入中导出的值,F是与所述交错相关联的偏移,且K是区段选择值。
49.如权利要求48所述的数据结构,其特征在于,F和K是0,且所述区段选择基于值mod(mod[A],Q)+[B]·(S+2B),2B)。
50.如权利要求43至49中任一项所述的数据结构,其特征在于,H=2。
51.如权利要求50所述的数据结构,其特征在于,每一交错包含2A个可寻址位置,其中A>B且2A=L·Q+R。
52.一种用于对包含多个存储器区段的存储器选择性地寻址的逻辑操作过程,包括以下步骤:
定义多个缩略交错,每一交错包含用于对一个以上且少于全部的多个存储器区段寻址,所述交错彼此偏移,使得所述交错基本同等地共同对所有所述多个存储器区段寻址;以及
以基于每一交错中的区段选择的排列的顺序对所述存储器区段寻址。
53.如权利要求52所述的过程,其特征在于,每一交错包含排列成Q个地址的L行和R个地址的单行的表的多个地址,以及每一列中的存储器区段选择,所述存储器区段选择可在对所述列的行之一中的一个位置寻址时被访问,其中Q是大于1且小于所述存储器区段的数目的数,且0<R<Q,并且对所述存储器区段寻址的步骤包括:
对所述表的一行中的一个位置寻址,以及
从所述列中输出对应于所寻址位置的区段选择。
54.如权利要求52或53所述的过程,其特征在于,所述存储器具有H个状态的地址逻辑,并且Q没有与H公共的非单式因子。
55.如权利要求52至54中任一项所述的过程,其特征在于,所述存储器区段的数目是HB,其中B是大于1的整数。
56.如权利要求55所述的过程,其特征在于,H=2且每一交错包含2A个存储器区段地址,其中A>B且2A=L·Q+R。
57.如权利要求52至56中任一项所述的过程,其特征在于,还包括以下步骤:
重复所述交错序列。
58.如权利要求52至57中任一项所述的过程,其特征在于,每一存储器区段还包括多个存储器单元,且所述过程还包括以下步骤:
对每一已寻址存储器区段的至少一个存储器单元寻址。
59.如权利要求52至58中任一项所述的过程,其特征在于,所述存储器包括多个翼,每一翼包含2B个存储器区段,并且所述过程还包括以下步骤:
选择一个翼,以及
对所选择的翼中的存储器区段寻址。
60.如权利要求59所述的过程,其特征在于,还包括以下步骤:
操作翼选择设备以从多个翼的每一个中选择数据元。
61.如权利要求60所述的过程,其特征在于,所述操作翼选择设备的步骤包括:
对至所述翼选择设备的地址掩码以使得所述翼选择设备对多个翼寻址。
62.如权利要求52至61中任一项所述的过程,其特征在于,还包括伪随机地更改所述区段选择序列。
63.一种如基本结合图1-16中的任一个示出并描述的用于对多个存储器区段寻址的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63055104P | 2004-11-23 | 2004-11-23 | |
US60/630,551 | 2004-11-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101069211A true CN101069211A (zh) | 2007-11-07 |
Family
ID=36498452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800397778A Pending CN101069211A (zh) | 2004-11-23 | 2005-11-21 | 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7779198B2 (zh) |
EP (1) | EP1825433A4 (zh) |
CN (1) | CN101069211A (zh) |
WO (1) | WO2006057949A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105340015A (zh) * | 2013-06-17 | 2016-02-17 | 美光科技公司 | 存储器拼片存取和选择模式 |
CN110287130A (zh) * | 2018-03-19 | 2019-09-27 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110322922A (zh) * | 2018-03-28 | 2019-10-11 | 三星电子株式会社 | 带内动态随机存取存储器纠错编码的设备和系统 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006057949A2 (en) * | 2004-11-23 | 2006-06-01 | Efficient Memory Technology | Method and apparatus of multiple abbreviations of interleaved addressing of paged memories and intelligent memory banks therefor |
US8190809B2 (en) * | 2004-11-23 | 2012-05-29 | Efficient Memory Technology | Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines |
ATE494582T1 (de) * | 2006-05-16 | 2011-01-15 | Nxp Bv | Speicherarchitektur |
US20110307672A1 (en) * | 2009-03-06 | 2011-12-15 | Rambus Inc. | Memory interface with interleaved control information |
US8819359B2 (en) * | 2009-06-29 | 2014-08-26 | Oracle America, Inc. | Hybrid interleaving in memory modules by interleaving physical addresses for a page across ranks in a memory module |
US8886898B2 (en) * | 2009-08-19 | 2014-11-11 | Oracle America, Inc. | Efficient interleaving between a non-power-of-two number of entities |
US8645628B2 (en) * | 2010-06-24 | 2014-02-04 | International Business Machines Corporation | Dynamically supporting variable cache array busy and access times for a targeted interleave |
JP5598337B2 (ja) * | 2011-01-12 | 2014-10-01 | ソニー株式会社 | メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム |
KR20120082230A (ko) * | 2011-01-13 | 2012-07-23 | 에스케이하이닉스 주식회사 | 랜덤 코드 발생회로를 포함하는 반도체 장치 및 반도체 시스템과, 데이터 프로그래밍 방법 |
EP2674855B1 (en) | 2012-06-14 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | An element selection unit and a method therein |
US9104532B2 (en) | 2012-12-14 | 2015-08-11 | International Business Machines Corporation | Sequential location accesses in an active memory device |
CN104252405B (zh) * | 2013-06-26 | 2018-02-27 | 腾讯科技(深圳)有限公司 | 日志信息的输出方法及装置 |
KR102202575B1 (ko) | 2013-12-31 | 2021-01-13 | 삼성전자주식회사 | 메모리 관리 방법 및 장치 |
US9436434B2 (en) | 2014-03-14 | 2016-09-06 | International Business Machines Corporation | Checksum adder |
US9582420B2 (en) | 2015-03-18 | 2017-02-28 | International Business Machines Corporation | Programmable memory mapping scheme with interleave properties |
US10241979B2 (en) * | 2015-07-21 | 2019-03-26 | Oracle International Corporation | Accelerated detection of matching patterns |
JP6131357B1 (ja) * | 2016-03-18 | 2017-05-17 | 力晶科技股▲ふん▼有限公司 | 半導体記憶装置とそのアドレス制御方法 |
EP4147874A1 (en) | 2017-01-31 | 2023-03-15 | Hewlett-Packard Development Company, L.P. | Accessing memory units in a memory bank |
US10996949B2 (en) | 2019-05-10 | 2021-05-04 | International Business Machines Corporation | Address generation for high-performance vector processing |
CN111427805B (zh) * | 2020-03-19 | 2023-04-07 | 电子科技大学 | 一种基于页模式操作的存储器快速访问方法 |
CN115052042B (zh) * | 2022-06-07 | 2023-05-26 | 成都北中网芯科技有限公司 | 一种高性能多通道共享缓存的实现方法 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293607A (en) * | 1991-04-03 | 1994-03-08 | Hewlett-Packard Company | Flexible N-way memory interleaving |
JPH0775015B2 (ja) * | 1991-12-19 | 1995-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ通信及び処理システム並びにデータ通信処理方法 |
US5379393A (en) * | 1992-05-14 | 1995-01-03 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Cache memory system for vector processing |
US5485594A (en) * | 1992-07-17 | 1996-01-16 | International Business Machines Corporation | Apparatus and method using an atomic fetch and add for establishing temporary ownership of a common system resource in a multiprocessor data processing system |
US5596686A (en) * | 1994-04-21 | 1997-01-21 | Silicon Engines, Inc. | Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer |
EP0791265B1 (en) * | 1994-11-10 | 2002-01-30 | Brooktree Corporation | System and method for generating video in a computer system |
JPH08315570A (ja) * | 1995-05-15 | 1996-11-29 | Mitsubishi Electric Corp | 半導体記憶装置 |
US5999189A (en) * | 1995-08-04 | 1999-12-07 | Microsoft Corporation | Image compression to reduce pixel and texture memory requirements in a real-time image generator |
US5825710A (en) * | 1997-02-26 | 1998-10-20 | Powerchip Semiconductor Corp. | Synchronous semiconductor memory device |
US6381668B1 (en) * | 1997-03-21 | 2002-04-30 | International Business Machines Corporation | Address mapping for system memory |
JPH10301842A (ja) * | 1997-04-25 | 1998-11-13 | Nec Corp | メモリ制御装置 |
JP4236713B2 (ja) * | 1997-07-30 | 2009-03-11 | ソニー株式会社 | 記憶装置およびアクセス方法 |
US6925589B1 (en) * | 1998-10-29 | 2005-08-02 | International Business Machines Corporation | Method for translating physical cell-coordinates of a memory product to n-dimensional addresses |
US6480943B1 (en) * | 2000-04-29 | 2002-11-12 | Hewlett-Packard Company | Memory address interleaving and offset bits for cell interleaving of memory |
US6430672B1 (en) * | 2000-07-17 | 2002-08-06 | International Business Machines Corporation | Method for performing address mapping using two lookup tables |
US6665768B1 (en) * | 2000-10-12 | 2003-12-16 | Chipwrights Design, Inc. | Table look-up operation for SIMD processors with interleaved memory systems |
US6807602B1 (en) * | 2000-10-30 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | System and method for mapping bus addresses to memory locations utilizing access keys and checksums |
US6732253B1 (en) * | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
US6931518B1 (en) * | 2000-11-28 | 2005-08-16 | Chipwrights Design, Inc. | Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic |
US6889304B2 (en) * | 2001-02-28 | 2005-05-03 | Rambus Inc. | Memory device supporting a dynamically configurable core organization |
US7487505B2 (en) * | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US6807603B2 (en) * | 2002-02-22 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | System and method for input/output module virtualization and memory interleaving using cell map |
US6874070B2 (en) * | 2002-02-22 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | System and method for memory interleaving using cell map with entry grouping for higher-way interleaving |
US6895488B2 (en) * | 2002-05-22 | 2005-05-17 | Lsi Logic Corporation | DSP memory bank rotation |
US7337275B2 (en) * | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US7266132B1 (en) * | 2002-10-24 | 2007-09-04 | Cisco Technology, Inc. | Flexible memory allocation for data transmission |
US6912616B2 (en) * | 2002-11-12 | 2005-06-28 | Hewlett-Packard Development Company, L.P. | Mapping addresses to memory banks based on at least one mathematical relationship |
US6941438B2 (en) * | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7515588B2 (en) * | 2004-03-18 | 2009-04-07 | Intel Corporation | Method and apparatus to support a large internet protocol forwarding information base |
US7634621B1 (en) * | 2004-07-13 | 2009-12-15 | Nvidia Corporation | Register file allocation |
JP4561246B2 (ja) * | 2004-08-31 | 2010-10-13 | ソニー株式会社 | メモリ装置 |
US7266651B1 (en) * | 2004-09-07 | 2007-09-04 | Sun Microsystems, Inc. | Method for in-place memory interleaving and de-interleaving |
US7318114B1 (en) * | 2004-10-29 | 2008-01-08 | Sun Microsystems, Inc. | System and method for dynamic memory interleaving and de-interleaving |
WO2006057949A2 (en) | 2004-11-23 | 2006-06-01 | Efficient Memory Technology | Method and apparatus of multiple abbreviations of interleaved addressing of paged memories and intelligent memory banks therefor |
WO2007002324A2 (en) * | 2005-06-24 | 2007-01-04 | Metaram, Inc. | An integrated memory core and memory interface circuit |
KR100699491B1 (ko) * | 2005-07-19 | 2007-03-26 | 삼성전자주식회사 | 인터리빙 방법 및 그 장치 |
US7471589B2 (en) * | 2005-08-23 | 2008-12-30 | Samsung Electronics Co., Ltd | Semiconductor memory devices, block select decoding circuits and method thereof |
-
2005
- 2005-11-21 WO PCT/US2005/042107 patent/WO2006057949A2/en active Application Filing
- 2005-11-21 CN CNA2005800397778A patent/CN101069211A/zh active Pending
- 2005-11-21 EP EP05849711A patent/EP1825433A4/en not_active Withdrawn
- 2005-11-21 US US11/719,926 patent/US7779198B2/en not_active Expired - Fee Related
-
2010
- 2010-07-07 US US12/831,400 patent/US8074010B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105340015A (zh) * | 2013-06-17 | 2016-02-17 | 美光科技公司 | 存储器拼片存取和选择模式 |
CN105340015B (zh) * | 2013-06-17 | 2018-01-19 | 美光科技公司 | 存储器拼片存取和选择模式 |
CN110287130A (zh) * | 2018-03-19 | 2019-09-27 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110287130B (zh) * | 2018-03-19 | 2024-03-08 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110322922A (zh) * | 2018-03-28 | 2019-10-11 | 三星电子株式会社 | 带内动态随机存取存储器纠错编码的设备和系统 |
CN110322922B (zh) * | 2018-03-28 | 2024-01-23 | 三星电子株式会社 | 带内动态随机存取存储器纠错编码的设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1825433A4 (en) | 2010-01-06 |
WO2006057949A3 (en) | 2007-04-19 |
US8074010B2 (en) | 2011-12-06 |
EP1825433A2 (en) | 2007-08-29 |
US20090043943A1 (en) | 2009-02-12 |
US20100312945A1 (en) | 2010-12-09 |
WO2006057949A2 (en) | 2006-06-01 |
US7779198B2 (en) | 2010-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101069211A (zh) | 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置 | |
CN1027103C (zh) | 分布处理存储器 | |
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
CN1069423C (zh) | 排序系统和方法 | |
CN87107224A (zh) | 大规模并行陈列处理系统 | |
CN1722130A (zh) | 可重配置运算装置 | |
CN1759393A (zh) | 一种将专用搜索寄存器和专用状态机寄存器与相关执行硬件集成以支持规则集合对数据的快速应用的可编程处理器装置 | |
CN100342349C (zh) | 错误推测之后的指令再执行的流水线外部跟踪缓冲器 | |
CN1842779A (zh) | 用于执行simd运算的数据处理系统及其方法 | |
CN1276359C (zh) | 用于检查和操作数据的存储器引擎 | |
CN1759354A (zh) | 用于对任意大小的正则表达式估值的方法和装置 | |
CN1416574A (zh) | 半导体存储器件 | |
CN104685497A (zh) | 通过过滤方法操作的聚合/分组的硬件实现 | |
CN101064652A (zh) | 使用遗传算法用于智能物件的服务到设备映射 | |
CN1991791A (zh) | 使用非易失性存储器作为高速缓存的存储设备及运行方法 | |
US11126690B2 (en) | Machine learning architecture support for block sparsity | |
CN1717654A (zh) | 数据处理器的循环控制电路 | |
CN101685388A (zh) | 执行比较运算的方法和模块 | |
Mitani et al. | Parallelizing exact and approximate string matching via inclusive scan on a GPU | |
CN101075213A (zh) | 只读存储器数据修补电路和方法、及其嵌入式系统 | |
CN1734415A (zh) | 分枝预测装置及分枝预测方法 | |
CN1278931A (zh) | 特别适于译码数字音频信号的数字信号处理器 | |
CN1133454A (zh) | 半导体集成电路 | |
CN1311357C (zh) | 通用资源访问控制器 | |
CN1956005A (zh) | 数据存取装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20071107 |