CN107851059A - 提高效率的智能存储器架构 - Google Patents
提高效率的智能存储器架构 Download PDFInfo
- Publication number
- CN107851059A CN107851059A CN201680042477.3A CN201680042477A CN107851059A CN 107851059 A CN107851059 A CN 107851059A CN 201680042477 A CN201680042477 A CN 201680042477A CN 107851059 A CN107851059 A CN 107851059A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- code
- thesaurus
- storehouse
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Abstract
一种方法包括从第一主核接收第一请求以访问多个存储库之一中的数据。确定对所述数据的访问是否由于来自第二主核、以访问所述多个存储库之一中的所述数据的第二请求而被拖延,所述第二请求当前正在被服务。响应于对所述数据的所述访问被拖延的确定,通过访问多个编码库之一中的数据来服务所述第一请求,每个编码库的尺寸小于每个存储库。
Description
相关申请的交叉引用
本申请要求享有于2015年7月28日提交的、申请号为14/810,895、名称为“提高效率的智能存储器架构”的美国非临时专利申请的优先权,其全部内容通过引用结合在本申请中。
背景技术
存储器访问是计算机系统中程序执行的重要部分。通常,一个或多个处理器(例如中央处理单元(central processing units,CPU),图形处理单元(graphics processingunits,GPU),数字信号处理器(Digital Signal Processors,DSP),硬件加速器(HardwareAccelerators,HAC)或其他处理器)经由存储器控制器访问各种存储库。近年来,已经看到了多核处理器的兴起,其中存储器控制器控制从多个不同处理器或内核(也称为主处理器)访问存储库。然而,随着处理器速度和处理器数量的增加,存储器的访问速度没有成比例的增加。具体来说,当多个处理器尝试在同一时间或接近同一时间访问相同的存储库时,其中一个处理器在来自另一个处理器的请求被服务时等待。随着处理器数量的增加,访问次数和潜在的冲突访问也增加,从而导致存储器访问时间的降低。
附图说明
图1是示出了根据示例性实施例的用于控制存储器访问的系统的框图。
图2是示出了根据示例性实施例的库间编码方案的框图。
图3是示出了根据示例性实施例的库间编码方案和库内编码方案的组合的框图。
图4是示出了根据替代的示例性实施例的库间编码方案的框图。
图5是示出了根据另一替代的示例性实施例的库间编码方案的框图。
图6是更详细地示出了根据示例性实施例的访问调度器的框图。
图7是示出了根据示例性实施例的处理读取请求的方法的流程图。
图8是示出了根据示例性实施例的处理写入请求的方法的流程图。
图9是示出了根据示例性实施例的用于将缓冲器分配到存储器中的方法的流程图。
图10是示出了根据示例性实施例的用于调度和准备一组编码库的方法的流程图。
图11是示出了根据示例性实施例的移动设备的框图。
图12是以计算机系统的示例形式的机器的框图,在其中可以执行指令以使机器执行本文所讨论的任何一种或多种方法。
具体实施方式
在下面的描述中,参考形成其一部分的附图,其中通过图示的方式示出了可以实践的具体实施例。对这些实施例进行了详细描述,以使本领域技术人员能够实践本文公开的主题,并且应当理解,可以使用其他实施例,并且可以在不脱离本发明范围的情况下进行结构上的、逻辑上的以及电气上的改变。因此,示例性实施例的以下描述不应被认为是限制性的,并且本公开的范围由所附权利要求限定。
在一个实施例中,本文描述的功能或算法可以以软件或软件和由人执行的过程的组合来实现。软件可以包括存储在计算机可读介质或计算机可读存储设备(例如本地的或联网的一个或多个非暂存存储器或其他类型的基于硬件的存储设备)上的计算机可执行指令。此外,这样的功能对应于可以是软件,硬件,固件或其任何组合的模块。可以根据需要在一个或多个模块中执行多个功能,并且所描述的实施例仅仅是示例。软件可以在诸如个人计算机,服务器或其他计算机系统等的计算机系统上操作的数字信号处理器,专用集成电路(application-specific integrated circuit,ASIC),微处理器或其他类型的处理器上执行。
在示例性实施例中,通过使用额外的冗余存储库增加并行性来增加多个处理器的存储器访问效率。通过以编码格式添加存储数据的冗余来加强智能存储器系统。可以通过使用被称为编码库的一个或多个附加存储库来减少来自各种处理器(也称为“主机”)的访问冲突。存储的附加数据可以以压缩格式存储在编码库中,以便为存储的数据创建冗余,同时最小化额外的存储空间以及访问开销。冗余数据可以用于对存储库的访问进行归一化,从而提高系统的整体效率。
图1是示出了根据示例性实施例的用于控制存储器访问的系统100的框图。系统100包括多个主核102A-102N。每个主核102A-102N可以是处理器。在示例性实施例中,每个主核102A-102N被实现为主核处理器装置。在一些示例性实施例中,所有主核102A-102N在单个芯片上操作,并且可以被认为是单个处理器的多个核。在其他示例性实施例中,这些主核102A-102N可以位于多个芯片或电路之间。不管架构如何,存储库104A-104N的访问由存储器控制器106控制。应当注意,在一些示例性实施例中,实际上存在多个存储器控制器106,其中每个存储器控制器106控制不相交的存储库。
主核102A-102N通过互连108与共享存储器控制器106进行通信。互连可以用一个或多个总线、一个或多个网络(诸如分组交换网络)或总线和网络的一些组合来实现。互连108中的各种总线的总线宽度可以与其他总线相同或不同。例如,互连中的一些总线可以是128位宽,而其他总线是256位宽。因此,作为一个示例,一个主核102A-102N可以在128总线上通信,而另一个主机在256位总线上进行通信。注意,作为一种可能性,共享存储器控制器106可以直接连接到主核102A-102N中的一个或多个。此外,互连108中的各种总线和网络可以遵守相同或不同的协议。在一个示例性实施例中,主核102A-102N中的一个或多个配置有到共享存储器控制器106的点对点直接连接。这可以有助于在使用节拍级仲裁的实施例时实现高性能。
在图1中,所有主核102A-102N、包含数据库104A-104N和编码库110A-110N的共享存储器、以及共享存储器控制器106可以以公共频率进行计时,或者可以独立计时。此外,主核102A-102N、包含数据库104A-104N和编码库110A-110N的共享存储器、以及共享存储器控制器106可以同步或异步地进行计时。如果同步计时,用于包含数据库104A-104N和编码库110A-110N的共享存储器和共享存储器控制器106的时钟速度与主核102A-102N的时钟速度成比例。另外,每个都可以以不同的频率计时,并且如果异步计时,则具有不同的时钟相位。例如,在一个示例性实施例中,假设主核102A-102N以频率F计时。包括数据库104A-104N和编码库110A-110N的共享存储器和共享存储器控制器106可以以1/2F计时。在另一示例性实施例中,包括数据库104A-104N的共享存储器可以以1/4F计时,并且编码库110A-110N可以以1/2F计时,而共享存储器控制器106以1/4F计时。特定实施例的时钟速度可以在性能和功耗之间权衡,因为设备超频通常会浪费电能而低频则会引入延迟。
命令(读取和写入)扫描器和解析器112从所有主核102A-102N获取所有读取和写入命令,并且基于它们的目标地址将每个命令放入仲裁器114。在示例性实施例中,仲裁器114是仲裁器装置。
存储器控制器106被分为四个部分:前述的命令扫描器和解析器112、前述的仲裁器114、多个库队列116A-116N以及访问调度器118。仲裁器114负责与主核102A-102N的相互作用。它主要仲裁来自主核102A-102N的请求,并且负责主核102A-102N和存储器控制器106之间的握手。应当注意,尽管描绘了单个仲裁器114,但在一些示例性实施例中,存在与库/队列的数量相对应的多个仲裁器114,并且在其他示例性实施例中,一个仲裁器114用于读取,而另一个仲裁器114用于写入。库队列116A-116N用于保存要为特定存储库104A-104N提供的请求。在一个示例性实施例中,每个库队列116A-116N对应于特定的存储库104A-104N。当接收到对特定存储库(例如,存储库104B)的访问时,它被放置在相应的库队列(例如,库队列116B)中,直到其可被服务为止。应当注意,本公开中使用的术语“服务”旨在描述处理器处理特定请求的过程。这种处理通常将涉及从队列中移除请求(如果适用),确定响应于请求的数据,获得该响应于请求的数据,以及形成并发送对请求的响应。
还应当注意,尽管在该图中示出了对应于每个库队列116A-116N的单个库队列116A-116N,但是在示例性实施例中,每个库队列116A-110N实际上包括读取队列和写入队列。读取队列保存从对应的存储库104A-104N读取的请求,同时写入队列保存向对应的存储库104A-104N写入的请求。
访问调度器118为每个存储器周期形成访问模式。如下面将更详细描述的它还负责存储器控制器106和存储库104A-104N以及编码库110A-110N之间的握手。在示例性实施例中,访问调度器118是访问调度器装置。
编码库110A-110N是用于存储存储库104A-104N中的一些数据的副本的额外库。在示例性实施例中,这些副本使用专门的编码方案以压缩形式存储。访问调度器118被设计为创建利用编码库110A-110N增加访问效率的增强的访问调度。应当注意,代码通常存储在编码库110A-110N中(与数据库分离),然而,它们也可以根据编码方案保存在数据库中。换句话说,在示例性实施例中,存在编码方案,其中代码被存储在数据库中并被交织。因此,为了本公开的目的,编码库的概念是可以被包含在使用正确编码方案的数据库的构造。
在示例性实施例中,每个编码库110A-110N小于任何存储库104A-104N。这导致需要使用编码库110A-110N的附加存储器的有效利用,从而最小化所需附加存储器的数量。这与例如仅提供每个存储库104A-104N的完全编码覆盖的解决方案形成对比。
在示例性实施例中,每个编码库110A-110N被保留用于对来自存储库104A-104N的现有数据进行有效编码。传统地,当一个或多个主核102A-102N发出对单个存储库104A-104N的多次访问时,产生拖延。这些拖延被称为库冲突,并且是由如下事实产生:一次只可以访问来自特定存储库104A-104N的一个地址。在示例性实施例中,编码库110A-110N与相应的存储库104A-104N同时被访问,以帮助减轻来自库冲突的拖延。
编码库110A-110N的编码的精确功能可以基于存储库104A-104N大小和编码库110A-110N大小而变化。
在示例性实施例中,使用异或(Exclusive OR,XOR)功能将数据存储在编码库110A-110N中。这样做可以降低复杂度开销并保持代码的线性。线性代码提供最广泛的功能,因为代码的任何顺序都可以用于编码或解码。缺乏依赖性允许设计以可能的最灵活的方式使用编码库110A-110N。另外,在示例性实施例中,可以将不同的权重分配给用于XOR函数的存储器元素。例如,对于属于任何伽罗瓦域的整数值α和β,存储器元素a0和b0可被存储为αa0+βb0。另一个设计考虑可能是生成代码的压缩因子。XOR可以在2个或更多个存储器元素上执行,因此在其上执行XOR的存储器元素的数量越多,压缩因子越大(并且解码代码的复杂度越大)。例如,假设存在四个存储库A,B,C和D,分别保存元素a0至an,b0至bn,c0至cn和d0至dn。与编码库中的这些元素相对应的可能的代码可以是
ai+bi;bi+ci;ci+di以及ci+ai其中i=0到n。
应当注意,这里使用的“+”符号表示结合所涉及的一个或多个数据执行一个或多个功能。
该方案使用2个存储器元素的组合来生成代码。虽然这使用了100%额外的存储器开销,但它也可以每个周期(即4个额外的访问)实现100%的额外内存访问。另一种设计可以是通过组合所有4个存储器元素以生成代码来压缩代码:
ai+bi+ci+di其中i=0到n。
该设计以25%的内存开销为代价,每个周期提供一个额外的访问。然而,这里的解码器需要获得3个元素以便能够解码第4个元素。因此,虽然可以在单个内存位置压缩更多的数据,但是这种压缩带来额外的访问时间和复杂度的代价。上述方案使用来自不同存储库104A-104N的元素对编码库110A-110N进行“编码”。这可以被称为“库内编码”。在示例性实施例中,提供称为“库间编码”的正交编码方式,其中使用来自相同存储库的存储器元素来生成代码。此外,使用了库间和库内编码两者的实施例被预见到。
图2-5是描绘根据示例性实施例的不同编码方案的框图。图2是示出了根据示例性实施例的库内编码方案200的框图。该设计使用批编码的概念来对存储库204A-204H内的存储器202A-202H的特定行进行编码,并将这些代码存储在编码库206A-206L中。这允许使用编码库206A-206L来对待服务的编码区域进行多次访问。使用此方案,可以随时向给定的编码区域提供最多4个读取请求。从图2中可以看出,存储库204A-204H被分成两个区域208A,208B。每个区域208A,208B分配有4个存储库204A-204H。每个区域208A,208B也被分配一半的码库206A-206L。
该编码方案被设计为在发出对编码区域的顺序访问时实现最佳性能。在最佳情况访问期间,在一个周期内最多可以实现最多10个并行访问。考虑一种场景,如果内存控制器接收到对a1;b1;c1;d1;a2;b2;c2;d2;c3;d3的访问。其中,可以使用来自存储库204A的a1与编码库206A、206D、206B(分别为a1+b1;b1+c1;c1+d1)来服务al;b1c1;d1,并且可以使用来自存储库204B的b2以及分别来自编码库206C、206E以及206F的a2+d2;b2+d2;a2+c2来服务d2。最后,可以分别使用存储库204C和204D来服务c3和d3。
在最坏情况的场景下,当有对存储库204A-204H的非顺序和非连续访问时,该代码方案在一个周期中落入4次访问。例如,假设有对a1,b8,c9以及d15的请求。由于编码库206A-206L中不存在用于该组合的代码,因此没有用到并行访问的优点。然而,预取机制可以用于在库队列中预测,并且从编码库206A-206L预取代码用于随后的访问。
图3是示出了根据示例性实施例的库间编码方案和库内编码方案300的组合的框图。该设计允许每个存储库每个周期最多5次读取访问。正如图2、图3使用分批代码的概念来对存储库304A-304H内的存储器302A-302H的特定行进行编码,并将这些代码存储在编码库306A-306J中一样。值得注意的是,这个设计还混合了编码库306A-306J中的两个区域308A,308B,因此编码库306A-306J不分成多个区域。该方案中的数据使用库间代码和库内代码两者进行编码。库内代码存储在编码库306A,306B中。如果可用,这允许使用来自不同区域308A,308B的编码库306A-306J。
当发布对编码区域的顺序访问时,该设计提供最佳性能。在最佳情况场景下,可以在一个周期内实现多达11个并行访问。考虑如果内存控制器接收到对al;b1;c1;d1;a2;b2;c2;d2;a3;b3;c3;d3的访问的场景。可以使用来自存储库306F的a1并使用来自存储库306G的b1与编码库306D,306B(b1+c1;cI+d1)来服务al;b1;c1;d1,并且可以使用来自存储库304B的b2与编码库306C(a2+d2)和306E(b2+d2)来服务a2;b2;c2。最后,可以使用存储库304A、304C以及304D来服务a3;c2和d3。在这种情况下,12个请求中的11个是在一个时钟周期内被服务的。
该代码方案可以在编码区域中的一个数据库的周期中执行最多5次读取访问。这些是对存储库304A-304H的非顺序和非连续访问。例如,当访问模式为d1;d6;d9;d15;d20时,它可以从代码区域II中的底部编码库读取d1,其中它已经存储了来自代码区域I中的原始数据库的d1,d6;从代码区域I及其相关编码库中读取a9和a9+d9以获得d9;读取a15和a15+d15以获得d15;以及读取c20和c20+d20以获得d20。预取机制可以用于在队列中预测并从编码库306A-306J预取代码用于进一步的访问。
图4是描绘根据替代示例性实施例的库间编码方案400的框图。这里,使用9个存储库402A-402I和9个编码库404A-404I。编码方案400还具有相对较高的局部性3.这意味着存储器控制器可以获得三个数据元素中的两个的以对第三个进行解码。这也允许每个周期每个库的最大同时读取访问和每个周期每个库的2个同时写入访问。内存开销小于以前的设计,但由于增加的局部性,逻辑复杂度更高。
在一些示例性实施例中,可能期望将库的数量保持为2n其中n为整数。有鉴于此,9-库设计可能不是期望的。图5是描绘根据另一替代的示例性实施例的库间编码方案500的框图。这里,存在8个存储库502A-502H而不是9个。代码可以通过减少非二进制代码来实现。有9个编码库504A-504I。编码库中的三个,特别是编码库504C,504F,504G具有局部性2,而剩余的编码库504A,504B,504D,504E,504H和504I具有局部性3。
返回参考图1。如图1所示,仲裁器114负责处理来自主核102A-102N的请求。访问调度器108为每个周期调度最有效的访问。
仲裁器114为每个主核102A-102N维护一个队列。每个队列的深度可以是固定的(例如,8个请求)。当队列填满时,存储器控制器106用信号通知相应的主核102A-102N其正忙,因此主核102A-102N不能发出另一个存储器请求并因此拖延直到存储器控制器106指示队列有容纳请求的空间。仲裁器114还负责来自主核102A-102N的请求之间的仲裁。仲裁器114遍历每个队列的所有元素并确定优先顺序。它可以使用两步优先级顺序机制:第一,按照服务质量(QoS)的顺序排列请求,高QoS优先;第二,对于具有相同优先级的请求,它使用循环或类似的排序方案来排列它们。应当注意,为仲裁器114描述的这些功能实际上可以由仲裁器114的核仲裁器部分来执行。单独的库仲裁器也可以被包含在仲裁器114中。
存储库仲裁器是包含每个存储库104A-104N的读取和写入队列的单元。核仲裁器对来自主核102A-102N的请求进行仲裁,并将其填充到库队列116A-116N中。库队列116A-116N的深度也可以是固定的(例如,10个请求)。每个存储库队列116A-116N对应于一个存储库104A-104N。因此,在八个库系统中,共有八个写入队列和八个读取队列,以及主和库队列。可以将系统设置为具有单独的读取和写入队列或具有组合的读取和写入队列。
访问调度器118负责针对每个周期调度对存储库104A-104N的访问。访问调度器118查看每个存储库104A-104N的读取和写入队列,并形成最有效的访问模式。访问调度器118可以在每个队列的头部对请求进行优先化,但是在编码的存储器系统的情况下,访问调度器118可以在队列中预测,以使每个周期的访问最大化。写入队列可以保存写入,直到写入完成。可以给予读取优先于写入的优先级,直到写入队列已满。
图6是更详细地示出根据示例性实施例的访问调度器118的框图。编码状态映射600可以具有与存储库的行相对应的行和与存储库相对应的列。代码值可以被放置在编码状态图600的每个单元中,指示特定存储库中每行的代码状态。例如,如果每个单元保存两个位,则00可以指示代码是最新的,01可以指示代码过期但是新的数据在存储库中,10可以指示代码已经过期但是新的数据在编码库中,并且11可以被保留。
对于读请求,使用读取模式构建器602来服务该请求。读取模式构建器602的重点是使用编码库中的冗余来提供更多访问。图7是示出根据示例性实施例的处理读取请求的方法700的流程图。在操作702中,将变量i设置为1。在操作704中,确定i是否小于或等于该区域中的存储库的数量。若否,方法700可以结束。若是,则在操作706,对存储库中的库i的读取被服务。在操作708中,确定对另一个库的读取请求是否可以使用编码库。若否,则在操作710中,i递增1。若是,则在操作712中,使用编码库服务该读取。然后在操作714中更新编码库的可用性。然后,方法700进行到操作710。在操作710之后,方法700循环到操作704。
写入请求由访问调度器112中的写入模式构建器604来实现。如上所述,在示例性实施例中,编码系统通过使用编码库对每个周期的每个库执行2次写入。当为特定的库调度写入时,调度器从队列的头部摘取2个请求。它将第一请求写入相应的存储库。第二次写入被提交到相应行的编码库,其中该特定写入数据正在该编码库中被使用。图8是示出根据示例性实施例的处理写入请求的方法800的流程图。在操作802中,从写入队列中读取前两个请求。在操作804中,第一请求由相应的存储库服务,而第二请求由相应的编码库服务。在操作806中,更新代码状态图。对于存储到存储库的元素,代码可以更新为01,而对于存储到编码库的元素,代码可以被更新为10。
访问调度器112中的动态编码控制器606负责维护大量被访问的存储器子区域的代码。该块主要有助于减少未使用的存储器的代码存储。可以提供标识当前大量被访问的区域并向控制器指示该区域应被编码的算法。以这种方式,只需要对整个存储器的一部分进行编码。
来自各种核的存储器访问中的冲突主要发生在对共享存储器的访问时,特别是当它们被定位到某些存储器区域时。可以探索在一段时间内存储器访问的位置,以减少用于存储代码的存储器开销。在多核系统中,当各种核尝试从共享存储器位置工作时,该核倾向于产生对局部存储区域的访问。这激发了在大量访问期间对本地化区域进行编码的想法,并且在存储器访问的位置出现变化时动态地改变区域。
在示例性实施例中,当访问模式改变时,当前被编码的区域改变。也就是说,访问量最大的本地化存储器区域可以改变,然后系统使用重新编码控制器608重新编码新的本地化访问区域。在示例性实施例中,动态编码是通过将存储器划分成子区域并跟踪子区域中的访问来实现。一旦对特定子区域的访问次数达到特定阈值,则该子区域被分配成当前被编码的区域。可以使用窗口概念。系统维护子区域的表,如[起始地址,长度]。因此,每个子区域都被赋予一个起始地址和长度。任何对特定子区域的访问都被视为命中。该系统具有与每个子区域相关联的命中计数器,其为每个命中进行递增。
系统基于特定子区域的命中计数器值做出对特定子区域进行编码的决定。在特定时间的编码子区域的数量是基于子区域大小和代码存储大小。码区域的收回遵循与用于缓存的类似的近期最少使用(Least Recently Used,LRU)策略。该块实现了简单的逻辑来确定对特定区域的大量访问。它将整个内存划分为子区域。可以通过提供以下窗口参数:[起始地址,长度]动态地分配内存。控制器可以具有多个窗口参数,其约束是总长度应小于用于代码存储的可用存储器。这将允许系统设计者具有要被编码的小块的分布式存储。所描述的代码通过在各种存储库中的同一行的数据元素的线性组合来获得。地址的窗口参数主要表示行开始。
动态编码控制器606在子区域切换时复位对子区域的访问计数。新的计数确定编码子区域的下一个变化。
图9是示出根据示例性实施例的用于将缓冲器分配到存储器中的方法900的流程图。在操作902中,访问调度器从芯片级调度器接收指示分配缓冲器的期望的消息。在操作904中,确定对应于缓冲器的存储区域是否被调度用于多次访问。若否,则什么都不做。若是,则在操作906中,芯片级调度器通知访问调度器要使用的地址区域。在操作908中,确定是否存在容纳新区域的空间。如果是这样,则在操作910中,在后台中构建编码库,并且当完成时,通知访问调度器。如果没有容纳新数据的空间,则在操作912中,基于LRU策略移除一个编码区域。然后,方法900进行到操作910。
在操作916中,一旦存储器控制器接收到访问请求,访问调度器相应地调度编码库。
图10是示出根据示例性实施例的用于调度和准备一组编码库的方法1000的流程图。在操作1002中,从第一主核接收第一请求以访问多个存储库之一中的数据。在操作1004中,确定对所述数据的访问是否由于来自第二主核、以访问当前被服务的所述多个存储库之一中的所述数据的第二请求而被拖延。若是,则在操作1006中,通过访问多个编码库之一中的数据来服务第一请求,每个编码库的尺寸小于每个存储库。若否,则在操作1008中,通过访问存储库之一中的数据来服务第一请求。
虽然本公开描述了可以在任何类型的计算设备中使用的实施例,但是在一些示例性实施例中,使用诸如长期演进(Long-Term Evolution,LTE)、全球移动应用系统(GlobalSystem for Mobile Applications,GSM)或通用移动通信系统(Universal MobileTelecommunications System,UMTS)基站等无线基站。在LTE中,这些基站也称为演进节点B(Evolved Node Bs,eNB)。
还可以预见诸如移动设备和其他类型的计算设备等的其他实施例。
示例移动设备
图11是示出根据示例性实施例的移动设备1100的框图。移动设备1100可以包括处理器1102。处理器1102可以是适用于移动设备1100的任何各种不同类型的市售处理器1102(例如,XScale架构微处理器、无内部互锁流水级的微处理器(microprocessor withoutinterlocked pipeline stages,MIPS)架构处理器或另一类型的处理器1102)。诸如随机存取存储器(RAM)、闪速存储器或其他类型的存储器的存储器1104对处理器1102通常是可访问的。存储器1104也可适用于存储操作系统(operating system,OS)1106,以及应用程序1108。处理器1102可以直接地或经由适当的中间硬件耦接到显示器1110和一个或多个输入/输出(input/output,I/O)设备1112,诸如小键盘,触摸面板传感器,麦克风等。类似地,在一些实施例中,处理器1102可以耦接到与天线1116连接的收发机1114。根据移动设备1100的性质,收发机1114可以被配置为经由天线1116发送和接收蜂窝网络信号、无线数据信号或其他类型的信号。此外,在一些配置中,GPS接收机1118还可以利用天线1116来接收GPS信号。
模块、组件和逻辑
某些实施例在本文中被描述为包括逻辑或多个组件、模块或机构。模块可以构成软件模块(例如,(1)在非暂时性机器可读介质上或者(2)在传输信号中实现的代码)或硬件实现的模块。硬件实现的模块是能够执行某些操作并且可以以某种方式配置或布置的有形单元。在示例性实施例中,一个或多个计算机系统(例如,独立、客户端或服务器计算机系统)或一个或多个处理器1102可以由软件(例如,应用程序或应用程序部分)配置为操作来执行如本文所述的某些操作的硬件实现模块。
在各种实施例中,硬件实现的模块可以机械地或电子地实现。例如,硬件实现的模块可以包括被永久配置的专用电路或逻辑(例如,作为专用处理器,例如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specificintegrated circuit,ASIC))以执行某些操作。硬件实现的模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路(例如,包含在通用处理器1102或其他可编程处理器1102内)。应当理解,以专用和永久配置的电路还是以临时配置的电路(例如,由软件配置)机械地实现硬件实现的模块的决定可以由成本和时间考量来驱动。
因此,术语“硬件实现的模块”应被理解为包括有形实体,即物理构造,永久配置(例如,硬连线)或暂时地或经过瞬时配置(例如,被编程)的实体以某种方式操作和/或执行本文所述的某些操作。考虑到其中硬件实现的模块被暂时配置(例如,编程)的实施例,每个硬件实现的模块时间上不需要在任何一个瞬时配置或实例化。例如,在硬件实现的模块包括使用软件配置的通用处理器1102的情况下,通用处理器1102可以在不同时间被配置为不同的硬件实现的模块。因此,软件可以相应地配置处理器1102,例如,在一个时间点构成特定的硬件实现的模块,并且在不同的时间点构成不同的硬件实现的模块。
硬件实现的模块可以向其他硬件实现的模块提供信息并从其他硬件实现的模块接收信息。因此,所描述的硬件实现的模块可以被认为是通信耦合的。在同时存在多个这种硬件实现的模块的情况下,可以通过信号传输(例如,通过连接硬件实现的模块的适当的电路和总线)来实现通信。在多个硬件实现的模块在不同时间配置或实例化的实施例中,这种硬件实现的模块之间的通信可以例如通过存储和检索多个硬件实现的模块可以访问的存储器结构中的信息来实现。例如,一个硬件实现的模块可以执行一个操作,并将该操作的输出存储在与其通信耦合的存储设备中。然后,在稍后的时间,另一硬件实现的模块可以访问存储器设备以检索和处理存储的输出。硬件实现的模块还可以启动与输入或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。
本文描述的示例性方法的各种操作可以至少部分地由临时配置(例如通过软件)或永久地配置以进行相关操作的一个或多个处理器1102来执行。无论是临时还是永久配置,这样的处理器1102可以构成操作以执行一个或多个操作或功能的处理器实现的模块。在一些示例性实施例中,这里提到的模块可以包括处理器实现的模块。
类似地,本文描述的方法可以至少部分地由处理器实现。例如,方法的至少一些操作可由一个或多个处理器1102或处理器实现的模块执行。某些操作的性能可以分布在一个或多个处理器1102中,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例性实施例中,一个处理器1102或多个处理器1102可以位于单个位置(例如,在家庭环境,办公室环境或服务器场内),而在其他实施例中,处理器1102可以分布于多个位置。
一个或多个处理器1102还可以操作以支持“云计算”环境中或作为“软件即服务”(software as a service,SaaS)的相关操作的性能。例如,至少一些操作可由一组计算机执行(作为机器的示例,包括处理器1102),这些操作可经由网络(例如,因特网)以及经由一个或多个适当的接口(例如,应用程序接口(application program interfaces,API))被访问。
电子设备和系统
示例性实施例可以在数字电子电路中、在计算机硬件、固件或软件中或它们的组合中实现。示例性实施例可以使用计算机程序产品实现,例如有形地在信息载体中实现的计算机程序,例如在机器可读介质中用于由数据处理装置的操作执行或用来控制数据处理装置的操作,例如可编程处理器1102,计算机或多个计算机。
计算机程序可以以任何形式的编程语言编写,包括编译或翻译语言,并且可以以任何形式被利用,包括作为独立程序或作为模块、子例程或适合在计算环境中使用的其他单元。计算机程序可以部署为在一个计算机上或在一个站点的多个计算机上执行或分布在多个站点上并由通信网络互连。
在示例性实施例中,可以由执行计算机程序的一个或多个可编程处理器1102执行操作,以通过对输入数据进行操作并产生输出来执行功能。方法操作也可由专用逻辑电路执行,并且示例性实施例的装置可被实现为专用逻辑电路,例如FPGA或ASIC。
计算系统可以包括客户端和服务器。客户端和服务器通常距离彼此较远,并且通常通过通信网络进行交互。客户端和服务器之间的关系是由于在相应的计算机上运行并且彼此之间具有客户端-服务器关系的计算机程序而产生的。在部署可编程计算系统的实施例中,应当理解,硬件和软件架构都值得考虑。具体来说,应当理解,是否在永久配配置的硬件(例如,ASIC),在临时配置的硬件(例如,软件和可编程处理器1102的组合)或永久地和临时配置的硬件的组合中实现某些功能的选择可以是一种设计选择。以下列出了在各种示例性实施例中可以部署的硬件(例如,机器)和软件架构。
示例机器架构和机器可读介质
图12是以计算机系统1200的示例形式的机器的框图,其中可以执行指令1224以使机器执行本文所讨论的任何一种或多种方法。在替代的实施例中,机器作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网的部署中,该机器可以在服务器-客户端网络环境中的服务器或客户端机器的能力下运行,也可以作为对等(或分布式)网络环境中的对等机器运行。该机器可以是个人计算机(personal computer,PC)、平板电脑、机顶盒(set-top box,STB)、个人数字助理(personal digital assistant,PDA)、蜂窝电话、网络设备、网络路由器、交换机或网桥,或任何能够执行指定要由该机器要采取的操作的指令(顺序或其他)的机器。此外,尽管仅示出了单个机器,但术语“机器”还应被视为包括单独或共同执行一组(或多组)指令1224以执行所讨论的任何一种或多种方法的机器的集合。
示例性计算机系统1200包括经由总线1208彼此通信的处理器1202(例如,CPU,图形处理单元(graphics processing unit,GPU)或两者),主存储器1204和静态存储器1206。计算机系统1200还可以包括视频显示器1210(例如,液晶显示器(liquid crystaldisplay,LCD)或阴极射线管(cathode ray tube,CRT))。计算机系统1200还包括字母数字输入设备1212(例如,键盘或触敏显示屏)、光标控制设备1214(例如,鼠标)、存储单元1216、信号生成设备1218(例如,扬声器)和网络接口设备1220。
机器可读介质
存储单元1216包括机器可读介质1222,其上存储了一组或多组指令1224(例如,软件),其通过本文所述的任何一种或多种方法或功能实现或被使用。在由计算机系统1200执行期间,主存储器1204和处理器1202也构成机器可读介质1222,指令1224还可以完全地或至少部分地驻留在主存储器1204内和/或处理器1202内。
虽然机器可读介质1222在示例性实施例中示出为单个介质,但术语“机器可读介质”可以包括存储一个或多个指令1224或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的缓存和服务器)。术语“机器可读介质”还应被视为包括能够存储、编码或携带指令1224以供机器执行并使机器执行本发明的任何一种或多种方法,或者能够存储、编码或携带由这些指令1224所使用或与之相关联的数据结构的任何有形介质。术语“机器可读介质”应相应地被认为包括但不限于固态存储器,以及光和磁介质。机器可读介质1222的具体示例包括非易失性存储器,其包括例如半导体存储器件,例如可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)和闪存设备、磁盘如内部硬盘和可移动磁盘、磁光盘、以及CD-ROM和DVD-ROM磁盘。
传输介质
指令1224还可以使用传输介质通过通信网络1226发送或接收。指令1224可以使用网络接口设备1220以及多个公知的传输协议(例如,HTTP)中的任何一个传输。通信网络的示例包括局域网(local area network,LAN),广域网(wide area network,WAN),因特网,移动电话网络,普通老式电话服务(plain old telephone service,POTS)网络和无线数据网络(例如,WiFi和WiMax网络)。术语“传输介质”应被视为包括能够存储、编码或携带供机器执行的指令1224的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以便于这种软件的通信。
虽然已经参考具体示例性实施例描述了实施例,但是显而易见的是,在不脱离本公开的更广泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。形成其一部分的附图以说明的形式而非限制的图示主题可以实践的具体实施例。所描述的实施例被足够详细地描述,以使本领域技术人员能够实践本文公开的教导。可以利用和导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,这个具体实施方式不应被认为是限制性的,并且各种实施例的范围仅由所附权利要求以及这些权利要求的等同物的全部范围来限定。
在本文中,本发明的主题的这样的实施例可以单独地和/或共同地被称为术语“发明”,仅为了方便起见,并且不意图将本申请的范围自愿地限于任何单个发明或创造性概念,如果实际上公开了多于一个的发明。因此,尽管这里已经示出和描述了具体实施例,但是应当理解,为实现相同目的而计算的任何装置可以代替所示的具体实施例。本公开旨在覆盖各种实施例的任何和所有修改或变化。上述实施例的组台以及本文中未具体描述的其他实施例对于本领域技术人员在参考上述描述后将是显而易见的。
存储器访问系统的一个实施例包括访问请求接收装置,其用于从第一主核接收第一请求,以访问多个存储库之一中的数据;以及确定装置,用于确定对所述数据的访问是否由于来自第二主核、以访问所述多个存储库之一中的所述数据的第二请求而被拖延,所述第二请求当前正在被服务。该系统还包括服务装置,响应于由确定装置做出的确定对所述数据的访问被拖延,通过访问多个编码库之一中的数据来服务所述第一请求,每个编码库的尺寸小于每个存储库。在一个实施例中,存储器系统还包括编码装置,其中编码库之一中的数据被编码,使得服务所述第一请求包括通过从所述存储库获得至少一个其他数据片来对所述数据进行解码并且使用所述至少一个其他数据片解码数据来解码所述数据。该系统还可以包括用于将所述多个编码库之一中的数据与来自数据库的数据进行交织来将所述多个编码库之一存储在存储库中的交织装置。系统还可以包括用于在存储在多个库队列中的请求上使用预测进程来加载所述一个或多个编码库中的数据的加载装置。
示例:
可以在各个示例性实施例中实现上述特征的各种组合。例如,上述预测进程可以在请求被并行处理的系统中实现,一个或多个编码库中的数据被编码,使得服务第一请求包括通过从所述存储库获得至少一个其他数据片来对所述数据进行解码并且使用所述至少一个其他数据片解码数据来解码所述数据,编码库经由异或(XOR)运算或其任何组合来编码所述编码库。另外,任何这些实施例中的系统可以被实现为无线基站。
此外,上述关于将所述多个编码库之一中的数据与来自数据库的数据进行交织可以与数据被编码的实施例组合,使得对第一请求的服务包括通过从所述存储库获得至少一个其他数据片来对所述数据进行解码并且使用所述至少一个其他数据片解码数据来解码所述数据。另外,预测进程可以与这些实施例中的任一个组合。
Claims (20)
1.一种系统,包括:
多个主核处理器;
多个存储库;
一个或多个编码库,所述一个或多个编码库中的每一个小于所述一个或多个存储库中的每一个;
多个库队列,对用于所述存储库的请求进行排队;
耦接在所述主核处理器和库查询之间的仲裁器,以接收来自所述主核处理器的请求并将所述请求提供给所述库队列;以及
耦接在所述库队列、所述存储库和所述一个或多个编码库之间的访问调度器,以处理所述请求,使得可由所述一个或多个编码库服务的冲突请求被提供给所述一个或多个编码库。
2.根据权利要求1所述的系统,其中所述处理所述请求包括并行处理所述请求以允许经由多个编码库从存储库并行访问信息。
3.根据权利要求1所述的系统,其中所述一个或多个编码库中的所述数据被编码,使得服务第一请求包括通过从所述存储库获得至少一个其它数据片来对所述数据进行解码并且使用所述至少一个其他数据片来解码所述数据。
4.根据权利要求3所述的系统,其中所述编码库之一中的所述编码的数据经由异或XOR运算进行编码。
5.根据权利要求1所述的系统,其中所述仲裁器被配置为在存储在所述库队列中的请求上使用预测进程来加载所述一个或多个编码库中的数据。
6.根据权利要求5所述的系统,其中所述仲裁器还被配置为经由后台进程来填充和更新用于写入的代码。
7.根据权利要求2所述的系统,其中使用库间编码方案在所述编码库中编码所述数据。
8.根据权利要求2所述的系统,其中使用库内编码方案在所述编码库中编码所述数据。
9.根据权利要求2所述的系统,其中使用库间和库内编码方案的组合在所述编码库中编码所述数据。
10.根据权利要求1所述的系统,其中所述系统位于无线基站中。
11.根据权利要求10所述的系统,其中所述无线基站是长期演进LTE基站。
12.一种方法,包括:
从第一主核接收第一请求以访问多个存储库之一中的数据;
确定对所述数据的访问是否由于来自第二主核、以访问所述多个存储库之一中的所述数据的第二请求而被拖延,所述第二请求当前正在被服务;以及
响应于对所述数据的所述访问被拖延的确定,通过访问多个编码库之一中的数据来服务所述第一请求,每个编码库的尺寸小于每个存储库。
13.根据权利要求12所述的方法,其中,所述编码库之一中的所述数据被编码,使得服务所述第一请求包括通过从所述存储库获得至少一个其他数据片来对所述数据进行解码并且使用所述至少一个其他数据片解码数据来解码所述数据。
14.根据权利要求12所述的方法,其中通过将所述多个编码库之一中的数据与来自数据库的数据进行交织来将所述多个编码库之一存储在存储库中。
15.根据权利要求12所述的方法,还包括在存储在多个库队列中的请求上使用预测进程来加载所述一个或多个编码库中的数据。
16.根据权利要求15所述的方法,其中每个库队列对应于不同的存储器队列。
17.一种非暂时的计算机可读存储介质,包括当由机器的至少一个处理器执行时使所述机器执行操作的指令,所述操作包括:
从第一主核接收第一请求以访问多个存储库之一中的数据;
确定对所述数据的访问是否由于来自第二主核、以访问所述多个存储库之一中的所述数据的第二请求而被拖延,所述第二请求当前正在被服务;以及
响应于对所述数据的所述访问被拖延的确定,通过访问多个编码库之一中的数据来服务所述第一请求,每个编码库的尺寸小于每个存储库。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述编码库之一中的所述数据被编码,使得服务所述第一请求包括通过从所述存储库获得至少一个其他数据片来对所述数据进行解码并且使用所述至少一个其他数据片解码数据来解码所述数据。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中所述编码库之一中的所述编码的数据经由异或XOR运算进行编码。
20.根据权利要求17所述的非暂时性计算机可读存储介质,其中所述操作还包括在存储在多个库队列中的请求上使用预测进程来加载所述一个或多个编码库中的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/810,895 US10180803B2 (en) | 2015-07-28 | 2015-07-28 | Intelligent memory architecture for increased efficiency |
US14/810,895 | 2015-07-28 | ||
PCT/CN2016/092030 WO2017016503A1 (en) | 2015-07-28 | 2016-07-28 | Intelligent memory architecture for increased efficiency |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851059A true CN107851059A (zh) | 2018-03-27 |
CN107851059B CN107851059B (zh) | 2021-01-29 |
Family
ID=57882570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680042477.3A Active CN107851059B (zh) | 2015-07-28 | 2016-07-28 | 提高效率的智能存储器架构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10180803B2 (zh) |
EP (1) | EP3317767B1 (zh) |
JP (1) | JP6715920B2 (zh) |
CN (1) | CN107851059B (zh) |
WO (1) | WO2017016503A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109461113A (zh) * | 2018-10-11 | 2019-03-12 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
CN110166840A (zh) * | 2019-05-15 | 2019-08-23 | 视联动力信息技术股份有限公司 | 一种业务处理方法、系统及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9760432B2 (en) | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
KR20170136382A (ko) * | 2016-06-01 | 2017-12-11 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
CN110825312B (zh) * | 2018-08-10 | 2023-06-23 | 昆仑芯(北京)科技有限公司 | 数据处理装置、人工智能芯片及电子设备 |
US11347644B2 (en) * | 2018-10-15 | 2022-05-31 | Texas Instruments Incorporated | Distributed error detection and correction with hamming code handoff |
US20220100575A1 (en) * | 2020-09-25 | 2022-03-31 | Huawei Technologies Co., Ltd. | Method and apparatus for a configurable hardware accelerator |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7698498B2 (en) * | 2005-12-29 | 2010-04-13 | Intel Corporation | Memory controller with bank sorting and scheduling |
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
CN103077123A (zh) * | 2013-01-15 | 2013-05-01 | 华为技术有限公司 | 一种数据写入和读取方法及装置 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385708B1 (en) | 1998-11-16 | 2002-05-07 | Infineon Technologies Ag | Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses |
US6757791B1 (en) | 1999-03-30 | 2004-06-29 | Cisco Technology, Inc. | Method and apparatus for reordering packet data units in storage queues for reading and writing memory |
US6757784B2 (en) * | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US6877077B2 (en) | 2001-12-07 | 2005-04-05 | Sun Microsystems, Inc. | Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency |
US7093059B2 (en) | 2002-12-31 | 2006-08-15 | Intel Corporation | Read-write switching method for a memory controller |
US7127574B2 (en) | 2003-10-22 | 2006-10-24 | Intel Corporatioon | Method and apparatus for out of order memory scheduling |
US7475278B2 (en) | 2005-11-15 | 2009-01-06 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives |
US7480829B2 (en) | 2005-11-15 | 2009-01-20 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory |
CN100530070C (zh) * | 2006-11-24 | 2009-08-19 | 骆建军 | 基于flash的硬盘 |
US20090100236A1 (en) | 2007-10-15 | 2009-04-16 | Ricardo Spencer Puig | Copying data onto a secondary storage device |
CN100499556C (zh) | 2007-10-17 | 2009-06-10 | 中国人民解放军国防科学技术大学 | 异构多核处理器高速异步互连通信网络 |
US8245232B2 (en) * | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
CN101196857B (zh) | 2008-01-04 | 2010-11-10 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
US8650364B2 (en) | 2008-05-28 | 2014-02-11 | Vixs Systems, Inc. | Processing system with linked-list based prefetch buffer and methods for use therewith |
KR101638764B1 (ko) * | 2008-12-19 | 2016-07-22 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 균일한 판독 대기시간을 위한 중복 데이터 저장 |
US9442846B2 (en) | 2009-03-17 | 2016-09-13 | Cisco Technology, Inc. | High speed memory systems and methods for designing hierarchical memory systems |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
GB2484416B (en) | 2009-06-26 | 2015-02-25 | Intel Corp | Optimizations for an unbounded transactional memory (utm) system |
US8615629B2 (en) * | 2010-01-18 | 2013-12-24 | Marvell International Ltd. | Access scheduler |
US8838853B2 (en) * | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
US8560796B2 (en) * | 2010-03-29 | 2013-10-15 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9348696B2 (en) | 2010-10-01 | 2016-05-24 | Pure Storage, Inc. | Distributed multi-level protection in a raid array based storage system |
JP5879527B2 (ja) | 2011-05-25 | 2016-03-08 | パナソニックIpマネジメント株式会社 | 情報処理装置および情報処理方法 |
WO2013057764A1 (en) | 2011-10-19 | 2013-04-25 | Hitachi, Ltd. | Storage system |
US9239786B2 (en) | 2012-01-18 | 2016-01-19 | Samsung Electronics Co., Ltd. | Reconfigurable storage device |
KR101349899B1 (ko) | 2012-03-16 | 2014-01-14 | 한국과학기술원 | 메모리 제어기 및 이의 메모리 접근 스케줄링 방법 |
US9158683B2 (en) * | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US8909860B2 (en) | 2012-08-23 | 2014-12-09 | Cisco Technology, Inc. | Executing parallel operations to increase data access performance |
CN104813400A (zh) | 2012-11-30 | 2015-07-29 | 惠普发展公司,有限责任合伙企业 | 用于形成基于突发的符号的存储器控制器 |
US9118352B2 (en) * | 2012-12-26 | 2015-08-25 | Allen LeRoy Limberg | Remedying low densities of ONEs in transmission and reception of digital television signals |
US10089018B2 (en) * | 2015-05-07 | 2018-10-02 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with multiple read ports and multiple write ports per cycle |
US9921754B2 (en) * | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10437480B2 (en) * | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US9870163B2 (en) * | 2016-04-27 | 2018-01-16 | Globalfoundries Inc. | Double bandwidth algorithmic memory array |
-
2015
- 2015-07-28 US US14/810,895 patent/US10180803B2/en active Active
-
2016
- 2016-07-28 JP JP2018504271A patent/JP6715920B2/ja active Active
- 2016-07-28 WO PCT/CN2016/092030 patent/WO2017016503A1/en active Application Filing
- 2016-07-28 EP EP16829868.5A patent/EP3317767B1/en active Active
- 2016-07-28 CN CN201680042477.3A patent/CN107851059B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7698498B2 (en) * | 2005-12-29 | 2010-04-13 | Intel Corporation | Memory controller with bank sorting and scheduling |
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
CN103077123A (zh) * | 2013-01-15 | 2013-05-01 | 华为技术有限公司 | 一种数据写入和读取方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109461113A (zh) * | 2018-10-11 | 2019-03-12 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
CN110166840A (zh) * | 2019-05-15 | 2019-08-23 | 视联动力信息技术股份有限公司 | 一种业务处理方法、系统及装置 |
CN110166840B (zh) * | 2019-05-15 | 2021-05-14 | 视联动力信息技术股份有限公司 | 一种业务处理方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP6715920B2 (ja) | 2020-07-01 |
JP2018525737A (ja) | 2018-09-06 |
US10180803B2 (en) | 2019-01-15 |
EP3317767B1 (en) | 2021-12-01 |
US20170031619A1 (en) | 2017-02-02 |
CN107851059B (zh) | 2021-01-29 |
EP3317767A1 (en) | 2018-05-09 |
WO2017016503A1 (en) | 2017-02-02 |
EP3317767A4 (en) | 2018-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107851059A (zh) | 提高效率的智能存储器架构 | |
CN105978704B (zh) | 用于创建新的云资源指令集体系结构的系统和方法 | |
CN108369562B (zh) | 具有增强型访问调度器的智能编码存储器架构 | |
EP3155521B1 (en) | Systems and methods of managing processor device power consumption | |
US11049013B1 (en) | Encoding of weight values stored on neural network inference circuit | |
US11210586B1 (en) | Weight value decoder of neural network inference circuit | |
CN107636626A (zh) | 用于存储器管理单元(mmu)的转换的推测性预取 | |
CN103229145B (zh) | 用于电信网络应用的无锁缓冲器管理方案 | |
CN107526546A (zh) | 一种Spark分布式计算数据处理方法及系统 | |
CN109710175A (zh) | 用于数据存储管理的设备和方法 | |
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
CN103034617A (zh) | 用于实现可重构系统配置信息存储的缓存结构和管理方法 | |
CN101872314A (zh) | 用于多处理器的动态调度中断控制器 | |
TW201133487A (en) | Memory system | |
CN103309431B (zh) | 动态频率调整 | |
KR102636925B1 (ko) | 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치 | |
CN109788489A (zh) | 一种基站规划方法及装置 | |
CN102521049B (zh) | 多核间内存调度方法 | |
CN107077390A (zh) | 一种任务处理方法以及网卡 | |
US11568227B1 (en) | Neural network inference circuit read controller with multiple operational modes | |
CN1262934C (zh) | 具有不同资源访问方案的系统集成代理程序 | |
CN104239412B (zh) | 数据存储库中应用至存储库的数据映射及相关方法、系统和计算机可读介质 | |
US9984176B2 (en) | Hash value capable of generating one or more hash functions | |
CN109863478A (zh) | 用于异构并行结构的细粒度功率优化 | |
Zhang et al. | EPA: The effective pipeline architecture for CNN accelerator with high performance and computing efficiency based on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |