CN103890857A - 采用环形寄存器的可移位的存储器 - Google Patents

采用环形寄存器的可移位的存储器 Download PDF

Info

Publication number
CN103890857A
CN103890857A CN201180074427.0A CN201180074427A CN103890857A CN 103890857 A CN103890857 A CN 103890857A CN 201180074427 A CN201180074427 A CN 201180074427A CN 103890857 A CN103890857 A CN 103890857A
Authority
CN
China
Prior art keywords
storer
data
ring register
ring
displaceable
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.)
Granted
Application number
CN201180074427.0A
Other languages
English (en)
Other versions
CN103890857B (zh
Inventor
马修·D·皮克特
R·斯坦利·威廉姆斯
吉尔贝托·M·里贝罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN103890857A publication Critical patent/CN103890857A/zh
Application granted granted Critical
Publication of CN103890857B publication Critical patent/CN103890857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C21/00Digital stores in which the information circulates continuously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Static Random-Access Memory (AREA)
  • Executing Machine-Instructions (AREA)
  • Dram (AREA)

Abstract

可移位的存储器采用环形寄存器来移位在该可移位的存储器内的环形寄存器中存储的数据字的连续子集。可移位的存储器包括具有内置字级移位能力的存储器。该存储器包括存储数据字的多个环形寄存器。数据字的连续子集是可在该存储器内在多个环形寄存器中的多组环形寄存器之间从第一位置向第二位置移位的。该数据字的连续子集具有小于该存储器的总大小的大小。当移位该连续子集时,该存储器仅移位在该连续子集内存储的数据字。

Description

采用环形寄存器的可移位的存储器
相关申请的交叉引用
N/A
关于联邦资助的研究或开发的声明
N/A
背景技术
现代计算机及相关处理系统典型地包括处理器和某一形式的存储器。处理器通常负责执行计算机的各种计算任务,而存储器存储在计算任务中使用的以及由计算任务生成的数据。在这样的系统的几乎全部历史上,由处理器进行处理以及由存储器进行数据存储的体系结构区分被证明是成功的。
例如,典型的通用计算机通常包括中央处理单元(CPU)和主存储器,中央处理单元和主存储器通过一个或多个通信信道(例如,数据总线、命令总线及地址总线)彼此通信。典型地,CPU提供设施来执行各种算法和逻辑运算、提供操作序列以及以别的方式控制通用计算机的方面。例如,实际上所有CPU为从存储器中读取数据、向存储器写数据以及运行程序提供功能或运算,该程序包括使用该数据来执行预限定任务的一组指令。此外,CPU可以应对输入/输出(I/O),该输入/输出(I/O)允许与通用计算机外部的外围设备以及子系统的通信。在一些示例中,CPU甚至可以提供图形处理,以应对生成并更新图形显示单元(例如,监视器)。
相比之下,现代计算机的主存储器典型地提供一套相对较窄的能力,该主存储器能够包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、只读存储器(ROM)、可编程的ROM(PROM)、闪存以及多种其它存储器类型中的一个或多个。这些能力中主要的是存储由CPU运行和使用的计算机程序和数据。在可以在现代计算机的主存储器中发现的或经常与现代计算机的主存储器关联的其它有限能力中的是特定存储器管理功能。例如,主存储器的DRAM存储器子系统可以具有用于自动刷新在其内存储的数据的电路。
然而,处理器中的处理和存储器中的存储的历史体系结构区分的确存在特定问题,这些问题随着时间推移变得越来越明显。特别地,将全部处理集中在CPU中而将主存储器归类为提供存储的传统体系结构区分可能且的确出现问题,尤其当正被处理的数据的量的规模增加时。例如,为了处理或以别的方式操纵大的数据集,典型地必须经由数据总线在CPU和存储器之间来回多次传送全部数据。例如,即便使用复杂的缓存及预取机制,数据总线也可能对整体处理性能带来严重瓶颈。
附图图示
参照结合附图进行的下面详细描述,依照本文描述的原理的示例的各特征可以更容易被理解,其中相同的附图标记指相同的结构部件,并且其中:
图1A图示根据依照本文描述的原理的示例下移在可移位的存储器内的线性阵列中存储的数据的连续子集的示例。
图1B图示根据依照本文描述的原理的示例上移在可移位的存储器内的线性阵列中存储的数据的连续子集的示例。
图2图示根据依照本文描述的原理的示例的可移位的存储器的框图。
图3图示根据依照本文描述的原理的示例的增强的解码器的真值表。
图4A图示根据依照本文描述的原理的示例的可移位的存储器的示意图。
图4B图示根据依照本文描述的原理的另一示例的可移位的存储器的示意图。
图5图示根据依照本文描述的原理的示例的可移位的存储器系统的框图。
图6图示根据依照本文描述的原理的示例的在可移位的存储器中移位数据的方法的流程图。
特定示例具有其它特征,这些其它特征是除上面参考的附图中图示的特征以外和替代上面参考的附图中图示的特征中的特征。下面参照上面参考的附图详细描述这些及其它特征。
具体实施方式
依照本文描述的原理的示例提供一种存储器中的数据移位能力。特别地,根据本文描述的原理的各示例,该数据移位能力实质上被内置在采用环形寄存器的存储器中。该内置的数据移位能力提供在存储器中存储的数据的连续子集的横向平移或移位,同时环形寄存器促进从所选择的存储器位置读取数据和向所选的存储器位置写入数据。例如,所存储的数据(例如,数据字)的连续子集可以在存储器中从第一存储器位置向第二存储器位置移位。当向第二位置移位时,所存储的数据保持该连续子集内的有序关系。此外,根据各示例,该移位完全地在该存储器中发生。特别地,移位通常是在不使用位于存储器外的源(如处理器)的情况下实现的,并且不涉及在处理器和存储器之间移动数据。因此,具有内置的移位能力的存储器在本文中被称为“可移位的存储器”。
根据一些示例,由本文的可移位的存储器提供的移位可以用来‘打开’存储器中的位置,在该位置中可以插入新的数据字。特别地,当在可移位的存储器内通过移位移动所存储的数据的连续子集时,可以使位于所存储的数据的连续子集上方或下方的存储器位置可用于数据插入。根据其它示例,移位可以用来删除或‘覆写’在该连续子集的开始上方和该连续子集的末尾下方之一处存储的数据。特别地,当可移位的存储器移位该连续数据时,可以用该连续子集本身的一部分覆写在该连续子集上方或下方存储的数据。例如,如果所存储的数据的连续子集是可移位的存储器中较大数据结构(例如,数据字的阵列)的一部分,则该移位可以具有删除该较大数据结构(例如,该数据字的阵列)中的数据的一部分(例如,一个或多个数据字)的效果。根据一些示例,在可移位的存储器中移位数据来插入数据或删除数据可以比不使用可移位的存储器通常可能的时间在更短的时间内实现,并且在一些示例中在显著更短的时间内实现。事实上,根据一些示例,该移位可以使用可移位的存储器在基本恒定的时间(例如,固定数量的时钟周期)内实现。
相比之下,依赖处理器来例如执行移位的传统存储器通常需要与被移位的数据的量成比例的许多时间。例如,在传统的存储器中移位数据典型地涉及处理器读取待移位的数据以及然后将该数据在另一位置写回至该存储器。由于传统存储器的结构和功能,读取和写入可以例如由处理器逐字地执行。由于被移位的数据中的每个数据字是首先由处理器从传统存储器中读取的并且然后接着写回至该传统存储器,所以移位数据的时间通常例如与被移位的数据的量或长度(例如,数据字的数量)成比例。数据的量越大,移位操作将花费越长时间。
此外,当移位数据时,传统的存储器依赖位于该传统的存储器外部的资源(例如,处理器)来执行读取和写入。由于执行移位的资源位于传统的存储器外部,所以在逐字移位中涉及的每个数据字必须通过某一形式的数据总线或类似的通信信道在外部资源和传统的存储器之间传递。数据总线或类似的通信信道实际上可能限制读取操作和写入操作的速度,结果可能限制移位的总体速度。因此,由于使用传统存储器执行移位的数据总线速度方面的影响和/或成比例的时间方面的影响,移位大的数据子集可能在处理时间方面变得惊人地昂贵。
依照本文描述的原理,可移位的存储器具有内置的移位能力,使得为执行移位,数据例如不必由外部资源读取并然后写入。将所存储的数据的连续子集被识别(例如,使用地址和长度)给可移位的存储器,并且指示该可移位的存储器对该连续子集进行移位。然后,由该可移位的存储器实现移位,并且该移位完全地在该可移位的存储器中发生。根据本文描述的原理的示例,该可移位的存储器基本上消除了与向外部资源传送数据或从外部资源传送数据关联的速度限制。此外,用于移位的时间可以基本上独立于例如连续子集的长度。
特别地,可移位的存储器中的移位可以例如用该可移位的存储器本身的电路实现。因此,根据一些示例,使用可移位的存储器的移位不需要顺序地读取和写入该连续子集的每个数据字。例如,使用可移位的存储器的移位可以以基本上同时的方式移位该连续子集中所有被存储的数据。因此,该可移位的存储器可以在基本上独立于该连续子集的长度的时间内实现该连续子集的移位。
在一些示例中,根据所描述的原理,可移位的存储器可以以基本上恒定的时间执行移位。“恒定的时间”指不论所存储的数据的连续子集的长度如何,移位该连续子集需要基本上类似的时间量。例如,根据一些示例,可以在单个时钟周期内移位任意长度的连续子集。在另一示例中,较短的连续子集可能仅需要单个时钟周期,而较长的连续子集可能需要两个或更多个时钟周期。然而,尽管可移位的存储器可能对较长的子集使用与相对较短的子集相比更多时间,但是由于所需要的时间不是与该连续子集的长度严格成比例,所以移位仍是以基本恒定的时间执行的。
在本文中,术语‘存储器’指能够接收并存储数据的任意种类的存储器。该存储器通常与可以由例如计算机处理器使用或在计算机系统中使用的存储器一致。特别地,按照本文的限定,存储器指能够在使用该存储器的计算机的操作期间被读取和写入的任意种类的存储器。例如,该存储器可以包括随机存取存储器(RAM)。该随机存取存储器可以是例如静态RAM(SRAM)。其它类型的存储器包括但不限于:动态随机存取存储器(DRAM)、闪存及可在计算机操作期间写入的类似的非易失性存储器、各种形式的光学存储器(例如,可再写的光盘)、磁性存储器(例如,计算机硬驱)以及基于锁存器、触发器(flip-flop)和其它双稳态结构的各种存储器结构。
此外在本文中,存储器可以包括多组存储器单元,这多组存储器单元共同地被称为‘寄存器’。接着,多个寄存器可以设置在阵列中。例如,这些寄存器可以被设置为寄存器的线性阵列。在另一示例中,这些寄存器被设置在二维(2-D)阵列中。还可以使用更高阶(例如,三维或更多维)的阵列。在一些示例中,在具有较大维度的阵列(例如,2-D阵列)上限定较低阶的阵列(例如,线性阵列)。例如,线性阵列可以通过寄存器的矩形2-D阵列上的寻址排布来限定。此外,阵列可以被分成子阵列。例如,2-D阵列可以被分成四个象限作为四个子阵列。根据各示例,该阵列可以是物理阵列或逻辑阵列。根据该阵列或如由该阵列限定的,物理阵列包括相对于彼此物理地排布或放置的寄存器。逻辑阵列包括寄存器的逻辑排布作为阵列。在逻辑阵列中,存储器单元的物理排布可以与例如由该阵列限定的逻辑排布不同。逻辑阵列可以使用例如地址间接引用(address indirection)来限定。
如本文限定的和使用的,存储器单元是保持或存储数据的电路或相关结构。此外,依照本文的限定,存储器单元可以存储数据的一个或多个“位(bit)”。例如,该位可以是二进制值(例如,‘0’或‘1’)且该存储器单元可以保持单个位。在另一示例中,存储器单元可以保持多个二进制值位。特别地,如本文限定的,存储器单元可以保持或存储包括该多个位的完整的数据字。例如,存储器单元可以保持4个、8个、16个、32个或64个二进制位。在又一示例中,存储器单元可以以其它形式(例如,十六进制值、模拟值等等)保持数据。特别地,如本文限定的存储器单元不局限于存储二进制格式的数据,而是在一些示例中可以保持或存储任意数据结构。然而,本文为了讨论目的,除非另有规定,否则自始至终通常使用二进制数据作为示例而不作为限制。
如本文使用的,‘寄存器’或等同的‘存储器寄存器’被定义为存储器单元的集合或分组。进一步地,在本文中,包括一组存储器单元的寄存器可以保持构成特定计算机系统的数据字的数据(例如,多个数据位)。因此,在本文中,寄存器的内容通常被称为‘数据字’。在一些示例中,存储器寄存器的存储器单元是物理地彼此相邻的。例如,存储器寄存器的第一存储器单元可以紧邻该存储器寄存器的第二存储器单元放置。在其它示例中,替代物理地共同放置或除物理地共同放置以外,存储器寄存器的存储器单元是逻辑上相关的。特别地,在一些示例中,相邻的存储器单元可以不必是物理地相邻的,而是逻辑地相邻的。
本文中,存储器寄存器还经常被称为‘存储器位置’。严格地讲,存储器位置是该存储器内的位置处的存储器寄存器,该位置由地址指定或识别。例如,该存储器寄存器是使用该地址访问的。然而,本文中,为了讨论简便,存储器寄存器通常被称为具有地址或位于地址。地址或位置可以例如与该存储器的可移位的单元(例如,数据字)关联。因此,‘位置’和地址可以在本文中可互换地使用。此外,根据一些示例,‘位置’可以用来指通过起始地址和结束地址指定的数据的连续集的位置。在其它示例中,该连续集的位置可以由起始(或结束)地址以及该连续集的长度指定。
依照本文的限定,由相邻的存储器位置限定的相邻的存储器寄存器可以是物理地相邻(即,位于彼此旁边的位置)或逻辑地相邻。根据一些示例,逻辑相邻性可以通过重叠逻辑存储器结构(例如,使用间接引用(indirection))来建立。例如,逻辑地相邻的存储器寄存器可以物理地彼此分开,但在采用交织(interleaving)的重叠存储器结构方面仍被认为是相邻的。同样地,该连续子集可以是物理地连续的(即,位于物理地相邻的存储器寄存器内)或逻辑地连续的。特别地,依照本文的限定,在该可移位的存储器的相邻环形寄存器中存储的数据字的连续子集取得与寄存器的相邻性类似的且由寄存器的相邻性表示的连续性。
如本文中限定的,‘环形寄存器’是包括多个互连的存储器单元的存储器寄存器,该多个互连的存储器单元被配置为以环形的方式在该多个存储器单元的相邻存储器单元之间移位或循环数据。特别地,在环形寄存器中移位或循环的数据在围绕该环形寄存器的环路或环中循环。因此,在移位的数量等于该环形寄存器的长度以后,数据通常将返回该环形寄存器内的原始或起始位置。该环形寄存器内的数据移位或数据循环可以是单向的或双向的(例如,可在左移或右移之间动态选择)。
在一些示例中,可以使用触发器实现该存储器寄存器,具体地实现该环形寄存器。例如,所谓的数据或‘D’触发器可以用来实现该可移位的存储器的环形寄存器。然而,依照本文的限定,环形寄存器不局限于使用传统触发器的实现方式。例如,根据本文描述的原理的各示例,可以用引线(wiring)且在一些示例中可以用逻辑电路将SRAM单元互连,以实现环形寄存器。此外,依照本文的限定,在可移位的存储器中使用的环形寄存器可以提供串行读取能力和/或串行写入能力。特别地,根据一些示例,可以通过对可移位的存储器的环形寄存器进行串行写入,用外部数据(例如,数据字)装载该环形寄存器或者对该环形寄存器进行编程。串行读取可以用来对例如在环形寄存器的存储器单元中的一个或多个存储器单元中存储的数据进行采样。例如,在串行写入中,数据位被逐一地提交至该环形寄存器的输入,然后被顺序地按时钟读入该环形寄存器的存储器单元中并且被存储在该环形寄存器的存储器单元中。类似地,例如,在串行读取期间所存储的数据位被顺序地按时钟读出该环形寄存器外并且以串行的方式被提供至输出。例如,按时钟读(clocking)可以围绕该环形寄存器的环路使数据位移位或循环。
进一步,本文中且如上面提到的,除非另有规定,否则由可移位的存储器执行的移位被限定为在该存储器内存储的数据的连续子集的横向平移。特别地,依照本文的限定,使用可移位的存储器的移位设定了在连续子集内存储的数据(例如,数据字)在该存储器内从第一位置向第二位置的横向平移(例如,上移或下移阵列)。此外,当将移位应用至所存储的数据的连续子集时,移位对该连续子集内存储的所有数据进行平移。而且,依照本文的限定,由可移位的存储器进行的移位不引起位于在该移位中涉及的数据的子集外部的数据的横向平移或移位。通常,该移位可以将数据移动一个或多个存储器位置或存储器地址的距离。例如,该移位可以在存储器内将数据向上或向下移动单个存储器位置。
本文中,方向‘向上’关于可移位的存储器内的存储器位置被限定为朝具有更小地址的位置的方向。方向‘向下’被限定为朝具有更大地址的位置的方向。因此,‘上移’被限定为将数据移位至具有比第一或起始位置的地址更小的地址的第二位置。相反,‘下移’引起将数据从具有更小地址的第一位置移动至具有更大地址的第二位置。然而,尽管根据一些示例移位方向是可控的或可选的,然而如本文使用的移位方向(例如,向上或向下)可以是完全任意。此外,本文中‘上移’和‘下移’的具体使用是用于讨论目的,而不作为限制。
图1A图示根据本文描述的原理的示例下移在可移位的存储器内的线性阵列中存储的数据的连续子集的示例。特别地,图1A图示多个环形寄存器,每个环形寄存器能够存储数据字。例如,数据字可以包括八个二进制位,每个位(例如,‘1’或‘0’)被存储在环形寄存器的八个存储器单元中单独的一个存储器单元内。进一步如所图示的,每个所图示的环形寄存器由范围从00到11的地址标识。图1A的左侧图示下移之前的多个环形寄存器,而右侧图示下移之后的相同的多个环形寄存器。
如所图示的,例如,可移位的存储器内的示例下移包括选择所存储的数据字的起始于地址04处的环形寄存器且终止于地址08处的环形寄存器的连续子集。在所图示的示例中,所选择的连续子集包含数据字{11001010,01001010,11111011,00000001,11011011}。然后,如在图1A的右侧图示的,可移位的存储器通过将所存储的数据字向下移动一个地址位置,下移数据字的所选择的连续子集。该下移保持该连续子集内的数据字的顺序,并且将该连续子集在环形存储器中放置在地址05和地址09之间。下移所存储的数据对紧邻该连续子集下方的环形寄存器(即地址09处)的内容进行覆写,并且用该被下移的连续子集的最后一个数据字(即,‘11011011’)取代那个环形寄存器的内容。进一步,使原本保持该连续子集的第一数据值的地址04处的环形寄存器成为不确定的,如由‘X’表示的。根据各示例,地址04处的环形寄存器可以保留下移之前存在的数据字(例如,‘11001010’)的副本,或者可以在下移之后被清零(例如,设置为‘00000000’)。
在一些示例中,例如,地址04处的环形寄存器可以用于插入来自外部源的数据字。根据一些示例,通过将数据字的单独位顺序地提交、按时钟读入或移位至地址04处的环形寄存器的存储器单元中(例如,串行写入),可以将所插入的数据字插入地址04处的环形寄存器内
图1B图示根据本文描述的原理的示例上移在可移位的存储器内的线性阵列中存储的数据的连续子集的示例。特别地,图1B图示多个环形寄存器,该多个环形寄存器中每个环形寄存器存储数据字(例如,‘abc’、‘def’等)。进一步如所图示的,每个所图示的环形寄存器由范围从00至11的地址标识。图1B的左侧图示上移之前的多个环形寄存器,而右侧图示上移之后的相同的多个环形寄存器。
如图1B中图示的,例如,可移位的存储器中的上移包括选择所存储的数据字的起始于地址03处的环形寄存器且终止于地址06处的环形寄存器的连续子集。然后,如图1B的右侧图示的,通过将所选择的连续子集中的所存储的数据字向上移动一个地址位置,可移位的存储器上移该所选择的连续子集。该上移保持该连续子集内的字的顺序,并且将该连续子集放置在地址02和地址05之间的环形寄存器中。上移所存储的数据字对紧邻该连续子集上方的环形寄存器(即,地址02处)的内容进行覆写,用被上移的连续子集的第一字(即,‘jkl’)取代那个环形寄存器的内容。进一步,使原本保持该连续子集的最后一个字的地址06处的环形寄存器成为不确定的,如由‘X’表示的。根据一些示例,地址06处的环形寄存器可以保留在上移之前存在的数据字(例如,‘stu’)的副本,或者可以上移之后被清零(例如,设置为‘000’)。在一些示例中,地址06处的环形寄存器可以用于插入例如来自外部源的数据。
根据各示例,可移位的存储器可以是通用计算机系统的主存储器的一部分。例如,可移位的存储器可以代表例如构成主存储器的存储器的子集。而且根据各示例,例如,该可移位的存储器不同于存储器单元、缓存以及经常被发现与微处理器中的其它组件(例如,算术逻辑单元、控制器等)集成在一起的其它相对小的存储器结构。特别地,根据各示例,依照本文的限定的可移位的存储器是主存储器的一部分,因此,与通用计算机系统或相关处理系统的处理器分离。此外,根据一些示例,可移位的存储器典型地包含比在处理器中存在的或可能在处理器中存在的存储器存储多一个数量或一个数量级以上的存储器存储。例如,可移位的存储器可以包括许多兆字节或甚至许多千兆字节的存储器存储,而处理器存储器存储典型地可能被限制为低于数十字节(例如,处理器寄存器)至数兆字节(例如,L1缓存、L2缓存等)。根据一些示例,可移位的存储器可以是主存储器或其子系统的专用分区。
进一步,如本文使用的,冠词‘一’意在具有其在专利领域内的通常意义,即‘一个或多个’。例如,在本文中,‘一环形寄存器’指一个或多个环形寄存器,因此,‘该环形寄存器’指‘该环形寄存器(该多个环形寄存器)’。此外,本文中任何对‘顶’、‘底’、‘较上’、‘较下’、‘上’、‘下’、‘前’、‘后’、‘左’或‘右’的引用在本文中不意图作为限制。在本文中,除非另外明确规定,否则当术语‘约’被应用于一值时,该术语通常指位于用来产生该值的设备的公差范围内,或在一些示例中,指正或负10%,或正或负5%,或正或负1%。此外,本文中示例仅意在是说明性的,并且是为了讨论目的提供的,而不作为限制。
图2图示根据本文描述的原理的示例的可移位的存储器100的框图。可移位的存储器100提供在可移位的存储器100中存储的数据字的连续子集的移位。进一步,由可移位的存储器100进行的数据字移位仅移位该连续子集中的数据字,而不移位其它被存储的数据字。特别地,当可移位的存储器100执行该连续子集的移位时,该移位不对位于该连续子集外部的其它被存储的数据字进行移位。进一步,根据一些示例,该移位移动所存储的数据字的该连续子集而不改变或以其它方式影响该连续子集中所存储的数据字的顺序。例如,由可移位的存储器100提供的移位可以用来将新的数据字插入可移位的存储器100中和/或删除在可移位的存储器100中存储的数据字。
根据一些示例,外部资源(例如,处理器)经由数据总线(数据I/O)102向可移位的存储器100传递数据,或传递来自可移位的存储器100的数据。例如,可以使用地址总线(ADDR)104以及长度总线(LEN)106将连续子集的地址和长度传递至可移位的存储器100。在另一示例(未示出)中,可以使用运送该地址和长度或可替代地运送一对地址的地址总线。
如所图示的,可移位的存储器100包括多个环形寄存器110,以存储数据字以及提供内置的字级移位能力。特别地,该内置的字级移位在该多个环形寄存器中的环形寄存器110的组之间对数据字的连续子集进行移位。根据一些示例,每个环形寄存器110包括多个存储器单元,该多个存储器单元作为整体被配置为存储与该数据字对应的数据。在一些示例中,该多个环形寄存器中的环形寄存器110被配置为将该数据字存储为二进制数据。例如,该多个环形寄存器中的环形寄存器110可以包括多个存储器单元,每个存储单元被配置为存储二进制数据的单个位(例如,作为‘1’或‘0’)。在结合时,例如,单独地存储二进制位的存储器单元共同用来存储该数据字。在其它示例中,环形寄存器110的一个或多个存储器单元被配置为存储多个二进制数据位。例如,环形寄存器110的每个存储器单元可以存储完整的数据字,使得环形寄存器110存储多个数据字。在其它示例中,环形寄存器110可以以与一个或多个二进制位不同的形式存储数据。根据一些示例,数据字的多个数据位限定环形寄存器110的宽度。
根据各示例,环形寄存器110实际上可以使用任意存储器技术来实现。例如,可以使用静态随机存取存储器(SRAM)实现环形寄存器110的存储器单元。在另一示例中,一个或多个触发器,如但不限于D触发器,可以用来实现存储器单元。在其它示例中,又一种存储器技术(例如,DRAM等)可以用来实现环形寄存器110的存储器单元。
根据一些示例,可移位的存储器100进一步包括控制器120。控制器120被配置为选择所存储的数据字的连续子集或等同地选择环形寄存器110的连续子集。控制器120进一步被配置为在可移位的存储器110的多个环形寄存器内从第一位置移位向第二位置移位所存储的数据字的所选择的连续子集。根据本文描述的原理的各示例,所选择的连续子集具有比多个环形寄存器110的总长度小的长度。进一步,根据各示例,第一位置和第二位置中每个位置包括一组环形寄存器110,该组环形寄存器110具有与数据字的连续子集的长度对应的长度(例如环形寄存器110的数量)。例如,利用一个或多个控制信号,控制器120可以通过指示该多个环形寄存器110执行移位来对所选择的连续子集进行移位。
在各示例中,可移位的存储器100促进所存储的数据字的连续子集的上移和/或下移。特别地,根据移位的方向,多个环形寄存器110内的第二位置的环形寄存器110可以位于第一位置的对应环形寄存器110上方或下方。在一些示例中,第二位置的环形寄存器110是远离第一位置的对应环形寄存器110的单个环形寄存器(或存储器位置)。换句话说,该移位代表所存储的数据字的连续子集移动单个存储器位置或地址。在其它示例中,第二位置代表超过单个环形寄存器110(例如,第一位置上方或下方的两个或更多个地址)的移动。
在一些示例中,所选择的连续子集是由该连续子集的第一环形寄存器110的地址和该连续子集中的最后一个环形寄存器110的地址指定的。例如,该第一环形寄存器地址和该最后一个环形寄存器地址(例如,经由地址总线)被传递至控制器120,以促进选择该连续子集。例如,该第一环形寄存器地址和该最后一个环形寄存器地址也可以通过单个总线(例如,ADDR104)作为第一地址接着第二地址而被顺序地传递。可替代地,例如,该第一地址和该最后一个地址可以作为两个同时的地址通过两个总线或者通过单个宽总线的两个部分并行地传递。
在另一示例中,所选择的连续子集是由第一环形寄存器110的地址和该连续子集的长度(例如,如所图示的,经由ADDR104和LEN106)指定的。在这些示例中的一些示例中,该长度可以是跟随第一环形寄存器110之后的连续子集的长度,使得由该第一环形寄存器地址和该长度之和给出最后一个环形寄存器地址。在其它示例中,该长度包括第一环形寄存器110,使得由该第一环形寄存器地址加上该长度减一给出最后一个环形寄存器地址。例如,其它示例可以指定最后一个环形寄存器地址和该最后一个环形寄存器之前的连续子集的长度,以及其它方案。
在一些示例中,控制器120包括增强的解码器122。增强的解码器122使用与该地址和该长度(或可替代地第一环形寄存器地址及最后一个环形寄存器地址)相关的信息来选择所存储的数据的连续子集。在一些示例中,增强的解码器122使用该信息(例如,连续子集的地址和长度)来断言(assert)一输出,该输出与移位寄存器110内的所选择的连续子集的每个环形寄存器110对应。例如,断言一输出可以包括在增强的解码器122和多个环形寄存器110之间的连接路径或线路(例如,字线)上输出逻辑‘1’。因此,增强的解码器122可以在多个环形寄存器110的多个字线上输出逻辑‘1’,其中该多个字线对应于包含所选择的连续子集的所存储的数据字的环形寄存器110。例如,字线可以连接至环形寄存器110的加载使能(LE)或选择(SEL)输入。在其它示例中,断言一输出包括输出逻辑‘0’。例如,当环形寄存器110具有‘非’加载使能
Figure BDA0000496512430000111
或‘非’选择
Figure BDA0000496512430000112
输入时,断言一逻辑‘0’可以使用。
在一些示例中,增强的解码器122进一步被配置为断言一附加输出,该附加输出对应于与所选择的连续子集相邻且紧邻所选择的连续子集上方的环形寄存器110或与所选择的连续子集相邻且紧邻所选择的连续子集下方的环形寄存器110中之一。例如,当要在多个环形寄存器110内上移所存储的数据字时,可以断言与紧邻所选择的连续子集上方的环形寄存器110对应的附加输出。例如,当要在多个环形寄存器110内下移所存储的数据字时,可以断言与紧邻所选择的连续子集下方的环形寄存器110对应的附加输出。特别地,该附加输出可以用来使能从数据字的连续子集的第一环形寄存器110或最后一个环形寄存器110接收所存储的数据字的环形寄存器110。
图3图示根据本文描述的原理的示例的增强的解码器122的真值表。特别地,对应于所图示的真值表的增强的解码器122被配置为选择具有八个存储器单元的示例多个环形寄存器110中的连续子集。该真值表具有三个地址输入(ADDR)、长度(LEN)输入和八个字线W(即W0—W7)。例如,这八个字线W可以对应于该示例多个环形寄存器110中的八个存储器单元的加载使能(LE)输入。如在该真值表中能看见的,对于等于‘00’的LEN值,增强的解码器122起到与传统解码器基本类似的作用(即,一次仅断言一个字线W)。然而,对于LEN的全部其它值断言多个字线W,促进对要移位的存储数据的被选择连续子集进行保持和存储的对应多个存储器单元的同时使能。
在一些示例中,可以使用只读存储器(ROM)实现增强的解码器122。该ROM是用指定增强的解码器122的功能的真值表编程的。例如,该ROM的解码器对输入(例如,ADDR及LEN)进行解码,并且该ROM内的被编程的连接增强了该ROM解码器的输出,以产生增强的解码器122的功能。在另一示例中,传统的解码器可以用除被编程的连接以外的输出电路进行增强,以实现增强的解码器122。在另一示例中,可以使用锁存纹波级联(latched ripple cascade)实现增强的解码器122。
图4A图示根据本文描述的原理的示例的可移位的存储器300的示意图。如所图示的,可移位的存储器300包括连接至增强的解码器320的多个环形寄存器310。如图4A图示的,可移位的存储器300的每个环形寄存器320包括多个存储器单元312和逻辑电路314,以及输入开关316和输出三态缓冲器318。存储器单元312可以例如包括静态随机存取存储器(SRAM)存储器单元。在另一示例中,存储器单元312可以包括触发器(例如,D型触发器)。在其它示例中,存储器单元312可以包括其它类型的存储器单元。
如所图示的,多个环形寄存器310被竖直地设置为线性阵列,每个环形寄存器310连接至来自增强的解码器320的多个字线W(例如,Wn、Wn+1等)中不同的字线。如所图示的,与每个环形寄存器310关联的字线W并行连接至环形寄存器310的每个存储器单元312的加载使能LE。加载使能LE用来例如使能将数据加载到存储器单元312中(例如,锁存在数据输入D处出现的数据)以及从存储器单元312中读取数据(例如,使能存储器单元312的输出Q)。每个SRAM单元312的时钟线Clk共同在时钟输入Clk处连接至全部的SRAM单元312。
图4A中图示的多个环形寄存器310可以基本上类似于上面关于可移位的存储器100描述的多个环形寄存器110。根据一些示例,与附加逻辑(未示出)结合的增强的解码器320用作可移位的存储器300的控制器。根据一些示例,该控制器可以基本上类似于上面关于可移位的存储器100描述的控制器120。事实上,根据一些示例,增强的解码器320基本类似于增强的解码器122。此外,可移位的存储器300代表上面描述的可移位的存储器100的示例实现方式。
根据各示例,每个环形寄存器310中的多个存储器单元312可以一起用来例如存储包括多个二进制位的数据字。例如,使用输入数据线d将外部数据以串行的方式写入环形寄存器310。例如,由环形存储器310存储的数据可以使用输出数据线q串行地访问并且从环形寄存器310中读取。在一些示例(未示出)中,输入数据线d和输出数据线q被转换为并行格式和/或被复用,以促进与公共数据总线的连接(例如,图2中图示的“数据I/O”102)。
每个环形寄存器310的输入开关316连接在环形寄存器310的输入和环形寄存器310的输入数据线d和输出数据线q中每个数据线之间。输入开关316用来在使能(例如,使用合适的字线W)环形寄存器310时,从环形寄存器310的输入数据线d或输出数据线q选择数据并且路由该数据。当选择该输入数据线时,来自输入数据线d的数据位可以顺序地按时钟读入环形寄存器310中,以实现串行写操作。可替代地,当选择输出数据线q时,存储在环形寄存器310的存储器单元312中的数据位可以围绕环形寄存器310的环路进行循环。例如,使数据位循环可以用来在串行读操作期间顺序地输出所存储的数据。通常,在串行写操作或串行读操作期间,一次仅使能一个环形寄存器310。
在一些示例中,输入开关316可以被实现为复用器。在其它示例中,输入开关316可以包括多个三态缓冲器。在更其它的示例中,输入开关316可以包括另一单刀双掷开关实现方式。输入开关316是由数据使能DE线控制的。
在一些示例中,除在串行读操作期间以外,输出三态缓冲器318用来将环形寄存器110与输出数据线q隔离。例如,在串行读操作期间,可以使用输出使能线OE(例如,断言该输出使能线OE)使能该输出三态缓冲器318。然后,例如,在被使能的环形寄存器310中存储的数据位可以顺序地按时钟读出该环形缓冲器310并且通过与被使能的环形寄存器310关联的被使能的三态缓冲器318按时钟读出到该输出数据线q上。相反,根据各示例,当不使能该输出三态缓冲器318时(例如,当未断言该输出使能线OE时),将环形寄存器310的输出与该输出数据线q隔离并且彼此隔离。
每个存储器单元312具有关联的逻辑电路314,该关联的逻辑电路314在该逻辑电路314的输出处与存储器单元312的数据输入D连接。该关联的逻辑电路314具有三个输入,这三个输入分别连接至用于存储器单元312的外部数据源、环形寄存器310的紧邻存储器单元312下方的对应存储器单元312的输出Q以及环形寄存器310的紧邻存储器单元312上方的另一对应存储器单元312的输出Q。逻辑电路314被配置为在串行写操作或串行读操作期间选择该外部数据源。逻辑电路314被配置为在要在可移位的存储器300内上移所存储的数据时,选择紧邻存储器单元312下方的对应存储器单元312的输出Q。逻辑电路314进一步被配置为在下移可移位的存储器300内的所存储的数据时,选择紧邻存储器单元312上方的对应的存储器单元312的输出Q。
例如,如所图示的,逻辑电路314的选择的控制可以由控制输入提供。具体地,当UP被断言时,上移可移位的存储器300的环形寄存器310内的所存储的数据,而当UP未被断言时(即当
Figure BDA0000496512430000142
被断言时),下移所存储的数据。例如,第一环形寄存器310以及参与上移或下移的一系列环形寄存器310是由向增强的解码器320提供的地址(A0,…,Am)与长度(L0,…,Lk)的结合控制的。根据一些示例,断言Data将可移位的寄存器300置于类似的写/读模式,以促进对由增强的解码器320的字线W根据所输入的地址(A0,…,Am)选择的环形寄存器310执行串行写操作或串行读操作。如上面描述的,是否执行串行写操作或串行读操作是由连接至输入开关316的数据使能DE线的状态进一步确定的。
在一些示例中,逻辑电路314包括复用器电路,例如,该复用器电路可以是三输入复用器,该三输入复用器被配置为选择上面限定的用于施加至存储器单元312的数据输入D的三个输入之一。在其它示例中,逻辑电路314可以包括多个三态缓冲器,逻辑电路314的所限定的三个输入中每个输入使用一个三态缓冲器。在更其它示例中,逻辑电路314可以包括一个或多个复用器(例如,两输入复用器)、一个或多个三态缓冲器以及各种其它逻辑门的结合。
图4B图示根据本文描述的原理的另一示例的可移位的存储器400的示意图。特别地,如所图示的,可移位的存储器400的环形寄存器410、410′、410″每个包括被连接为或功能上被设置为移位寄存器的多个存储器单元412、412a、412b(例如,D触发器)。环形寄存器410、410′、410″每个进一步包括位于移位寄存器的输入处的与各个移位寄存器的第一存储器单元412a相邻的复用器414。如所图示的,复用器414被配置为在待向该移位寄存器的第一存储器单元412a的数据输入D施加的四个输入之一中进行选择。在这四个输入中选择是根据Select(例如,Selectn-1、Selectn、Selectn+1)输入。该Select输入可以由例如控制器(未示出)提供。
进一步如所图示的,例如,输入数据线d可以提供用于向环形寄存器410、410′、410″写入的外部数据,输出数据线q可以用来从环形寄存器410、410′、410″中读取数据。例如,如上面关于输出三态缓冲器318描述的,输出三态缓冲器418可以用来将环形寄存器410、410′、410″与输出数据线q隔离以及彼此隔离。例如,输出使能线OE可以用来使能输出三态缓冲器418。
特别地,如图4B中图示的,复用器414的可选择的四个输入中的第一输入连接至输入数据线d。当要将外部数据写入存储器单元412、412a、412b并由存储器单元412、412a、412b存储时,可以选择该可选择的第一输入。例如,通过例如将数据位经由数据输入线d顺序地提交至复用器414的所选择的第一输入并且然后对第一环形寄存器410的存储器单元施加时钟脉冲,可以以串行的方式将数据加载至第一环形寄存器410中。根据一些示例,时钟脉冲引起数据位沿该移位寄存器的长度移动或移位,每个时钟脉冲一个存储器单元412、412a、412b。例如,在等于第一环形寄存器410中的存储器单元412、412a、412b的数量的多个时钟脉冲内,可以加载完整的数据字。作为示例,图4B中的重箭头图示时钟脉冲正沿环形寄存器410的移位寄存器移位数据位。
如所图示的,复用器414的可选择的四个输入中的第二输入连接至第一环形寄存器410的输出处的最后一个或末端的存储器单元412b的输出Q。该可选择的第二输入可以在要围绕第一环形寄存器410的环路使环形寄存器内的数据(例如,数据位)循环时进行选择。特别地,当将时钟脉冲施加至第一环形寄存器410的存储器单元412、412a、412b时,沿该移位寄存器移位或‘按时钟读’数据位,直至数据位到达末端的存储器单元412b。当选择该第二输入时,数据位在离开该末端的存储器单元412b时通过复用器414被传递回第一存储器单元412a。在一些示例中,当执行由第一环形寄存器410存储的数据字的串行读入时,可以选择该可选择的第二输入。例如,当在第一环形寄存器410中存储的数据位离开末端的存储器单元412b并且通过复用器414环绕或循环回至第一存储器单元412a时,可以以串行的方式读取在第一环形寄存器410中存储的数据位。
进一步如图4B中图示的,复用器414的可选择的四个输入中的第三输入连接至紧接第一环形寄存器410上方的地址或存储器位置处的第二环形寄存器410′的末端存储器单元412b的输出Q。例如,选择该可选择的第三输入可以用来在可移位的存储器400内下移数据字。特别地,当施加时钟脉冲时,在第二环形寄存器410′中存储的数据字通过复用器414的所选择的第三输入被按时钟读入第一环形寄存器410中。如上所述,例如,数据字的数据位可以每个时钟脉冲(例如,如所图示,经由时钟线Clk提供的时钟脉冲)按时钟读入一个位。
最后,复用器414的可选择的四个输入中的第四输入连接至紧邻第一环形寄存器410下方的地址或存储器位置处的第三环形寄存器410″的末端存储器单元412b的输出Q。该可选择的第四输入可以被选择来上移可移位的存储器400内的数据字。特别地,例如,在第三环形寄存器410″中存储的数据字可以通过复用器414的所选择的第四输入以与对上面描述的下移所使用的方式类似的方式按时钟读入到第一环形寄存器410内。
例如,当特定的环形寄存器410不是存储连续子集的数据的环形寄存器410之一时,可以保持所存储的数据且不移位(即上移或下移)所存储的数据。特别地,根据一些示例,复用器414可以具有Null Select(未示出),该Null Select实际上禁用数据位的通过复用器414的传递。此外或可替代地,例如,禁用该特定的环形寄存器410的移位寄存器内的移位的选择可以用来防止串行读取、串行写入、上移及下移中的一个或多个。根据各示例,复用器414可以是真实的复用器或可以是起复用器作用的逻辑电路(例如,用三态缓冲器、开关等实现)。
根据一些示例,图4B中图示的可移位的存储器400可以进一步包括控制器(未示出)。该控制器可以包括基本与上面关于可移位的存储器100描述的增强的解码器122类似的增强的解码器。特别地,该控制器可以向环形寄存器410中用于参与上移或下移的单独的环形寄存器的Select输入提供一个或多个输出(例如,控制复用器414的第三输入以及第四输入的选择)。例如,参与可以在增强的解码器中由待移位的存储数据的连续子集的地址(ADDR)及长度(LEN)来确定。同样地,例如,该控制器可以提供输出(多个输出)来在待被写入或待被读取的那些环形寄存器410的复用器414的第一输入和第二输入中进行选择。根据一些示例,可移位的存储器400可以表示上面描述的可移位的存储器100的另一示例实现方式。
图5图示根据本文描述的原理的示例的可移位的存储器系统500的框图。可移位的存储器系统500包括在阵列中彼此相邻设置的多个环形寄存器510。每个环形寄存器510被配置为存储与数据字对应的多个数据位。根据一些示例,在该阵列中设置的环形寄存器510可以实质上类似于上面描述的可移位的存储器100的环形寄存器110。特别地,例如,相邻的环形寄存器510可以互连,以在移位期间将对应的数据位直接地从环形寄存器之一转移至其它环形寄存器。在其它示例中,相邻的环形寄存器510是互连的‘输出至输入’,使得通过将数据位逐个按时钟读出相邻的环形寄存器510中的第一环形寄存器外并且按时钟读入到相邻的环形寄存器510的第二环形寄存器中(以此类推)来传送数据位。
如图5中图示的,可移位的存储器系统500进一步包括控制器520。控制器520被配置为选择及移位环形寄存器510的阵列内的数据字的连续子集。该数据字的连续子集具有比该阵列的总长度小的长度。该移位代表该阵列内的所选择的连续子集的上移或下移。所选择的连续子集的移位不引起位于所选择的连续子集外的其它数据字的移位。在一些示例中,控制器520可以基本上类似于上面关于可移位的存储器100描述的控制器120。
特别地,根据一些示例,控制器520可以包括增强的解码器(未示出),以对加载使能进行断言或以其它方式从所选择的数据字的连续子集的开始至末尾中选择每个环形寄存器510。例如,所选择的连续子集的开始可以对应于该地址,末尾可以对应于接收到的该地址和该长度之和。控制器520可以进一步被配置为根据该阵列中的移位方向,断言与紧邻该连续子集开始处的环形寄存器510上方的环形寄存器510和紧邻该连续子集末尾处的环形寄存器510下方的环形寄存器510中至少之一对应的加载使能、字线或等同物。
在一些示例中,可移位的存储器系统500进一步包括处理器530。处理器530被配置为提供数据字的连续子集的地址和长度。处理器530可以经由地址总线(地址)532与控制器520通信。例如,处理器530可以提供该地址和该长度直接作为与该连续子集的开始对应的环形寄存器510的地址以及确定与该连续子集的末尾对应的环形寄存器510的长度。在另一示例中,可以由处理器530提供与该连续子集的开始对应的环形寄存器510的第一地址以及与该连续子集的末尾对应的第二地址。在此示例中,可以从第一地址和第二地址之间的差推断所提供的长度。进一步,处理器530可以使用数据总线(数据I/O)534与环形寄存器510通信。例如,数据总线534可以由处理器530用来向环形寄存器510写数据。类似地,例如,可以由处理器530使用数据总线534读取由环形寄存器510存储的数据。
根据一些示例,例如,处理器530可以是使用可移位的存储器系统500的通用计算机的中央处理器(例如,CPU,如微处理器)。然而,根据各示例,多个环形寄存器510和控制器520是与处理器530不同且分离的。例如,多个环形寄存器510和控制器520可以是由处理器530使用的存储器系统(例如,RAM)的专用部分。特别地,例如,环形寄存器510和控制器520不是处理器530的传统移位寄存器。图5中的虚线图示处理器530和环形寄存器510与控制器520之间的物理分离。
图6图示根据本文描述的原理的示例的在可移位的存储器中移位数据的方法600的流程图。如所图示的,在可移位的存储器中移位数据的方法600包括选择610在具有内置字级移位能力的存储器的环形寄存器中存储的数据字的连续子集。所选择610的数据的连续子集的大小或长度小于该存储器的总大小或总长度。在一些示例中,选择610数据的连续子集包括提供所选择的连续子集的地址和长度。例如,该地址表示该存储器内与该数据的连续子集的开始对应的环形寄存器,并且该地址和长度之和表示该存储器内与数据的连续子集的末尾对应的环形寄存器。在其它示例中,选择610数据的连续子集包括提供起始地址和结束地址。例如,该起始地址是与该连续子集的开始对应的环形寄存器的地址,而该结束地址是与该连续子集的末尾对应的环形寄存器的地址。
在可移位的存储器中移位数据的方法600进一步包括在该存储器内从第一位置向至第二位置移位620所选择的数据的连续子集。然而,当移位620所选择的连续子集时,该移位620完全在该存储器内发生。此外,移位620所选择的连续子集不移位位于所选择的连续子集外的其它所存储的数据字。
在一些示例中,移位620所选择的连续子集包括使在第一位置处的第一环形寄存器中存储的数据字的数据位循环,以在该环形寄存器的输出处顺序地提交所存储的数据字的每个数据位。例如,使数据位循环可以用来在该可移位的存储器内上移数据字和/或下移数据字。在一些示例中,移位620所选择的连续子集进一步包括将所提交的数据位顺序地写入第二环形寄存器内,以将该数据字存储在存储器内的第二位置。
在一些示例中,在可移位的存储器中移位数据的方法600进一步包括:在移位620该数据的连续数据子集之后,从该存储器中读取数据,或向该存储器写入数据来提供所存储的数据。例如,写入和/或读取可以包括围绕该环形寄存器的环路使该数据字的数据位循环。根据各示例,可以使用上面描述的可移位的存储器100和可移位的存储器系统500以及可移位的存储器300和可移位的存储器400中任一可移位的存储器中的一个或多个实现在可移位的存储器中移位数据的方法600。
因此,本文已经描述了可移位的存储器的示例、可移位的存储器系统的示例以及在可移位的存储器中移位数据的方法的示例,每个示例使用环形寄存器来移位可移位的存储器内存储的数据的连续子集。应理解,上面描述的示例仅说明代表本文描述的原理的许多特定示例中的一些示例。显然,本领域的技术人员能够容易想出许多其它设置而不脱离由下面的权利要求限定的范围。

Claims (15)

1.一种可移位的存储器,包括:
存储器,包括存储数据字的多个环形寄存器,所述存储器具有在所述存储器内从第一位置向第二位置移位所述数据字的连续子集的内置字级移位能力,所述数据字的连续子集具有小于所述存储器的总大小的大小,
其中,当移位所述连续子集时,具有内置字级移位能力的所述存储器仅移位在所述连续子集内存储的数据字。
2.根据权利要求1所述的可移位的存储器,其中,所述多个环形寄存器中的环形寄存器包括存储器单元,所述存储器单元存储与在所述环形寄存器中存储的数据字对应的数据位。
3.根据权利要求2所述的可移位的存储器,其中,所述环形寄存器进一步包括逻辑电路,所述逻辑电路在要由所述逻辑电路施加至所述环形寄存器的数据输入的多个输入中进行选择,所述多个输入包括:
外部数据输入,所述外部数据输入会在要将外部数据写至所述环形寄存器的所述存储器单元并由所述环形寄存器的所述存储器单元存储时由所述逻辑电路选择,
紧邻所述环形寄存器下方的第一相邻环形寄存器的输出,所述第一相邻环形寄存器的输出会在要在所述存储器内上移所存储的数据时由所述逻辑电路选择,以及
紧邻所述环形寄存器上方的第二相邻环形寄存器的输出,所述第二相邻环形寄存器的输出会在要在所述存储器内下移所存储的数据时由所述逻辑电路选择。
4.根据权利要求1所述的可移位的存储器,其中,所述环形寄存器提供串行输入/输出线,所述串行输入/输出线用于将所述数据字写至所述环形寄存器以及从所述环形寄存器中读取所述数据字。
5.根据权利要求1所述的可移位的存储器,进一步包括:
控制器,所述控制器指示所述多个环形寄存器中的环形寄存器选择所述数据字的连续子集,以及指导所述可移位的存储器完全在所述存储器内从所述第一位置向所述第二位置移位所选择的所述数据字的连续子集。
6.根据权利要求5所述的可移位的存储器,其中,所述控制器包括增强的解码器,所述增强的解码器断言一输出,所述输出对应于与所述数据字的连续子集关联的环形寄存器中每个环形寄存器。
7.根据权利要求6所述的可移位的存储器,其中,所述增强的解码器进一步断言一附加输出,该附加输出对应于与所选择的所述数据字的连续子集关联的第一环形寄存器相邻且紧邻所述第一环形寄存器上方以及与所选择的所述数据字的连续子集关联的最后一个环形寄存器相邻且紧邻所述最后一个环形寄存器下方中之一的环形寄存器,当要在所述存储器内上移所存储的数据时,对应于紧邻所述第一环形寄存器上方的所述环形寄存器的所述附加输出被断言,当要在所述存储器内下移所存储的数据时,对应于紧邻所述最后一个环形寄存器下方的所述环形寄存器的所述附加输出被断言。
8.一种可移位的存储器系统,包括:
多个环形寄存器,所述多个环形寄存器彼此相邻地设置在阵列中,所述多个环形寄存器中的环形寄存器存储与数据字对应的多个数据位;
控制器,所述控制器选择并且移位在所述阵列内的一组环形寄存器中存储的数据字的连续子集,所述数据字的连续子集具有比所述阵列的总长度小的长度,移位代表在所述阵列内仅由所述控制器选择的所述数据字的连续子集的上移或下移。
9.根据权利要求8所述的可移位的存储器系统,进一步包括处理器,所述处理器向所述控制器提供所述数据字的连续子集的地址和所述长度。
10.根据权利要求8所述的可移位的存储器系统,其中,所述控制器包括增强的解码器,所述增强的解码器断言一输出,所述输出对应于与所述存储器内所选择的数据字的连续子集对应的那组环形寄存器中的每个环形寄存器。
11.根据权利要求8所述的可移位的存储器系统,其中,相邻的环形寄存器是互连的,以在所述移位期间将对应的数据位从所述环形寄存器之一直接转移至所述环形寄存器中相邻的环形寄存器。
12.一种在可移位的存储器中移位数据的方法,所述方法包括:
选择在具有内置字级移位能力的存储器的环形寄存器中存储的数据字的连续子集,所选择的数据字的连续子集的大小小于所述存储器的总大小;以及
在所述存储器内从第一位置向第二位置移位所选择的数据字的连续子集,
其中,当移位所选择的连续子集时,所述移位完全地在所述存储器内发生且不移位位于所选择的连续子集外部的其它所存储的数据字。
13.根据权利要求12所述的在可移位的存储器中移位数据的方法,其中,选择连续子集包括提供地址和长度,所述地址表示所述存储器内与所述数据字的连续子集的开始对应的环形寄存器,所述地址和所述长度之和表示所述存储器内与所述数据字的连续子集的末尾对应的环形寄存器。
14.根据权利要求12所述的在可移位的存储器中移位数据的方法,其中,移位所选择的连续子集包括:
使在存储器内的所述第一位置处的第一环形寄存器中存储的所述数据字的数据位循环,以在所述环形寄存器的输出处顺序地提交所存储的数据字的每个数据位,以及
将所提交的数据位顺序地写至第二环形寄存器中,以将所述数据字存储在存储器内的所述第二位置处。
15.根据权利要求12所述的在可移位的存储器中移位数据的方法,进一步包括:在移位所选择的数据字的连续子集之后,向所述存储器写数据来提供所存储的数据字以及从所述存储器中读取数据中之一,其中,写数据字和读取数据字中之一或二者包括围绕所述环形寄存器的环使所述数据字的数据位循环。
CN201180074427.0A 2011-10-27 2011-10-27 采用环形寄存器的可移位的存储器 Active CN103890857B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/058177 WO2013062559A1 (en) 2011-10-27 2011-10-27 Shiftable memory employing ring registers

Publications (2)

Publication Number Publication Date
CN103890857A true CN103890857A (zh) 2014-06-25
CN103890857B CN103890857B (zh) 2017-02-15

Family

ID=48168228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180074427.0A Active CN103890857B (zh) 2011-10-27 2011-10-27 采用环形寄存器的可移位的存储器

Country Status (6)

Country Link
US (1) US9846565B2 (zh)
KR (1) KR101847684B1 (zh)
CN (1) CN103890857B (zh)
DE (1) DE112011105670B4 (zh)
GB (1) GB2509661B (zh)
WO (1) WO2013062559A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932439A (zh) * 2017-05-24 2018-12-04 意法半导体(鲁塞)公司 用于检测故障的逻辑器件
CN110232946A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 半导体存储器装置
CN110764602A (zh) * 2019-10-16 2020-02-07 北京航空航天大学 用于降低存储开销的汇流阵列
CN112820225A (zh) * 2019-11-15 2021-05-18 京东方科技集团股份有限公司 一种数据缓存电路、显示面板及显示装置
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013002772A1 (en) 2011-06-28 2013-01-03 Hewlett-Packard Development Company, L.P. Shiftable memory
KR20140065477A (ko) 2011-10-27 2014-05-29 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 원자적 동작을 지원하는 시프트 가능형 메모리
WO2013115779A1 (en) 2012-01-30 2013-08-08 Hewlett-Packard Development Company, L.P. Word shift static random access memory (ws-sram)
US9542307B2 (en) 2012-03-02 2017-01-10 Hewlett Packard Enterprise Development Lp Shiftable memory defragmentation
RU2634227C2 (ru) * 2016-03-23 2017-10-24 Борис Иванович Крыжановский Способ хранения и использования двоичной информации

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4504925A (en) * 1982-01-18 1985-03-12 M/A-Com Linkabit, Inc. Self-shifting LIFO stack
US4864544A (en) * 1986-03-12 1989-09-05 Advanced Micro Devices, Inc. A Ram cell having means for controlling a bidirectional shift
CN101162471A (zh) * 2007-11-15 2008-04-16 华为技术有限公司 一种插入排序的方法和装置
US20090193384A1 (en) * 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1179399B (de) * 1956-08-02 1964-10-08 Kienzle Apparate Gmbh Anordnung von magnetischen Schieberegistern
US3708690A (en) * 1971-02-22 1973-01-02 Mos Technology Inc Shift register
JPS5130978B1 (zh) * 1971-03-05 1976-09-03
US3670313A (en) * 1971-03-22 1972-06-13 Ibm Dynamically ordered magnetic bubble shift register memory
US3893088A (en) * 1971-07-19 1975-07-01 Texas Instruments Inc Random access memory shift register system
US3838396A (en) * 1972-05-18 1974-09-24 Little Inc A Data processor (including editing and revision) with buffer memory
US3797002A (en) 1972-11-16 1974-03-12 Ibm Dynamically double ordered shift register memory
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4037205A (en) * 1975-05-19 1977-07-19 Sperry Rand Corporation Digital memory with data manipulation capabilities
JPS5369545A (en) * 1976-12-03 1978-06-21 Hitachi Ltd Shift-register-type memory unit
US4322635A (en) * 1979-11-23 1982-03-30 Texas Instruments Incorporated High speed serial shift register for MOS integrated circuit
DE3021299A1 (de) * 1980-06-06 1982-01-07 Basf Ag, 6700 Ludwigshafen Verfahren zur herstellung von isocyanaten
US4521874A (en) * 1982-09-28 1985-06-04 Trw Inc. Random access memory device
JPH0754638B2 (ja) * 1986-02-18 1995-06-07 松下電子工業株式会社 シフトレジスタ
JPS63231798A (ja) 1987-03-20 1988-09-27 Fujitsu Ltd 2次元シフトレジスタ
US5050067A (en) * 1987-08-20 1991-09-17 Davin Computer Corporation Multiple sliding register stacks in a computer
US5153846A (en) * 1990-07-30 1992-10-06 At&T Bell Laboratories Digital shift register using random access memory
JPH0566921A (ja) 1991-09-10 1993-03-19 Fujitsu Ltd データシフト回路
WO1993014459A1 (en) 1992-01-17 1993-07-22 Caelum Research Corporation Modular parallel processing system
TW207013B (en) * 1993-02-19 1993-06-01 Nat Science Committee Architecture of optimal high-speed sorter
WO1994022090A1 (en) * 1993-03-23 1994-09-29 David Siu Fu Chung Intelligent memory architecture
DE69524269T2 (de) * 1994-01-28 2002-07-18 Matsushita Electric Ind Co Ltd Vorrichtung und Verfahren zur Dekodierung von Kodes variabler Länge
DE69719264T2 (de) 1996-08-26 2003-11-06 Texas Instruments Inc Schieberegister mit negativen Widerstandselementen
US5930323A (en) * 1997-08-26 1999-07-27 Texas Instruments Incorporation Ultra fast shift register using resonant tunnel diodes
JPH11328947A (ja) * 1998-05-18 1999-11-30 Nec Corp 大規模fifo回路
US6061417A (en) * 1998-12-03 2000-05-09 Xilinx, Inc. Programmable shift register
DE19917016A1 (de) * 1999-04-15 2000-10-19 Philips Corp Intellectual Pty Schaltungsanordnung zur Parallel/Seriell-Umsetzung
US6362660B1 (en) * 1999-07-13 2002-03-26 Texas Instruments Incorporated CMOS latch and register circuitry using quantum mechanical tunneling structures
JP3744285B2 (ja) * 1999-10-29 2006-02-08 日本電気株式会社 シフトレジスタ及びその制御方法
US6560696B1 (en) * 1999-12-29 2003-05-06 Intel Corporation Return register stack target predictor
US6725347B2 (en) * 2001-01-16 2004-04-20 Sun Microsystems, Inc. Spin-wheel SDRAM access scheduler for high performance microprocessors
US20040019715A1 (en) * 2001-02-06 2004-01-29 Raphael Apfeldorfer Multirate circular buffer and method of operating the same
US7051153B1 (en) * 2001-05-06 2006-05-23 Altera Corporation Memory array operating as a shift register
JP2003006003A (ja) * 2001-06-18 2003-01-10 Mitsubishi Electric Corp Dmaコントローラおよび半導体集積回路
JP3765273B2 (ja) * 2002-02-06 2006-04-12 日本電気株式会社 シフトレジスタ
KR100481175B1 (ko) * 2002-08-08 2005-04-07 삼성전자주식회사 시프트 리던던시 회로들을 가지는 반도체 메모리 장치
US7093084B1 (en) * 2002-12-03 2006-08-15 Altera Corporation Memory implementations of shift registers
JP2004296040A (ja) * 2003-03-28 2004-10-21 Renesas Technology Corp 半導体記憶装置
US6834005B1 (en) * 2003-06-10 2004-12-21 International Business Machines Corporation Shiftable magnetic shift register and method of using the same
US7293132B2 (en) * 2003-10-08 2007-11-06 Samsung Electronics Co., Ltd. Apparatus and method for efficient data storage using a FIFO memory
DE10356851B4 (de) * 2003-12-05 2006-02-02 Infineon Technologies Ag Schieberegister zum sicheren Bereitstellen eines Konfigurationsbits
US7570611B2 (en) * 2004-12-30 2009-08-04 Intel Corporation Parallel processing data transfer arrangements
US7463056B1 (en) * 2005-12-12 2008-12-09 Xilinx, Inc. Writeable shift register lookup table in FPGA with SRAM memory cells in lookup table reprogrammed by writing after initial configuration
US7508701B1 (en) * 2006-11-29 2009-03-24 The Board Of Trustees Of The Leland Stanford Junior University Negative differential resistance devices and approaches therefor
JP5066921B2 (ja) 2007-01-17 2012-11-07 横浜ゴム株式会社 空気入りタイヤ
US8341362B2 (en) * 2008-04-02 2012-12-25 Zikbit Ltd. System, method and apparatus for memory with embedded associative section for computations
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
JP2010160653A (ja) * 2009-01-07 2010-07-22 Renesas Electronics Corp リングバッファ回路及びその制御回路
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
WO2013002772A1 (en) * 2011-06-28 2013-01-03 Hewlett-Packard Development Company, L.P. Shiftable memory
KR20140065477A (ko) * 2011-10-27 2014-05-29 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 원자적 동작을 지원하는 시프트 가능형 메모리
CN103890856B (zh) * 2011-10-27 2017-07-11 慧与发展有限责任合伙企业 支持内存储数据结构的可移位存储器
KR101564524B1 (ko) * 2012-01-30 2015-10-29 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 동적/정적 랜덤 액세스 메모리(d/sram)
US9431074B2 (en) * 2012-03-02 2016-08-30 Hewlett Packard Enterprise Development Lp Shiftable memory supporting bimodal storage
US9542307B2 (en) * 2012-03-02 2017-01-10 Hewlett Packard Enterprise Development Lp Shiftable memory defragmentation
US8819376B2 (en) * 2012-04-23 2014-08-26 Hewlett-Packard Development Company, L. P. Merging arrays using shiftable memory
US8717831B2 (en) * 2012-04-30 2014-05-06 Hewlett-Packard Development Company, L.P. Memory circuit
US8972630B1 (en) * 2013-09-25 2015-03-03 Netronome Systems, Incorporated Transactional memory that supports a put with low priority ring command

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4504925A (en) * 1982-01-18 1985-03-12 M/A-Com Linkabit, Inc. Self-shifting LIFO stack
US4864544A (en) * 1986-03-12 1989-09-05 Advanced Micro Devices, Inc. A Ram cell having means for controlling a bidirectional shift
CN101162471A (zh) * 2007-11-15 2008-04-16 华为技术有限公司 一种插入排序的方法和装置
US20090193384A1 (en) * 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932439A (zh) * 2017-05-24 2018-12-04 意法半导体(鲁塞)公司 用于检测故障的逻辑器件
CN110232946A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 半导体存储器装置
CN110232946B (zh) * 2018-03-05 2023-06-16 三星电子株式会社 半导体存储器装置
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
CN110764602A (zh) * 2019-10-16 2020-02-07 北京航空航天大学 用于降低存储开销的汇流阵列
CN110764602B (zh) * 2019-10-16 2021-06-18 北京航空航天大学 用于降低存储开销的汇流阵列
CN112820225A (zh) * 2019-11-15 2021-05-18 京东方科技集团股份有限公司 一种数据缓存电路、显示面板及显示装置
CN112820225B (zh) * 2019-11-15 2023-01-24 京东方科技集团股份有限公司 一种数据缓存电路、显示面板及显示装置

Also Published As

Publication number Publication date
GB2509661A (en) 2014-07-09
DE112011105670B4 (de) 2020-10-08
KR20140085467A (ko) 2014-07-07
DE112011105670T5 (de) 2014-06-26
GB2509661B (en) 2015-10-07
US9846565B2 (en) 2017-12-19
US20140304467A1 (en) 2014-10-09
CN103890857B (zh) 2017-02-15
KR101847684B1 (ko) 2018-04-10
GB201407328D0 (en) 2014-06-11
WO2013062559A1 (en) 2013-05-02

Similar Documents

Publication Publication Date Title
CN103890857A (zh) 采用环形寄存器的可移位的存储器
US11693783B2 (en) Apparatuses and methods for cache operations
US11422720B2 (en) Apparatuses and methods to change data category values
CN108604169B (zh) 用于经分割并行数据移动的设备和方法
US20210232397A1 (en) Mask patterns generated in memory from seed vectors
US11693561B2 (en) Apparatuses and methods for simultaneous in data path compute operations
KR102305389B1 (ko) 데이터 경로에서의 컴퓨팅 장치 및 방법
EP2727114B1 (en) Shiftable memory
CN104571949B (zh) 基于忆阻器实现计算与存储融合的处理器及其操作方法
KR102306034B1 (ko) 데이터 경로 내 컴퓨팅 연산을 위한 장치 및 방법
US7617383B2 (en) Circular register arrays of a computer
US20190147937A1 (en) Apparatuses and methods for shift decisions
US20090161435A1 (en) Non-volatile memory device and method of programming the same
US10114795B2 (en) Processor in non-volatile storage memory
US11887693B2 (en) Reconfigurable processing-in-memory logic
WO2018182994A2 (en) Apparatuses and methods for in-memory operations
US11705207B2 (en) Processor in non-volatile storage memory
US11823771B2 (en) Streaming access memory device, system and method
CN103594110A (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
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160919

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

C14 Grant of patent or utility model
GR01 Patent grant