CN1027103C - 分布处理存储器 - Google Patents

分布处理存储器 Download PDF

Info

Publication number
CN1027103C
CN1027103C CN91101759A CN91101759A CN1027103C CN 1027103 C CN1027103 C CN 1027103C CN 91101759 A CN91101759 A CN 91101759A CN 91101759 A CN91101759 A CN 91101759A CN 1027103 C CN1027103 C CN 1027103C
Authority
CN
China
Prior art keywords
data
address
storer
memory
chip
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.)
Expired - Fee Related
Application number
CN91101759A
Other languages
English (en)
Other versions
CN1056356A (zh
Inventor
希瓦林·S·马汉特-谢特
德里克·J·史密斯
巴萨瓦拉·L·帕瓦特
乔治·R·多丁顿
沃伦·L·比恩
马克·G·哈沃德
托马斯·J·阿顿
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN1056356A publication Critical patent/CN1056356A/zh
Application granted granted Critical
Publication of CN1027103C publication Critical patent/CN1027103C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory

Abstract

存储器芯片包含有数据存储器(202)、嵌入式逻辑电路(206)和广播存储器(204),有两种操作模式:通常的存储器模式加上本地计算模式。这些芯片和与地址相关的存储器系统分级排列。

Description

本发明通常涉及分布式处理,尤其涉及带逻辑电路的集成存储器和用这类带逻辑电路的集成存储器组成的系统。
典型的冯·诺伊曼计算机系统由一个中央处理机和若干存储芯片组成。增设多重处理器用平行处理来增加处理能力是困难的事,而对单个处理器增设存储器则相对较简单。这是因为处理器需要经常访问系统总线,当系统中存在多个处理器时,就要求实现对总线访问的随意性。若不能从存储器到每个处理器提供足够的输入/输出(I/O)总线带宽,就不能有效地使用所有可用的CPU周期。因此,现有的平行处理系统被称为有限总线式或有限I/O式的,它需要昂贵的CPU到存储器带宽和额外的高价处理器来提高系统通过量。
在使用专用存储器的单处理器系统和具有对每位数据进行计算的计算硬件的系统之间的连续域内,计算(能力)与存储器大小的比率是可以连续变化的。一个设计可具有很大的计算能力,如每秒作几百万次运算(MIPS),但由于处理器等待数据要浪费周期,所以不是所有的潜在MIPS都能加以利用。系统的性能受系统的整体带宽制约。系统带宽可定义成总线数目和计时频率的乘积。于是 系统性能花费函数就可以由它的电能耗费来计算:
花费=带宽×容量×(电压振幅)2
对于给定的系统MIPS和系统带宽,通过减小总线容量和/或总线信号振幅可以使该花费变成最小。传统的改进系统带宽的方法包括加快门电路速度、提高芯片复杂度和增加引线数。这些方法获得了成功,但由于使集成电路(IC)制造技术花费更高和/或增加了封装的费用,使金钱方面的消耗以及电能方面的消耗都增加了。
并行处理领域的研究人员正在努力克服通用的平行硬件和软件内在的困难。通常,把问题分成若干大小相似的部分,每部分能有效地利用大规模平行处理机器中的成百成千个可用的处理元件,这种分段法是大有希望的。在商用系统中,可以对特定的应用系统的相近项进行清楚的定义,以便容易地解决分段问题。
当计算机系统的大小增长时,计算能力和存储器容量之间会产生失配。有几种计算任务例如数字信号处理需要的计算周期与系统规模成正比,并且存储器和中央处理器之间的总线通信限制了处理速度。基于把计算能力分配给存储器的解决方法已经知道了许多年了,但由于它涉及非冯·诺伊曼计算结构,这种解决方法基本上被忽略了。由牛津计算机公司开发的一种灵巧存储器的最新型式,在Cushman的“用大规模平行处理对矩阵作分解运算”,(刊于《甚大规模集成电路系统设计》1988年12月号第18-32页)和Morton的“智能存储器芯片进入光学计算”(刊于《激光世界》1989年4月号第163-164页)中均有所描述。然而,这种灵巧存储器有局限性,包括只能从中央处理器串行写入各存储器芯片以及在逻辑复杂性方面严格的制约。
本发明提供的计算机存储芯片包括内部计算逻辑和辅助存储器,它们可以同时传播到所有芯片和传播到用这种存储器的系统。这种存储器可以有标准的封装引脚结构。这种结构允许通过简单地增加芯片数量来扩大平行处理元件的数量,并允许大规模平行处理。这种芯片也可以用作传统的RAM。
这解决了已知系统的问题,使数据在插件板之间移动量少。芯片通过把计算并入存储器中,减少数据传送到主CPU的次数来实现以上目标。
对系统增加的通过量的第一轮估计可由初始数据对“信息”数据的比例给出。例如,对于矩阵乘的情况(后面将详细描述),假设从256个初始字节获得的结果是两字节的信息。仅有2个字节信息送到CPU而不是256行,因此,系统的改进是明显的。也就是提高了128倍。
根据包括在芯片中数据通道逻辑的总数和系统中芯片的数量,MIPS的数目和通过量所提高的数量级可以高于前面例子的128倍,这种芯片设计允许通过简单地增加芯片数目就能容易地实现扩展,并提供所希望的分布平行处理能力。
商用存储器的经济性要求器件密度最大,而加工和封装费用最小。把计算的工作量从CPU转移到存储器利用了存储器的制造规则,同时大大减小了所需的CPU总线的带宽。最佳实施例的设计也为系统设计者提供了处理能力对费用之间的伸缩性,因为处理单元的数目可以由存储器的芯片数来定义。
图1a-1c是第一个最佳实施例的存储器、系统和寻址的框图;
图2是第一个最佳实施例存储器的框图;
图3是第一个最佳实施例存储器的部分示意图;
图4是第二个最佳实施例存储器的框图;
图5a-5c是第三个最佳实施例存储器的示意图;
图6是第四个最佳实施例系统的示意图;
图7是第四个最佳实施例存储器的框图;
图8-9是第五个最佳实施例存储器的框图;
图10a-10c是第六个最佳实施例系统的示意图;
图11示出了第六个最佳实施例系统的分级;
图12示出了第六个最佳实施例系统的分级中的数据通道;
图13示出了第六个最佳实施例存储器的输出引脚;
图14示出了第六个最佳实施例存储器的内部和外部块结构;
图15-16示出了一种应用。
图1a是第一最佳实施例的框图,存储器110,111,112,…139接入系统100,系统100包括一个中央处理单元(CPU)102、8位数据总线104、11位地址总线106(存储器110、111、 112、…、139每个具有大小为2K×8的SRAM段)、5位芯片选择解码器108用于选择30个存储芯片110、111、112、…、139和I/O109.CPU102可以是简单的处理器和Motorola6800或lntel8080,并具有“允许写入”和“准备”引脚与每个存储器110、111、…、139相连。虽然可以用存储器110、111、…、139中的每个来实现通用的处理任务(存储器110、111、…、139每个为2K×8个SRAM,总计为60K×8),由于如下文描述的存储器110、111、…、139的结构,系统100尤其适用于例如数字信号处理一类的包含大量计算的应用。
参见图1b和图2,事实上,每个存储器110、111、…、139都是一个二重存储器(数据存储器和广播存储器)加上一个嵌入式数据通道,这通道包括专用的应用逻辑线路。存储芯片中的嵌入式逻辑线路提供了在片电路所具有的低价带宽和很高的存储器访问速度等优点。而且,每块芯片中广播存储器所含的电路允许系统同时使用每块芯片的数据通道处理部件来进行大规模的平行分布计算。这些存储芯片共用一个标准的连接一组SRAM存储器的输出引脚。
芯片布局如图1b所示,每个存储器由三个主要的电路块组成。
a)用作数据RAM或数据存储器202的一个2K×8SRAM,
b)应用逻辑和数据通道206,和
c)作为广播RAM或广播存储器204的一个256×8SRAM。
芯片平面布置图明显地反应出三个部分。从顶端到底部,可以从数据存储器和应用逻辑以及应用逻辑和广播存储明显的界线看出数据存储器、应用逻辑和广播存储器。数据存储器部分包含所有的地址、芯片选择逻辑和Vcc端。广播存储器部分包含所有的I/O端和
Figure 911017593_IMG2
。这种经反复考虑的平面布置设计方法允许可计划的芯片结构,很容易适用于定做的各种尺寸的应用逻辑部分。逻辑线路可以定制设计(如门阵列、标准单元等)或由用户按指定的应用用熔丝或非熔丝编程进行编排。逻辑线路也可以是那些常见的具有在片指令译码的可编程逻辑,如Harvard体系结构。
若采用高密度设计,可以使用与标准32K×8SRAM相似的输出引脚,CPU可以具有32位地址。
第一个最佳实施例也可以对能包含在芯片中的某些逻辑线路使用外部信号引脚。
考虑图1a所示的有30个2K×8存储器的60K位存储器系统。把每个芯片的数据存储器如在冯·诺伊曼系统中的一样映射为CPU的地址空间。准确地说,芯片110占用CPU地址0-2K,芯片111占用地址2K-4K,依此类推。然而,把每个芯片的广播存储器的256个字节设计成占用相同的CPU地址空间。在这种方案下,所有芯片中的广播存储器可能同时响应于CPU的一个写信号。假设把CPU地址空间60K-62K分配给广播存储器来实现该目的。这个区域内只有256个字节对应于每个芯片中的实有存储器。图1c示出了这种情况。
图1a示出了选择存储器系统芯片的传统方法,CPU提供5个高位地址完成芯片选择译码。第一个最佳实施例的芯片选择方法也采用5个高位地址译码进行数据存储器访问,但如下所述使用每个芯片中的寄存器进行广播存储器的访问。可编程广播存储器在CPU地址空间中的位置由每块芯片上的初始化寄存器(“CSB寄存器”)设置。根据从CPU来的广播传输,可用CBS寄存器初始化把芯片系统划分成组。初始化可在任一时刻由CPU进行,使系统实现简单的重新组合。在各个芯片上顺序并多次写入一系列二个专门的地址来完成其初始化。这个过程需要依次进行多次,以消除把写到数据存储器的随机值作为初始化的可能性。在每个芯片上用一个事件计数器检测该顺序,然后把数据总线上的数据写到CSB寄存器,以便把芯片分组定义。地址每变化一次,地址变换检测(ATD)电路产生一个脉冲为事件计数器提供一个时钟。这就是事件为什么是一系列两个不同的地址。在初始化期间,5个高位地址芯片选择信号一次挑出一个芯片并写到这个CSB寄存器,但在广播指令检测期间停止工作。
所有的芯片注视地址总线上的活动,并允许地址总线用于指令广播。该方案允许所有芯片同时询问指令,因为指令询问不需要5个高位地址作芯片选择。广播指令中包括芯片的组号,且仅有所需组中的芯片响应于命令。对于第一个最佳实施例的芯 片2K×8结构,指令字段长11位,前三位表示命令,接着的5位中有一位形成ATD信号,最后三位通过与存贮在CSB寄存器内的值比较定义该芯片所属的组。例如,下表用RRR表示组号来显示一种可能的编码。
指令    地址位
开始广播写模式    000    00001    RRR
000    00000    RRR
终止广播写模式    001    00001    RRR
001    00000    RRR
开始本地计算    010    00001    RRR
010    00000    RRR
开始自测试模式    011    00001    RRR
011    00000    RRR
中断本地计算    100    00001    RRR
100    00000    RRR
当控制逻辑检测到一串顺序的值:地址总线上的数据与指令相符、中间位是预期的值且所需要的组与设置在CSB寄存器中的组号一致时,芯片事件计数器的数值增加1。当事件计数器达到顺序事件的一个由统计导出的数值时,事件计数器达到饱和。然后控制逻辑电路开始对那个组中的所有芯片进行所请求的操作。
例如,假设系统已经初始化为4个广播组:000、001、010和011。为了使组001开始广播写模式,CPU102首先读取任意一个芯片的000    00001    001地址,然后读取地址000    00000    001以提供一个由ATD产生的时钟脉冲,引起在组001中的所有芯片上的事件计数器增加1。一串这样的读操作使组001中每个芯片的事件计数器饱和,并通知在片控制逻辑完成所请求的命令000(开始广播写模式)。在该指令下,在组001中的所有芯片上的广播存储器芯片选择寄存器(CSB)是工作的。然后,CPU执行一系列正常的写周期,对组001中的每个芯片的广播存储器同时进行写入。在广播写模式期间,一个芯片可以同时使CSB和数据存储器的芯片选择(CSD)处于工作状态,所以在片逻辑线路将把这解释为写到芯片的广播存储器。当CPU102完成广播写任务后,它重复上述过程,通过把001    00001    001置于地址总线上来执行终止广播写模式的指令。这就通知组001内的芯片使其CSB处于不工作状态并进入正常模式。
注意,该芯片选择方案具有以下优点:
1.没有专门的印刷线路板布线;
2.系统中每块芯片的广播存储器在CPU地址空间中具有可编程的“软”地址。这使系统的重新配置变得更为方便。
3.在标准的SRAM封装上不需要另外的引脚。
4.允许指令同时从CPU传播到系统中的任一芯片或所有芯片。指令可以用来进行诸如本地计算或自测试等芯片操作。
另一种替代的芯片选择方案利用芯片级译码和插片板级译码的组合,按如下所述的方法在给定的CPU地址空间中选出一个(或更多个)广播存储器。考虑图1a所示的具有30个2K×8存储器的60K字节的存储系统。把每块芯片的数据存储器如在传统系统中一样映射为CPU102的地址空间。也就是说芯片110占用CPU地址0-2K,芯片111占用CPU地址2K-4K,依此类推一直到芯片139占用CPU地址58K-60K。由11位地址总线106定义每个数据存储器的2K区间。
在上述供替代的芯片选择方案中,通常用来对32个芯片选择CSD信号译码的前5位地址可以为全部存储芯片110-139所使用,这些芯片中的每一块注视在整个CPU地位空间中的活动,以便对CSD和CSB进行在片译码。为实现这个目的,芯片外壳上额外还要有5个引脚。5个高位地址信号的每一位在插件板级上被取反,并且其真码和反码由多个存储芯片引出。然后系统设计者把芯片或连接到每个信号的真码或连接到每个信号的反码。简单地说,每个芯片可以含有一些非门,通过连接真码或反码松成一个在片寄存器。
为产生CSB和把芯片的广播存储器分成组,在每个芯片上用一个专用在存储器地址寄存器来存贮该芯片的广播存储器的芯片选择地址。这与前面所述的芯片选择方案中的CSB寄存器相似。用一组5个非门可获得5个高位地址的每一位的真码和反码。由寄存器内的值来决定用真码来产生CSB或者用反码来产生CSB,因此CSB仍是一个可编程的项。
如果所有芯片的广播存储器都映射到同样的地 址空间,那么,就可能同时对所有的芯片中的广播存储器进行写入。可用CPU地址空间60K到60.25K对应于所有广播存储器。该区域的256个字节对应于每个芯片中真实的广播存储器地址。图1c示出了这种映射。
图2是第一最佳存储器110的框图,存储器110用硅CMOS集成电路制成,其封装具有与标准的编成2K×8的16KSRAM相同的输出引脚。这就意味着把一个现有的16K存储芯片系统转换成与系统100相似的系统,仅须将存储器110的芯片对原系统的16K存储芯片进行替换就行。存储器100包括一个2K×8的SRAM202(数据存储器)、一个256×8的SRAM204(广播存储器)、逻辑线路206(包括具有应用逻辑处理部分的逻辑数据通道)、数据RAM和数据通道之间的32位局部总线208、广播RAM和数据通道之间的32位局部总线209、把数据RAM202以及广播RAM204连接到数据总线104的8位输入/输出端210、地址多路转换器212、用于数据存储器芯片选择(CSD)的输入线214、允许写入(WE)的输入线216、从多路转换器212接收11位地址的局部地址总线218和表明存储器已准备好输出或允许输出(OE)(根据CPU类型而定)的输入线220。为了保持标准的SRAM输出引脚,外接的“准备好”引脚并不是必不可少的,但对不需要标准引脚的某些应用可提供“准备好”引脚。不带外接引脚实现“准备好”功能的方法。当存储器开始本地计算时,把在数据存储器内的一个保留的“标志”位置成“未准备”的值。当CPU102对存储芯片的准备信号进行查询时,允许CPU中断芯片的本地计算,并通过一次正常的读操作来完成查询。关于中断指令,将在下文描述。
在存储器110没有CSD信号存在时对广播RAM204进行写入。存储器110、111、…139的所有广播RAM占用相同的CPU地址空间,可以同时写入。广播RAM204的地址占用11位地址中的前8位。CPU102通过把地址置于地址总线106上且使存储器110的CSD有效和使WE有效来把数据写入数据RAM202,或者从数据RAM202读出数据。在此模式下存储器110以与标准2K×8的存储器相同的方式工作。读/写的真值表如下:
CSD    允许写入    功能
低    低    从数据RAM读
低    高    写入数据RAM
高    低
高    高    广播指令检测
图3是存储器110更详细的视图,示出了一些电路。存储器110包括一个具有15×20μm单元间距的128个存储单元的128列阵列。广播存储器相当于主存的大小为128×16的一段。用1μm的CMOS技术可实现这种设计。理想的结构是提供128位内部数据通道,使本地数据处理通过量最大。然而,在SRAM在单元间距中设计随机逻辑线路是十分困难的。因此,存储器110使用位线对读出放大器(和数据通道逻辑)的4∶1的多路转换器,以便加强读出放大器,把全逻辑级制作到芯片内。所以,内部数据通道宽为128/4=32位,并画出了32个处理部分219,但处理部分的数量可以不同,如第三个最佳实施例所示。同时,请注意图2中的输入/输出端210仅仅只是数据总线104到32位内部总线的连接的示意。
应用4∶1的位线多路转换器在实现算法所需要的应用逻辑线路中提供了很大的适应性。例如,在相邻列之间有足够的空间,可以装置乘法器和加法器。数据通道逻辑信号线间距为60μm,与非扩展的门阵列单元间距相匹配。相对于数据存储器,4∶1的多路转换器使相邻数据(相对于数据通道)出现在每个第四列上。因此,数据通道信号进一步以升序排列,所以任何二进制操作能通过进位等信号并且较容易。
存储器110除了供CPU102作2K×8的SRAM外,可以有第二种运动模式,包括在逻辑线路206的数据通道内进行本地运算,在这种模式下,存储器110对于CPU102来说成为慢存储器。在本地运算期间,“准备”输出端220为低电平,本地运算结束后,“准备”输出220变高。还可以把从存储器110、111、…139来的“准备”输出 信号相“与”后送至CPU102。如前面所提到的,在标准的2K×8SRAM输出引脚结构中,没有通到外部的“准备”引脚来通知CPU本地运算已经完成。此时,CPU在所有时间内都象处于“从”态的存储器的“主”人那样工作。CPU通过读取具有“准备标志”值的每个存储器中的保留位来询问存储器,以确定本地运算是否完成。因此,CPU可以把CSD设置为低电平来中断本地运算,象通常一样进行读操作。如果本地运算被中断,控制逻辑206在CPU进行该操作之前数据通道的状态保存起来,当CPU把CSD设置为高电平,WE设置为低电平对再恢复运算。
将一个向量的矩阵运算作为例子来描述本地运算:矩阵T有元素Tij,其中1≤i≤M,1≤j≤N,作用于向量V上,向量V含有分量Vi,其中1≤j≤N,生成含有M个分量的向量W,Wi=≤∑jTijVj。假设Tij元素和Vj分量均为8位,所得到的Wi分量为16位。所得的分量有可能超过16位,但对于许多数字信号处理应用,总和中会包括许多负项。把矩阵Tij按行分成块,把每一块写入一个数据RAM,就可以进行矩阵的乘法平行运算。应该明白,矩阵的大小不是由芯片存储阵列的大小决定的,并且由于能把矩阵分割成块进行平行运算所以可以用多个存储器110、111……来解决很大的问题。
首先,CPU通过先用CSD信号选择一个特定的存储器(如存储器110)把地址(在2K×8的RAM202内)置于11位地址总线106上,把矩阵元素置于8位数据总线104上,并使WE为高电平来把矩阵元素Tij依次写入存储器110、111、…的数据RAM202。请注意对存储器110来说,低的CSD信号和高的WE信号相结合,将由逻辑线路206解释成使多路转换器212从地址总线106(不是从逻辑线路206)选择地址放到局部总线218上,并且使数据RAM202的行列译码器工作,广播RAM204的行列译码器不工作。因此在数据总线上的8位矩阵元素被写到已选中的8位数据RAM202中。这个过程重复进行一直到所需的全部矩阵元素被写入RAM202。也请注意没有被选中的存储器(111、112、…)的CSD为高电平,但由于没有出现变动的地址使事件计数器饱和,它们的逻辑单元不把WE信号变高解释为对广播RAM写入,所以没有东西写到数据RAM或广播RAM。在CPU102把矩阵元素写入存储器110数据RAM202后,接着把矩阵元素写入存储器111的数据RAM,以此类推一直到把矩阵装入存储器110、111、112、…的数据RAM。
第二,CPU通过先变换两个地址使每块芯片的事件计数器饱和并通知单片逻辑线路使广播存储器的芯片选择(CSB)有效,广播RAM进入写周期,以便把向量分量Vi及本地运算指令顺序写入存储器110、111、…的所有广播RAM。注意,进行这种计算时没有用CSB寄存器对芯片分组。然后CPU102进行正常的写操作,同时写入所有广播RAM。逻辑线路206设置多路转换器212,使从地址总线106来的地址通过多路转换器212,使数据RAM202译码器不工作,广播RAM译码器工作,以把向量分量及本地运算指令写入广播RAM204。如前所述,变换地址的方法用于终止写入广播存储器。
第三,为准备本地计算,CPU可以先把指令信息存入广播RAM,用控制逻辑线路206来确定已被分到各存储器中的矩阵块的大小,由此为所需的内部读操作设置地址循环计数。应当观察到如把这点加以推广,可以把控制逻辑线路206恰当地视为传统微处理器的控制逻辑。因此,可以把与应用相关的数据通道设计得能完成复杂的功能,仅受芯片区域及希望它符合标准的输出引脚封装的限制。
当CPU102把WE设置为低电平,且所有芯片110、111、…的CSD为高电平时,每个存储器的逻辑线路206开始本地运算。逻辑线路206先产生含有任一个计算指令的广播RAM204内的存储单元地址、用多路转换器212传递这个地址、把“准备”标志(或引脚)设置成“未准备”状态,使数据RAM202的译码器不工作、使广播RAM204的译码器工作,并读取地址的内容。如果地址包含有本地计算指令,那么各个存储器的逻辑线路206同时进入下列循环。
(ⅰ)逻辑线路206先产生含有向量V中前4个分量(V1,V2,V3,V4)的广播RAM的行地址,使这些分量平行地出现32位内部总线209上。
(ⅱ)接着逻辑线路206产生包含有矩阵某一 行的前4个元素(比如Tk1、Tk2、Tk3和Tk4)的数据RAM的行地址,使矩阵元素平行出现在32位内部总线208上;当然对不同存储器110、111、…139而言,K也是不同的。
(ⅲ)然后逻辑线路206把总线208上的每个矩阵元素与总线209上相应的向量分量相乘(形成TkjVj的乘积,1≤j≤4)。
(ⅳ)逻辑线路206把第(ⅲ)步获得的乘积相加,获得∑1≤j≤4TkiVj,这就是分量Wk的第一个部分和;此外,这个过程在所有的存储器110、111、…139中,对于不同的K值同时进行。
(ⅴ)不改变广播RAM204的行地址,增加其列地址,(即使用列的4∶1多路转换器),进行广播RAM204的另一次内部读取,使向量的下面4个分量(V5,V6,V7,V8)出现在总线209上。
(ⅵ)不改变数据RAM202的行地址,增加其列地址(再次通过4∶1多路转换器),进行数据RAM的另一次内部读取,把矩阵第K行的下面4个矩阵元素(Tk5,Tk6,Tk7,Tk8)置于总线208上。
(ⅶ)重复第(ⅲ)和(ⅳ)步,获得∑5j8TkjVj并与前一个∑1j4TkjVj相加形成∑18TkjVj
(ⅷ)用4∶1多路转换器增加列地址重复第(ⅴ)、(ⅵ)和(ⅶ)步二次,那么累加的部分和为∑1j16TkjVj
(ⅸ)对相应于向量V剩余的元素的广播RAM204的各行和相应于矩阵T第K行剩下的元素的数据RAM202的各行重复第(ⅰ)到(ⅷ)步,每次把新产生的部分和与前一步产生的部分和相加,最后的结果即为分量Wk。然后逻辑线路206直接进行内部写入,把Wk存入存有第k行矩阵元素的数据RAM202的尚未用过的列中。这个过程在存储器110、111、…139的每一个中同时进行。
如果数据RAM202已经存储了矩阵T第K行到第K+n行的块,那么对数据RAM202中的矩阵元素剩余的行与从广播RAM204来的同一个向量分量Vj重复第(ⅰ)到(ⅸ)步几次,以形成分量Wk+1、Wk+2、…、Wk+n并把它们存贮起来。例如,如果有100个分量,那么就需要(总计16行中的)7行广播RAM204来存储这些分量,第7行仅用了4/16。相似地,如果数据RAM已经用同样方法存储了矩阵元素(用7行RAM存储每个矩阵行,第7行RAM仅用了四分之一),那么能存储18个矩阵行(所以n=17,T最大可为540×100的矩阵),在每个第7行有足够的空间存储相应的Wk+5。另外,数据存储器202有2行没有使用,可以存储准备标志和其它项。
在存储矩阵行块的数据RAM202的所有行处理完以后,循环终止。同时存储器111、112进行计算并存储所有其它的分量W1、W2、…Wm。然后,逻辑线路206把准备标志(或引脚220)置为高电平,CPU102可以通过把CSD置为高电平同时维持WE低电平来从数据RAM202读出结果,所以逻辑线路206使多路转换器212把地址传递到总线106上,并使数据RAM202的译码器工作。这种本地运算避免了计算时CPU102取出每个矩阵元素,所以避免了总线104和106上的许多通讯。当然,在存储器110、111…进行本地计算期间,CPU102可以用于其它任务。
本地运算的第二个例子仍是矩阵乘向量。矩阵Tij为252×252。向量Vj有252个元素。因此,乘积是252个元素向量Wj。假设每个元素宽8位。2K×8的数据RAM存储不下全部的矩阵元素Tij,所以T被分成32块,每块8行,每行252个元素。每块占用16,128位,即128×128位的数据RAM中的126列。数据RAM剩余的4个字节用于存储结果。需要32块存储芯片。
解题时先把矩阵Tij的32块与通常一样依次写入所有32块数据RAM(如前一个例子所述)。然后把向量Vj同时写入所有的广播RAM。因广播RAM为256个字节(16行×128列),所以向量Vj占用252个字节(16行×252列)。在存储器内部,运算全是32位的,把计算调整到这个宽度大大方便了对计算的控制。这可由为系统设定矩阵块的分段规则来实现。为了简化说明,本例省略了这个步骤。
在逻辑线路206内的所需的数据通道电路包括4个8位布斯乘法器和一个用于累加乘积的加法器。另一种可供替代的数据通道配置包括一个8位信号乘法器和一个加法器。也需要一个用于操作数的寄存器和一个从4组操作数中选择一组的多路转换器。显然,这将减少并行处理部分(PE)的数 目而不减少数据通道硅区面积。
然后把所有32块芯片的“准备”标志设置为“未准备”,开始进行本地运算。现在CPU空闲下来可以做其它事。计算的顺序是将从数据RAM来的矩阵Tij的前4个元素(32位)和从广播RAM来的向量Vj的前4个元素传送到数据通道逻辑电路。乘法和加法完成后,从数据RAM和广播RAM来的Tij和Vj的后4位相对应的元素分别被传送,一直到矩阵Tij的第1行的所有252个元素均运算过。运算结果是16位的,并存储在可用的数据RAM空间中。这个过程一直到该块中所有8行均运算过。完成这些以后,在所有芯片中设置“准备”信号,CPU可以从32块芯片的每一块读取8个8位结果。
现在我们分析一下刚才所述的系统的性能:对于存储器装载,CPU最初装载所有32个(实为31.5个)数据RAM需要252×252=63,504个写操作。然后CPU仅在252个写操作内很快地把向量写到广播RAM,进行广播写入。每个元素的计算需要多次内部读取。对于252个8位的元素,每个存储器的具有4个8位乘法器的32位数据通道可以同时处理4个元素。因此,完成对数据RAM和广播RAM的读取需252/4=63个读操作。如果对于布斯乘法器每个计算需要与4个读周期大约相同的时间,对一行本地读取和计算的总时间为63×5=315个周期。在每个存储器中这个循环将重复8次,产生最终向量的8个元素。把每个16位元素写回到数据RAM需要2个周期,因此把252个16位元素写回到数据RAM额外需要504个周期。因此,每个存储器完成本地运算需要3024个周期。
CPU仅需要对前31个芯片完成2×8=16个读操作,对第32个芯片完成2×4=8个读操作,共计504个读取来接收252个16位元素结果向量。因此,如果把63,504个周期存储器装载时间包括在内,则总的操作时间为:(表1见文后)
由于在一些应用中,对存储器的I/O不是一个问题,我们可以不计装载周期。此时整个周期可以看作本地计算和结果检索时间,仅为3780个周期。
传统的系统中,存储器装载是一个常数,即63,756个周期。假设传统的系统处于最佳情况,在CPU中运算和读操作按流水作业方式进行,且在读取期间不出现丢失数据的空周期。假设CPU使用同样的布斯乘法/累加电路,那么每次运算的时钟周期与在最佳实施例的数据通道的运算周期是相同的。CPU对矩阵和向量元素需要252×252+252次插件板级的读取,外加原有63,756个周期。假设读取和运算完全按流水作业方式进行,我们对每次计算需要4个周期,252×252(n2)次计算总计需要254,016个周期。那么如果包括存储器装载时间,传统系统的整个操作需要317,772个周期,如果不包括存储器装载时间,也需要254,016个周期。
因此,如果考虑存储器装载,则性能提高了4倍。如果我们假设存储器装载已预先解决,我们可以看到最佳实施例的系统在速度上提高了69倍。考虑到如前所讨论的电能花费函数,我们可以看出,最佳实施例系统在把初始数据送到CPU之前先把初始数据变成有用的信息把CPU到存储器插件板级I/O的次数减小了63,756/252=253倍。如果计入插件板级总线电容最对芯片级总线电容量所增加的额外的倍数,显然,系统所需功率已大大减小。
本地运算的第三个例子描述矩阵的矩阵的乘积。矩阵Tij为252×252。矩阵Uij也有252×252个元素。运算与矩阵乘向量完全相同,现在我们简单地把矩阵Uij的每列看作向量Vj。再把矩阵Tj分段成块,前31个存储器接收8行,第32个存储器接收最后4行。因此,存储器装载Tij需要63,504个周期。同时把矩阵Uij分段广播到所有广播RAM,每次一段。一个16行×128列的广播RAM可以存储一列矩阵Uij(与第一和第二个例子中的向量Vi相类似)。把每列从CPU写到广播RAM需要252个写周期。因此把矩阵Uij装入广播RAM总计需要252×252=63,504个周期。这些例子中都假设把每个字(矩阵元素)从大容量存储器装载到RAM需要一个周期。然后CPU开始本地运算。对于数据和广播RAM来说,内部读取需把操作数据于数据通道上,因此再需要252/4=63个周期。加上63对操作数每对需要另增加4个计算周期,因此对于各个存储器中矩阵Tij的每8行我们再要用315个周期。因此,一列矩阵Uij的本地运算总计需要3024个周 期。对252列矩阵Uij的每一列重复这个过程总计需要762,048个周期进行本地运算。所有32个存储器平行完成这一过程。然后CPU询问存储器了解到本地运算在所有芯片上已经完成。接着CPU就从数据RAM读取16位结果矩阵元素,这一过程需要252×252×2=127,008个读周期。因此,如果包括存储器装载Tij,使用第一个最佳实施例系统需要192,024个周期。如果不计Tij的装载,检索252个16位元素的结果向最需要128,520个周期。因此,如果把63,504个存储器装载时间周期包括在内,整个操作时间为(表2见文后)
传统的系统存储器装载Tij和Uij两个矩阵需要2n2=127,008个周期。另外需要2n2=127,008个周期把数据从存储器读入CPU。如果我们假设计算和存储器读操作是流水进行的,不计读操作周期,计算需要8×252×252×252=128,024,064个周期。因此,传统的系统共需要128,151,072个周期。显然,没有一个CPU能在其内部存储器中放下这个矩阵,所以,我们已经给了传统的系统最佳的对比情况,没有计入把计算结果写回存储器所需的周期。当然最佳实施例系统已经存储了计算结果。
对两者进行比较,如果包括存储器装载矩阵Tij和Uij,最佳实施例系统提高了91倍,如包括所有的存储器装载周期,系统提高了84倍。
第4个本地运算的例子是稀疏矩阵对一个向量的运算。稀疏矩阵的元素填入每块芯片的数据存储器。假定矩阵元素使用64位字,矩阵元素的行标记和列标记可用16位字,以及部分内部乘积也用64位字。因此3个32位字可存储这些标记和矩阵元素。数据通道206包含有一个64位乘法器和累加器,加上一个逻辑测试电路,用来测试现行字在广播存储器中是否有副本可供相乘。此外,如在第一个例子中描述的那样,将要操作的向量被同时广播到所有芯片,并且由控制逻辑线路206决定数据存储的操作顺序。由CPU102以任何次序把稀疏矩阵的标记字填入数据存储器,但把从同一矩阵行来的字分组填入同一芯片的数据存储器,可减少需要CPU102读取的结果数据。
矩阵元素如前面描述的一样进行循环,并测试标记,判断该字是否要乘的那个字,如果是的,则把结果存储到那里。如非稀疏矩阵乘的例子中一样并不是所有的向量都能在广播存储器中放得下,它可能需要被分段广播。每次广播一段向量,每块芯片要巡视所有的矩阵元素以决定哪些字要与之相乘。这种对所有矩阵元素巡视一遍的需要,使第秒相乘的次数小于非稀疏矩阵的相乘次数,因后者仅需对与被广播的一段向量相对应的一部分数据存储器进行循环。
内部乘积存贮在数据存储器内,用来保存它们的存储单元的数量等于芯片上不同的行数。
在整个向量被广播和本地运算完成以后,CPU102可以读取结果向量。这需要对每块芯片依次进行,以便读取存贮在数据存储器内的各行的内部积。
把稀疏矩阵对一个向量操作,其系统性能可作如下估算。假设每个存储器为一具有2K广播存储器的16K数据存储器,内部周期时间为20ns,外部周期时间为40ns,带一个缓冲和整理从CPU102来的数据的PLD,和流水型的读/乘/累加数据通道。那么,对于一个256×256的平均每行有10个非零元素的稀疏矩阵来说,每个数据存储器将存储约18行矩阵;每个矩阵行有10个64位字,外加一个存储向量与行的内部乘积的64位字,再加用于每行11个64位字的每个字的行标记和列标记(各占16位),每个矩阵行总计有33个32位字。因此,一个16K数据存储器可存储15个矩阵行,大约需要18块芯片来存储整个矩阵。广播存储器可以存储器向量的八分之一。
时间估算:
1.广播写:每次广播时间=(32字/广播×64位/字×40毫微秒/周期)/8位/周期=10.24微秒。
2.本地运算:每次广播的运算时间=150字×600毫微秒/64位浮点乘累积=90微秒。
3.完成一个向量需重复第1和第2步8次,总计广播和计算时间约800微秒。
4.CPU收集运算结果:每32位需时100毫微秒,对于256个64位内部积共需51微秒。
5.总计运算时间约为850微秒。
如果矩阵增大,则非零矩阵元素的数目线性增加、向量的广播时间线性增加、本地计算时间线性增加以及收集结果的时间线性增加。
另一个例子说明了一种在美国专利号4,326,259的专利中用系统100实现的神经网络算法。尤其是一个有100个输入的网络,1000个内部节点的每一个均与全部的输入相连,(根据向量W响应于一些或不响应于另一些);每个内部节点有一可设定的阀值λ;50个输出节点可能与输入节点中的任一个或所有输入节点连接,每个输出节点的阀值为1;有50个输出,每个输出节点对应一个输出(参见图15);数据存储器为1000字的,每个字128位。字的数量等于内部节点数。每个字128位。字的数量等于内部节点数。每个字的128位存储4样东西:前100位是表示输入向量W的向量,对应于输入,接着的8位存储阀值λ,再接着的6位辨别这内部节点输出到哪个输出节点(根据部分算法),接着的一位指示这内部节点是否被传送(根据部分算法)(参见图16),数据存储器的最后一个字用来存储芯片的50位输出向量。
数据通道由Hamming距离计算器、把所得的Hamming距离与所需的阀比较的比较器、加上附加的专用于算法和算法学习阶段的控制逻辑连同用于顺序经历数据存储器和对指令检测的寻常逻辑电路组成。广播存储器把100位输入向量存储到称为算法输入层的芯片中。
在正常操作下(不是在训练期间)芯片将如下运行。把输出向量设置为全零,把输入向量写入广播存储器,芯片循环经过1000个128位的数据存储器来计算输出向量,CPU则读取含有输出向量的存储单元。当读数取第j个128位数据存储器时,如果这个向量是被传送的(第115位),那么计算出对应于Wj的前100位和输入向量之间的Hamming距离,并把它与该内部节点的8位阀值λj比较。如果Hamming距离大于阀值,那么由128位位置中其后6位所辨别的输出向量中的那个位将被置位。
在学习模式中,通过把“传送”位置“1”、把向量W、阀值和输出节点设置到所需值,即可进行内部单元的传送,这是一个简单的存储写操作。传送一个新的输出单元是普通的:就是把它所在位的位数写到与之连接的内部单元内。增加所有内部节点t的阀值使它们不会发出对内部节点进行循环的请求,计算它们到达输入的Hamming距离,并把每个内部节点的阀值设置到使节点刚够不提请求。
在正常模式中芯片的运行时间等于芯片对所有内部节点循环一遍的时间。对于学习模式,传送内部和输出节点等于一次存储器写的时间,把一个特定的输入与内部节点断开需要正常模式的两倍时间,因为每次存取不仅要计算Hamming距离还要把新的阀值写回。
如用16K的数据存储器,系统就需8块芯片。
适用于如存储器110那样的灵巧存储器的内部自检(BIST)和自动容错方案可以通过对存储器110增加一个第三操作模式,使自检模式能象前面在芯片选择讨论中所指出的那样运行。事实上,CPU102写一个“开始自检模式”命令,然后数据通过控制逻辑把存储器初始化到由设计者确定的值,并循环经过所有地址的数据,将其结果与设计者确定的期望结果值相比较。故障被标记在专门的RAM单元中。也可以包括对数据通道逻辑的测试,例如用于矩阵乘的存储器其数据通道测试可以简单地用一个全零矩阵相乘,若结果不为零则设置一个故障标记。所有的芯片同时进行BIST。完成以后,CPU对每块芯片进行询问(读取故障标记)并且注意那些有故障芯片的地址,并且用板上提供的冗余芯片把有故障芯片在地址空间内断开。一般地说,BIST应在把数据装载入数据RAM之前完成。
图4是第二个最佳实施例的存储器400的框图,它包括本地运算电路,但具有标准存储器的外壳输出引脚。存储器400的结构可以检索存在RAM402中的一个由向量组成的链表。每个向量含有一个或多个字段和一个指示表中下一个向量的指针,检索一般包括下列几步:
设置向量在RAM402中的地址。
从RAM402取出向量的有用的字段。
对照指定的条件比较取出字段的值,观察条件是否满足。(条件可以存贮在寄存器404中)。
如果条件满足,那么终止检索;否则修改取出的值(写到RAM402)并从当前向量取出指向下一个向量的指针。
检查指针看检索应否结束;若否则对下一个向量重复这些步骤。
寄存器404与第一个最佳实施例中的广播RAM204类似,RAM402与数据RAM202类 似。对于检索程序仅需要一个小指令集。例如,LOADAC(装载累加器),STOREAC(存贮累加器),ADD(增加到累加器),SUB(从累加器减去),BRANCH<0,BRANCH>0,BRANCH=0,BRANCH≠0,BRANCH≤0,BRANCH≥0(6种累加器测试条件),IDLE,和MAX(把当前累加器和输入中的最大值置入累加器)。
其它类型的计算如向量范数(vectornorm)l1和l2的计算也可以用存储器110、111、112、…进行。尤其是,数字信号处理常常需要寻找测试向量V和各个参考向量Wr之间的“距离”,其中1≤r≤R,通常用于距离测量的是V-Wr的差的范数l1和l2。例如,差的l1范数为
月月|V-Wr|1 Σ i = 1 N |Vj-Wr j|
可以如前所述的通过把分量Wr j装载入数据RAM202和把分量Vj装载入广播RAM204中,然后对每个参考向量在逻辑线路206中同时进行相减和取绝对值来进行计算。
图5a是第三个最佳实施例的框图,存储器500包括本地运算电路,但具有与第一个最佳实施例存储器110类似的标准存储器外壳引脚。存储器500尤其适用于如在求向量的l1与l2范数和向量点积(dot product)的计算中的乘法和累加运算。存储器500包括结构为32K×8位的256K数据RAM502(512×512阵列的存储器单元被16到1多路传送到总线508)结构为4K×8位的32K广播RAM504(64×512阵列)、32位数据总线508、15位地址总线506、乘积/累加流水线(包括16位×16位乘法器510、32位多路转换器512、32位移位器514、32位多路转换器516、有一个反馈输入端的32位ALU518、32位累加器520和32位移位器522)、存储刚从RAM读取的数据的32位寄存器524和526,它们如图所示能把数据分割成可存取的1、2、3、或4个字节的内容、能随寄存器524或526的卸载自动增值或减值的地址寄存器528-530、和十个可由外部CPU编程的控制字532。分割寄存器524和526的作用是即使数据总线宽度固定(这个例子中为32位),也允许选择1、2、3或4个字节的内容、能随寄存器524或526的卸载自动增值或减值的地址寄存器528-530和十个可由外部CPU编程的控制字532。分割寄存器524和526的作用是即使数据总线宽度固定(这个例子中为32位),也允许选择1、2、3或4个字节为数据位的宽度(8位等于1字节)。一个分割寄存器524的例子可以是4个8位寄存器,由数据总线508平行写入。“数据宽度”控制字产生4个控制信号,它们与时钟信号逻辑地组合起来控制4组传送门,把所希望的数据置于多路转换器512输入端。参见图5b简单的图示。分割寄存器524也可以不通过另外的存储器读取操作而通过对数据字按需要进行移位把流水数据装载到多路转换器512。这个过程由与时种信号组合的“移位器”控制字来控制。同样,与时钟信号组合的“操作”控制字把从分割寄存器来的数据装载到乘法器510。与存储器110一样,存储器500一般是由CPU和多个类似于存储器500的存储器所组成的系统的一部分。与图2中的总线104和端口210类似的外部数据总线和多路转换器在图5a中没画出,如图5中建议的那样,外部地址总线由地址寄存器528-530进行多路传送,它类似于图2的多路转换器212。
其它供替代的方案中,包括图4个4到1多路转换器把512根位线传送到4个32位总线来代替用1个16到1多路转换器把数据RAM502、512根位线传送到32位总线508,这种安排要有4个乘法累加流水线和4对32位分割寄存器。此外,还用24位×24位甚至32位×32位乘法器来供替16位×16位乘法器510。
由于矩阵可以看作由n行和m列组成,10个控制字532的前三个字规定矩阵的开始地址、矩阵行数和列数。第四、第五个控制字规定数据宽度;第六个控制字规定存贮计算结果的地址;第七个控制字设置移位器;第八个控制字设置配置(多路转换器512和516、自动增值或减值等),第九个控制字是GO字,它一旦写入存储器500即开始计算,第十个控制字规定在广播RAM504中的向量的开始地址。也就是,当GO字被写入、存储器地址寄存器528-530被装载及移位器设置后,即开始进行计算,从RAM502和504读取数据到寄存器524和526,并把流水结果存回RAM。与存储器110一样,存储器500也可以是下述系统的一部分,这种系统把参考数据装载入数据RAM502,输入数据则同时写入所有广播 RAM504。
实时语音辨别是一个实用例子,它计算从输入向量到各个存储的参考帧之间的的欧几里德距离。参考帧在数据RAM内的存储器之间平均分布,当输入向量到来,便同时把它写到各广播RAM,并写入GO字使所有芯片同时进行计算。本地运算一结束,存储器就改变GO字的内容,外部CPU即可读取结果。尤其请考虑如下计算:
d(n)= Σ i = 1 4 x(i)r(n,i)
其中X=[X(1),X(2),X(3),X(4)],R(1)=[r(11),r(12),r(13),r(14)],n=8,d(n)是一个标量,需要2个存储字节。r(i,j)存储在数据RAM502中。假设X(i)和r(i)都是一个字节宽。下面顺序的步骤讨论计算是如何进行的。
1.外部CPU写入十个控制字,在本例中它是起始地址1=100(R的起始地址)。
M列=4
N行=8
数据宽度=1
结果宽度=2
结果地址=300(结果依次存储在该地址)
移位器=0
操作=乘法·累加;自动增值
GO=待写入
起始地址2=X的起始地址
2.主CPU写入Go标记后,r(i,j)的起始地址装入MAR0528,结果地址装入MAR1529,x的起始地址装入MAR2530。
3.累加器520清零。用MARO把一个32位字(r(1,1),r(1,2),r(1,3),r(1,4)读入分割寄存器524(在图5a中标的是PIPEO),用MAR2把32位字(x(1),x(2),x(3),x(4)写入分割寄存器526(图5a中标的是PIPE1)。
4.按照数据宽度控制字定义送至乘法器510的操作数的长度。
5.在这个例子中,把x(1)和r(1,1)(PIPE0和PIPE1内容的1个字节)馈送至乘法器510,乘积在累加器520中累加。
6.接着,把PIPE0和PIPE1的内容移位一个字节,这样下次馈送至乘法器510的操作数将是x(2)和r(1,2),当内容位移时,地址寄存器MAR0和MAR1自动增值,例如,在第1次以后,MAR0从100增加到101。
7.重复第5步和第6步,重复次数由控制字M列决定,在本例为4(如果M列大于4,那么PIPE0和PIPE1一排空就由另一个存储器读取来填充)。
8.第7步完成以后,结果在累加器内,使用地址寄存器MAR1把该结果写回RAM502,写回以后,地址寄存器MAR1自动增值。在这个例子中,如果MAR1在写以前就等于300,那么增加以后因控制字结果宽度为2(字节)它将等于302。而且,注意,在此时MAR0已经指向下一个R(j)。
9.重复第3至第8步,重复次数由控制字N行决定,在本例中等于8。
10.第9步完成以后,把GO标记改变到另一模式,标记计算完成。
另一个例子是求X和R的差-值-累加。在这种情况下,控制字“制作”将标记为完成“差-值-累加”操作。这个计算的执行与刚描述的那个相似,其不同仅在第5步,“操作”控制字将使逻辑电路在x(i)和r(j,i)之间求差值,再将其绝对值进行累加。
第三个最佳实施例的更一般式是用可编程的处理器代替专门的乘法-累加流水线,把程序写入广播RAM。图5c是显示了存储芯片568,存储器的下面部分570作为程序存储器,上面部分572作为数据存储器。程序存储器可从外部(CPU)用与前面所述的数据存储器572相同的I/O引脚进行存取。由在片译码器574,存储控制器576与逻辑电路578组成可编程的处理器。从程序存储器570取出指令,在译码器574中进行译码,产生适当的逻辑电路578进行操作的控制信号。当从外部访问芯片568时,存储控制器576使逻辑电路578进入“保持”状态,访问结束后,存储控制器576释放逻辑电路578并恢复执行。
第四个最佳实施例存储器和系统可以用作地址相关存储器(也叫作稀疏分布存储器或卡内尔瓦(Kanerva)存储器)。图6是第四个最佳实施例存储系统的框图,用600表示,它包括地址存储器610、611、612…和数据存储器650、651、652…。图7是第4个最佳实施例存储器610的框 图,它包括地址RAM702(对应于存储器110的数据RAM202)、广播RAM704和逻辑线路706。存储器610和其它相似的存储器611、612…形成地址相关存储系统600。地址相关存储器与通常的存储器不同,它可以通过读出相近的地址来检索在某一地址存贮的数据,因此具有一种内在的容错功能。例如,地址相关存储器有一个输入地址和一段输入数据,可以把该数据写到所有存储器位置,只要该位置的地址离上述输入地址不超过某一Hamming距离,并且,写入的数据并不取代已经在这些位置上的数据,而是加到这些数据上(存储器的每一位可由双向计数器有效地替换)。读取数据用的输入地址将使所有离输入地址不大于某一Hamming距离的地址都变成有效,并且在所有这些有效地址上的数据按位求和(受阀值限制),现可得输出数据的读数。
在操作中,其方式与第一个最佳实施例的描述相似,关键地址存储在地址RAM702,要写入或者读取的测试地址同时写到每个存储器610、611…的广播RAM。一旦测试地址写入了广播RAM,那么,逻辑线路706使准备线720输出为低电平,并开始计算测试地址和每个存储在地址RAM702内的关键地址之间的Hammming距离,在所有存储器610、611…中,Hamming距离的计算是平行进行的。如果发现有关键地址离测试地址在所需距离内,逻辑线路706可以或者把关键地址存储在地址RAM中,供以后由CPU602查询,或者在每次发现后随即中断CPU602。然后CPU根据每个找到的关键地址从相应的数据存储器650、651、…中读取数据,逐位累加读取的数据并取其阀值,即得到输出数据。
例如,如果地址是32位长的(所以大约有4.3×109个可能的地址),如果随机选择10,000个32位字A1、A2…A10,000作为关键地址,那么,可以期望A1和最近的一个关键地址之间的Hamming距离约为4,A1和第100个最近的关键地址约为8-10。这个粗略的近似值可从下面近似的分析得到:假设关键地址的各位中约有一半为“1”一半为“0”,通过组合分析可以决定一对关键地址之间的Hamming距离的累积概率分布为:
Figure 911017593_IMG3
然后,近似地作出这一概率分布的顺序统计(or-der    statistics)分布。于是,能够使相应的顺序统计累积分布约等于1/2的Hamming距离,即为所求的Hamming距离。
另一种可用的近似分析法如下:对于一个给定的(关键)地址,Hamming距离为n的地址数据就是对这个地址改变n位的方法数,其值是
                                                        32
                                                        n
因此,离一给定的地址的Hamming距离为10以内的地址数就是:
Figure 911017593_IMG4
约等于108,000,000。因此,就有2.5%的地址在给定地址的10以内,并且,关键地址是随分布的,所以可望有约250个关键地址(在10,000个中占2.5%)在给定地址的10以内。因此,10,000个32位关键地址中取Hamming距离为10,则对于每个输入地址将输出约250个关键地址(不论输入地址是否是10,000个中的一个)。把数据装载到系统600的过程如下:首先产生10,000个关键地址(随机数产生器)并存贮在存储器610、611、……的地址RAM中,每个地址RAM有512个地址空间,所以存储器610、611、…、629提供了足够的空间。CPU602也建立一个查找表,使每个关键地址与数据存储器650中的一个地址相关,在数据存储器650中,每个数据字占用256位,以32×8分布,因此,数据存储器650必须至少有2.56兆位。接着,在10,000个与输入地址的Hamming距离为10以内的关键地址中找出250个左右的关键地址,首先32把位数据存贮在一个输入地址上(或者甚至是一个随机输入的32位地址)。然后CPU602把32位数据写到数据存储器650中对应于上面找到的有效关键地址的每个位置上。这些32位数据写入时并不取代已经存储在该数据字上的任何数据,而是加到原数据上面:这是靠使用以32×8排列的数据 字中的各个8位组来完成的。每个8位组可看作一个范围为128的双向计数器,32位数据字的每位要么使计数器增加1(如果该位为“1”)要么使计数器减小1(如果该位为“0”)。如果存储数据显著占用内务操作时间,那么,数据存储器650可以设32个平行的加法器来进行这种计算。
存储数据以后,读出时,可以先将一个输入地址写入广播RAM局部寻找出所有250个左右的与输入地址的Hamming距离为10以内的有效地址、从数据RAM650读取相应的250个左右的数据字、在计算器到计数器的基础上对这些250个左右的数据字的8位双向计数器求平均值,并采用限制阀值法把平均值转换成32位二进制输出。
第五个最佳实施例是另一种地址相关存储器系统,但存储器布局不同。图8是第五个最佳实施例的存储器800的框图。存储器800包括RAM802和一个在逻辑电路806内的累加器,RAM802包含有关键地址及其数据,逻辑806用于把数据写到关键地址。存储器800有与标准2K×8SRAM相同的输出引脚,所包括的RAM802也以2K×8排列,并在CPU看来也是2K×8。RAM802可以含有6个256位关键地址,外加相关的256项数据,每项数据为8位,可作为一个范围为128的双向计数器。在RAM802内还剩下的位数略超过2K位,可用于存储结果,这个结果以后可由CPU读出。对于地址相关存储器的操作,CPU可以把一个关键地址写到RAM802中的32个相继的8位字节中,把相关数据写到下256个相继的字节。因此,存储器800不需要查找表使关键地址与它存储的数据相关联。而是在给出一个输入地址后,CPU同时把输入地址(32个字节)写到系统中每个存储器800的广播RAM804中,同时也写入一条本地搜索指令。然后逻辑线路806读取本地搜索指令,把准备信号设置为低电平,开始计算输入地址和存储在RAM802中的6个关键地址的每一个之间的Hamming距离。如果发现关键地址与输入地址的Hamming距离在10以内。那么,逻辑线路806使地址有效并中断循环,并读取与求得的有效地址相关的数据,把这数据加到累加器812上,并可把结果存储到没有被关键地址数据占用的RAM802中的2K的空间内。等到把所有6个关键地址和输入地址都比较完毕,把如果出现的所有相应的数据相加并储在RAM802内之后,把准备信号置为高电平。然后CPU可读取每个存储器800的结果,相加并取阀值以恢复数据读取。
因为必须把数据加到与输入地址相近的每个关键地址先前存在的数据上,所以把数据写到存储器800远比读取数据复杂。CPU可以在每个求得的与输入地址的Hamming距离在10以内的关键地址上读取数据,并加上新的数据然后复原,也可以简单地把数据连同输入地址送到广播RAM804上,由逻辑电路806在累加器812中完成相加。
当然除了Hamming距离也可以用其它的距离度量来识别关键地址。
第六个最佳实施例的系统在稀疏分布存储器(SDM)机器900中用了许多如存储器800的存储器,该系统图示在图10a-图10c。SDM机器的构件是存储器处理器芯片,它包含16K位的存储器和32位定制的数据通道。每块芯片的存储器用来存储6个256位宽的SDM地址-数据对(图10a)。每块芯片的数据通道控制和执行SDM的读和写操作,并有专门的逻辑线路用于计算Hamming距离和进行SDM形式的累加(图10a)。
SDM机器由1块或2块(由所需的容量决定)主要由512块存储/处理器芯片构成的板组成(图10b)。为实现本实施例的目的,把这些板插入TI测试器Lisp机器中9(图10c)。在LispCPU看来它们象存储板。LispCPU通过把稀疏分布存储器(SDM)地址(和所写的数据)写到预定的存储器位置上来与它们接口,由存储/处理器芯片进行SDM计算。在SDM写时不需要进一步的动作,在SDM读时,处理时等待(约100微秒)然后依次从每块板上读取预定存储单元的SDM(非限阀的)数据。LispCPU把从每块板上来的数据累加并对结果进行限阀。
每块板有512块存储/处理器芯片,能存贮3072个SDM存储单元,每一单元长256位,使用8位数据计数器。如下所述,CPU可以对SDM进行访问,每秒能读或写10,000次:
·数据从LISP    CPU传送到板:1μsec
·数据进入处理/存储器芯片:2μsec
·芯片计算时间:3.6μsec
·数据读取时的累加时间:84μsec
·关闭一块板的时间:6.8μsec
用多块板可以增加容量。
SDM存储器板是标准存储器和大规模平行技术相结合的产物。它们用标准存储器技术进行构造,具有进行SDM计算最佳的嵌入式处理器。每个16K存储芯片内嵌有一个32位数据通道。对于每块有512块芯片的板,它提供了16K×512=8M位的存储器和32×512=16K位的数据通道。
因为LispCPU把这些板看作存储器板,所以很容易把它们加到系统中。在TI测试器中,把它们插入Nubus底板上,用作存储板。为用它们进行SDM计算,必须防止测试系统把这些板用作分页空间。把进行SDM读或写的软件写到板上预定的存储单元,由板上专门的硬件对它们进行译码,并启动存储/处理器芯片进行SDM计算。
每块存储/处理器芯片由内部结构为512×32的16K存储器,内部结构为64×32的2K广播存储器和可对两个存储器进行全32位访问的数据通道组成。存储器在逻辑上分成6个地址-数据对和一个读取时进行数据累加的区域。图9示出了这种存储器的逻辑结构。
16K存储器被用来存贮SDM地址和数据,广播存储器被用来存贮每个SDM读或写所需要的数据,数据通道进行SDM计算。数据通道有专门的逻辑电路能在一个时钟周期内计算32位字的Hamming距离,和4个SDM形式的累加器对存储在每个字上的4个数据“位”平行地进行操作。为获得最大速度,数据通道处于繁重的流水作业状态下工作。
下面描述在每块芯片上对固定的SDM地址进行初始化的技术和SDM读或写所需的广播地址和数据信息。将主要描述SDM存储/处理器芯片的内部操作。
在接收读或写信息的广播时,数据通道对每个SDM地址进行循环,每次一个字,计算其到达目标SDM地址的Hamming距离并循环广播存储器,然后把部分Hamming距离累加到总的Hamming距离上。
把总的Hamming距离与阀值比较,决定该地址是否有效。如果无效,数据通道转向下一个SDM地址,如果有效,写时更新数据,读时累加数据。在数据更新时,写入为“1”则SDM“位”增加1,写入为“0”时SDM“位”减小1。在数据累加时,从主存储器读出数据,迄今结果数是从主存储器读出的,并把它们之和写回到主存储器。
在SDM读时,数据通道和累加区域也用于分级的板上数据的累加,如下文所述。此时,X位的数据将循环出分级的输出引脚时,而第X-1位的数据则通过分级输入引脚循环进来。
然而,对标准SDM算法的扩展还在继续寻找,例如标记和响应器常数。因此,希望把数据通道做成有SDM和支持电路的处理器,并把程序存储在广播存储器内。
每块板由512个存储/处理器芯片组成,每块芯片包含6个256位宽的SDM地址和相关的数据。而且每块芯片还具有存取Na总线(Nabus)、信号驱动和检测预定存储器单元的现用的部分。512个存储/处理器芯片可用下述三种方式组织:
1.常规的256K×32位存储器
2.8级深的二叉树
3.广播存储器
常规存储器支持非SDM用途和SDM初始化,二叉树在SDM读取期间支持数据的逐板累加,广播存储器(所有芯片同时进行存储器写)支持SDM地址、数据和阀值的写入。
在SDM读或写时,把地址和数据写到预定的存储器位置。由专门的逻辑电路检测这一过程并使所有芯片进行写操作。然后,把SDM地址、数据、阀值和读/写标记写到所有存储/处理器芯片。在SDM一次读操作中,每块芯片仅更新本地数据,不需要芯片间通信,这个过程能在3.6微秒内完成。在SDM读时,每块芯片先累加从其有效的SDM位置来的本地数据,然后把已经在512块芯片的每一块中累加过的数据逐板进行累加。芯片以分级方式连接,以便简化操作。分级深度为8级,分支系数为2,额外的第512块芯片专门加在顶部。(图11)。
这种分级结构使所有第8级芯片能把数据同时传送给它们在第7级的父体。在每块存储/处理器芯片上有6个额外的引脚(见图12),提供分级连接:2个向上(H00和H01)、4个向下(HL0和HL1用于左子代,HR0和HR1用于右子代)。数据按分级向上传送的通道也分为8层:当第X个 字节从第2级传送到第1级时,第X+1字节从第3级传送到第2级,等等。根据这些特点,整块板的数据传送要花费84微秒。
在分级结构顶部,使用流行的逻辑电路把数据缓冲成64个32位字。该缓冲逻辑电路的32位输出接到Nubus底板。32位宽的缓冲数据,加上对Nubus的充分利用使成组传送机构能在6.8微秒内把SDM读数据传送到CPU。
存储/处理器芯片也有32个引脚,使之能作为2K×8的存储器进行连接(图13)。使用这种连接,512个存储/处理器芯片可以按常规存储器结构进行连接,此时CPU上可以把板看作256K×32位存储器板。常规的存储器结构方便了最初的SDM地址写入,允许把该板用作常规存储器板,对于系统测试和查错具有可观察性的可控制性。
芯片/板结构的最后一种结构形式是广播模式。每块芯片带有一个附加的2K×8广播存储器,用于同时接收广播到所有芯片的数据。还使用流行的电路来检测对存储器专门存储单元的写入。当进入广播模式时,每块存储/处理器芯片上的广播模式引脚变为高电平。这将选择所有的芯片,对2K×8广播存储器进行存储器写入。SDM地址、数据、有效范围和读/写标记将被广播到每块芯片。图14示出了这种存储/处理器芯片的块结构。
SDM机器有下列良好的结构特征:
·片内存取速度(片外速度的1/2)
·片内存储储器带宽(32×8)
·芯片处理简单(无中断、无虚拟存储器)
·可作为常规存储器连接
·可以分级连接
·可作广播存储的连接
·插入性能
因此,能把它用于其它方面的应用。语言识别(动态时间反卷和隐式马尔可夫模型法)和矩阵乘法都很适合用这种结构。
该系统可用一些方法进行扩展:
-用256KSRAM芯片代替16KSRAM,容量扩大16倍。
-用4兆DRAM芯片代替16KSRAM,容量扩大256倍。
-增加板来扩大容量,可能用分级连接
-使用Macintosh尺寸的板,1/3容量,相同的速度和Nu总线SMD机器应当在单块板上解决这里提出的应用。这种机器的主要特征是其速度、使用方便、和用同样结构构成较大的SDM机器的可能性。
在保持诸如广播RAM或低级在片逻辑等待征的同时,可以对最佳实施例的装置和方法作出种种变化。
例如:RAM、逻辑线路、总线等的容积、形状和大小都可以变化。数据RAM可以是ROM或PROM,适用于数据永远不变的应用,或者,数据RAM可以是EPROM或EEPROM,适用于经常变动的数据。这可使系统具有非易失性。也可以把一个装载-存贮处理器集成到灵巧存储器中,把广播RAM用作程序存储器,数据RAM用作数据存储器,形成Harvard结构。另外,核心分部的密集数据计算将被下放到数据存储器中进行。
存储阵列芯片越大,所容许的内部数据通道越宽,从而取消了同样比例数的内部读,增加了每块芯片平行处理单元的数量。
为了使多重芯片系统需要的板面积最小,将会出现一个向高密度多重芯片模块发展的趋势,并从简化芯片的引脚输出要求开始。基于灵巧存储器的MPP系统将从这里大大地得到益处。
表1
数据RAM装载    广播写    本地运算    结果读取
63,504    +252    +3024    +504=67284个周期
表2
数据RAM装载    广播写    本地运算    结果读取
63,504    +63,504    +1,270,008    +127,008
=1,524,096个周期

Claims (9)

1、一种集成电路,包含:
(a)一个数据存储器,所述数据存储器与数据总线联接;
(b)一个芯片选择端,与所述数据存储器联接;
(c)一个广播存储器,所述广播存储器与所述数据总线联接,且所述广播存储器不与所述芯片选择端联接;和
(d)一个数据通道,同时与所述数据存储器和所述广播存储器联接。
2、如权利要求1所述的集成电路,其特征在于所述数据通道包括对从所述数据存储器来的数据进行计算的电路和一个开始和终止所述计算的检测器。
3、如权利要求1所述的集成电路,其特征在于进一步包括:
(a)一条地址总线,同时与所述的数据存储器和所述广播存储器联接;和
(b)一个检测器,与所述地址总线和所述广播存储器联接。
4、一种计算机系统,包含:
(a)至少一个中央处理单元;
(b)输入/输出;和
(c)一存储器系统,所述的存储器系统包括多个存储器,每个所述存储器包括:
(ⅰ)一数据存储器,所述数据存储器与数据总线联接;
(ⅱ)一芯片选择端与所述数据存储器联接;
(ⅲ)一广播存储器,所述广播存储器与所述数据总线联接,且所述广播存储器不与所述芯片选择端联接;和
(ⅳ)一数据通道,同时与所述数据存储器和所述广播存储器联接。
5、如权利要求4所述的系统,其特征在于进一步包含:
(a)在所述的每一存储器中包含有地址总线,并与所述数据存储器和所述广播存储器联接;和
(b)在所述的每一存储器中包含有一检测器,并与所述的地址总线和所述的广播存储器联接。
6、如权利要求4所述的计算机系统,其特征在于所述的多个存储器是分级排列的。
7、如权利要求4所述的计算机系统,其特征在于所述的多个存储器的每一个均包括在稀疏分布存储器地址和数据电路。
8、一种计算机,包含:
(a)一个存储器;
(b)一寄存器,与所述存储器联接;
(c)一处理单元,有第一和第二两个输入端,所述第一输入端的数据宽度与所述第二输入端不同,且所述第一和第二输入端与所述寄存器重叠联接。
9、一种单个存储器,包含:
(a)一数据存储器,所述数据存储器与数据总线联接;和
(b)一可编程的处理单元,与所述数据存储器联接。
CN91101759A 1990-03-16 1991-03-16 分布处理存储器 Expired - Fee Related CN1027103C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US49823590A 1990-03-16 1990-03-16
US498,235 1990-03-16

Publications (2)

Publication Number Publication Date
CN1056356A CN1056356A (zh) 1991-11-20
CN1027103C true CN1027103C (zh) 1994-12-21

Family

ID=23980166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN91101759A Expired - Fee Related CN1027103C (zh) 1990-03-16 1991-03-16 分布处理存储器

Country Status (6)

Country Link
US (1) US5751987A (zh)
EP (1) EP0446721B1 (zh)
JP (1) JPH06208501A (zh)
KR (1) KR100227988B1 (zh)
CN (1) CN1027103C (zh)
DE (1) DE69132495T2 (zh)

Families Citing this family (235)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0584783A3 (en) * 1992-08-25 1994-06-22 Texas Instruments Inc Method and apparatus for improved processing
EP0606653A1 (en) * 1993-01-04 1994-07-20 Texas Instruments Incorporated Field programmable distributed processing memory
US5528549A (en) * 1993-05-28 1996-06-18 Texas Instruments Incorporated Apparatus, systems and methods for distributed signal processing
EP0626659A1 (en) * 1993-05-28 1994-11-30 Texas Instruments Incorporated Apparatus, system and method for distributed processing
US6353563B1 (en) * 1996-04-30 2002-03-05 Texas Instruments Incorporated Built-in self-test arrangement for integrated circuit memory devices
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
US6178476B1 (en) 1997-01-06 2001-01-23 Texas Instruments Incorporated Data communication interface including an integrated data processor and serial memory device
US6292886B1 (en) * 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US6502083B1 (en) * 1998-12-29 2002-12-31 International Business Machines Corporation Neuron architecture having a dual structure and neural networks incorporating the same
US6523018B1 (en) * 1998-12-29 2003-02-18 International Business Machines Corporation Neural chip architecture and neural networks incorporated therein
US6374331B1 (en) * 1998-12-30 2002-04-16 Hewlett-Packard Company Distributed directory cache coherence multi-processor computer architecture
US6321327B1 (en) 1998-12-30 2001-11-20 Intel Corporation Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations
US6578110B1 (en) * 1999-01-21 2003-06-10 Sony Computer Entertainment, Inc. High-speed processor system and cache memories with processing capabilities
US6446029B1 (en) * 1999-06-30 2002-09-03 International Business Machines Corporation Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
JP2001216258A (ja) * 2000-02-02 2001-08-10 Toshiba Corp データ処理装置およびバスサイクル制御方法
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6812726B1 (en) 2002-11-27 2004-11-02 Inapac Technology, Inc. Entering test mode and accessing of a packaged semiconductor device
US7240254B2 (en) * 2000-09-21 2007-07-03 Inapac Technology, Inc Multiple power levels for a chip within a multi-chip semiconductor package
US6754866B1 (en) 2001-09-28 2004-06-22 Inapac Technology, Inc. Testing of integrated circuit devices
US7444575B2 (en) * 2000-09-21 2008-10-28 Inapac Technology, Inc. Architecture and method for testing of an integrated circuit device
US6732304B1 (en) * 2000-09-21 2004-05-04 Inapac Technology, Inc. Chip testing within a multi-chip semiconductor package
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6557090B2 (en) 2001-03-09 2003-04-29 Micron Technology, Inc. Column address path circuit and method for memory devices having a burst access mode
US20030088757A1 (en) * 2001-05-02 2003-05-08 Joshua Lindner Efficient high performance data operation element for use in a reconfigurable logic environment
IL150149A (en) 2001-06-11 2008-08-07 Zoran Microelectronics Ltd Special memory device
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US8166361B2 (en) * 2001-09-28 2012-04-24 Rambus Inc. Integrated circuit testing module configured for set-up and hold time testing
US20040019841A1 (en) * 2002-07-25 2004-01-29 Ong Adrian E. Internally generating patterns for testing in an integrated circuit device
US7313740B2 (en) * 2002-07-25 2007-12-25 Inapac Technology, Inc. Internally generating patterns for testing in an integrated circuit device
US8286046B2 (en) 2001-09-28 2012-10-09 Rambus Inc. Integrated circuit testing module including signal shaping interface
US8001439B2 (en) * 2001-09-28 2011-08-16 Rambus Inc. Integrated circuit testing module including signal shaping interface
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7061263B1 (en) 2001-11-15 2006-06-13 Inapac Technology, Inc. Layout and use of bond pads and probe pads for testing of integrated circuits devices
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US6877046B2 (en) * 2002-03-29 2005-04-05 International Business Machines Corporation Method and apparatus for memory with embedded processor
US7471688B2 (en) 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7433307B2 (en) 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
GB0226249D0 (en) * 2002-11-11 2002-12-18 Clearspeed Technology Ltd Traffic handling system
US8063650B2 (en) 2002-11-27 2011-11-22 Rambus Inc. Testing fuse configurations in semiconductor devices
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US8300798B1 (en) 2006-04-03 2012-10-30 Wai Wu Intelligent communication routing system and method
WO2008042403A2 (en) 2006-10-03 2008-04-10 Inapac Technologies, Inc. Memory accessing circuit system
US8028124B2 (en) * 2007-12-20 2011-09-27 International Business Machines Corporation Fast processing memory array
US7849294B2 (en) 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
US8332580B2 (en) * 2008-04-02 2012-12-11 Zikbit Ltd. System, method and apparatus for memory with embedded associative section for computations
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
IT1403375B1 (it) * 2010-10-29 2013-10-17 Strollo Microcontrollore multiprocessore espandibile/parametrizzato
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9965208B1 (en) * 2012-02-23 2018-05-08 Micron Technology, Inc. Memory device having a controller to enable and disable mode control circuitry of the controller
US9336112B2 (en) * 2012-06-19 2016-05-10 Apple Inc. Parallel status polling of multiple memory devices
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
KR20160006482A (ko) * 2014-07-09 2016-01-19 에스케이하이닉스 주식회사 반도체 장치
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408404B (zh) 2015-02-06 2021-02-12 美光科技公司 用于存储器装置的设备及方法以作为程序指令的存储
EP3254286B1 (en) 2015-02-06 2019-09-11 Micron Technology, INC. Apparatuses and methods for parallel writing to multiple memory device locations
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
EP3268965A4 (en) 2015-03-12 2018-10-03 Micron Technology, INC. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9891842B2 (en) 2015-09-08 2018-02-13 Micron Technology, Inc. Searching data in parallel using processor-in-memory devices
US10282486B2 (en) 2015-09-08 2019-05-07 Micron Technology, Inc. Methods and apparatuses for searching data stored in a memory array using a replicated data pattern
CN106599989B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 神经网络单元和神经处理单元阵列
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US11170294B2 (en) 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10817802B2 (en) 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
US11120329B2 (en) 2016-05-07 2021-09-14 Intel Corporation Multicast network and memory transfer optimizations for neural network hardware acceleration
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
CN207637499U (zh) 2016-11-08 2018-07-20 美光科技公司 用于形成在存储器单元阵列上方的计算组件的设备
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10586148B2 (en) * 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10268389B2 (en) * 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
EP3662474B1 (en) 2017-07-30 2023-02-22 NeuroBlade Ltd. A memory-based distributed processor architecture
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
KR102395463B1 (ko) 2017-09-27 2022-05-09 삼성전자주식회사 적층형 메모리 장치, 이를 포함하는 시스템 및 그 동작 방법
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
CN108388446A (zh) 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
CN108960418A (zh) * 2018-08-08 2018-12-07 上海寒武纪信息科技有限公司 神经网络处理装置及其执行矩阵向量乘指令的方法
CN109147839B (zh) * 2018-08-17 2020-07-07 湖南毂梁微电子有限公司 一种兼具伊辛计算和随机存储访问功能的装置及系统
JP7132043B2 (ja) * 2018-09-10 2022-09-06 東京計器株式会社 リコンフィギュラブルプロセッサ
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11054998B1 (en) * 2019-12-12 2021-07-06 Facebook, Inc. High bandwidth memory system with distributed request broadcasting masters
US11908541B2 (en) 2020-01-07 2024-02-20 SK Hynix Inc. Processing-in-memory (PIM) systems
US20210210125A1 (en) * 2020-01-07 2021-07-08 SK Hynix Inc. Processing-in-memory (pim) system and operating methods of the pim system
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4122519A (en) * 1976-12-14 1978-10-24 Allen-Bradley Company Data handling module for programmable controller
EP0136218A3 (en) * 1983-08-29 1988-04-20 FAIRCHILD CAMERA & INSTRUMENT CORPORATION Multiple port pipelined processor
US4783764A (en) * 1984-11-26 1988-11-08 Hitachi, Ltd. Semiconductor integrated circuit device with built-in memories, and peripheral circuit which may be statically or dynamically operated
US5081573A (en) * 1984-12-03 1992-01-14 Floating Point Systems, Inc. Parallel processing system
US4761733A (en) * 1985-03-11 1988-08-02 Celerity Computing Direct-execution microprogrammable microprocessor system
JPH06103460B2 (ja) * 1985-11-19 1994-12-14 ソニー株式会社 プログラム転送方式
US4783732A (en) * 1985-12-12 1988-11-08 Itt Corporation Two-wire/three-port RAM for cellular array processor
GB8606695D0 (en) * 1986-03-18 1986-04-23 Sinclair Res Ltd Random chip addressing algorithm for wsi
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
CA1293819C (en) * 1986-08-29 1991-12-31 Thinking Machines Corporation Very large scale computer
US4843540A (en) * 1986-09-02 1989-06-27 The Trustees Of Columbia University In The City Of New York Parallel processing method
US5230079A (en) * 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
US4980850A (en) * 1987-05-14 1990-12-25 Digital Equipment Corporation Automatic sizing memory system with multiplexed configuration signals at memory modules
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5014235A (en) * 1987-12-15 1991-05-07 Steven G. Morton Convolution memory
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
US4896265A (en) * 1988-03-28 1990-01-23 General Electric Company Parallel broadcasting method and apparatus
WO1990000287A1 (en) * 1988-07-01 1990-01-11 Morton Steven G Intelligent floating-point memory
US5113507A (en) * 1988-10-20 1992-05-12 Universities Space Research Association Method and apparatus for a sparse distributed memory system
US5063521A (en) * 1989-11-03 1991-11-05 Motorola, Inc. Neuram: neural network with ram

Also Published As

Publication number Publication date
KR100227988B1 (ko) 1999-11-01
US5751987A (en) 1998-05-12
CN1056356A (zh) 1991-11-20
DE69132495D1 (de) 2001-01-25
JPH06208501A (ja) 1994-07-26
EP0446721A2 (en) 1991-09-18
EP0446721A3 (en) 1992-05-06
DE69132495T2 (de) 2001-06-13
EP0446721B1 (en) 2000-12-20

Similar Documents

Publication Publication Date Title
CN1027103C (zh) 分布处理存储器
CN1307561C (zh) 不同高速缓存级上具有关联集重叠同余组的多级高速缓存
Tang et al. Population-based algorithm portfolios with automated constituent algorithms selection
CN1199109C (zh) 通过重排序存储器请求提高总线利用率的存储器控制器
CN1121014C (zh) 具有risc结构的八位微控制器
CN87107224A (zh) 大规模并行陈列处理系统
CN1734448A (zh) 对用户指定电子表格函数的支持
CN101069211A (zh) 分页存储器及其智能存储器区段的交错寻址的多次缩略的方法和装置
US10146555B2 (en) Adaptive routing to avoid non-repairable memory and logic defects on automata processor
CN101499065B (zh) 基于fa的表项压缩方法及装置、表项匹配方法及装置
CN113313247B (zh) 基于数据流架构的稀疏神经网络的运算方法
CN1115631C (zh) 具有risc结构的八位微控制器
CN1415091A (zh) 数据结构管理装置、数据结构管理系统、数据结构管理方法以及用于记录数据结构管理程序的计算机可读介质
KR100725680B1 (ko) 아이피 기반 엘에스아이 설계시스템 및 설계방법
CN1194321C (zh) 高速信息检索系统
CN1941192A (zh) 具有串行输入/输出接口的多端口存储装置
CN109919826B (zh) 一种用于图计算加速器的图数据压缩方法及图计算加速器
CN103064991A (zh) 一种海量数据聚类方法
JP4511469B2 (ja) 情報処理方法及び情報処理システム
CN102681820A (zh) 动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置
Wang et al. SPCIM: Sparsity-Balanced Practical CIM Accelerator With Optimized Spatial-Temporal Multi-Macro Utilization
CN1354854A (zh) 通用资源访问控制器
US20050216112A1 (en) Method and apparatus for selecting tools in manufacturing scheduling
Liu et al. Sobs-x: Squeeze-out bit sparsity for reram-crossbar-based neural network accelerator
Cheng et al. Dbscan-based modular design for the crane grab

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C15 Extension of patent right duration from 15 to 20 years for appl. with date before 31.12.1992 and still valid on 11.12.2001 (patent law change 1993)
OR01 Other related matters
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee