CN101395578B - 多处理器系统和线程级并行处理方法 - Google Patents
多处理器系统和线程级并行处理方法 Download PDFInfo
- Publication number
- CN101395578B CN101395578B CN2007800080470A CN200780008047A CN101395578B CN 101395578 B CN101395578 B CN 101395578B CN 2007800080470 A CN2007800080470 A CN 2007800080470A CN 200780008047 A CN200780008047 A CN 200780008047A CN 101395578 B CN101395578 B CN 101395578B
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- register
- processors
- cache memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 93
- 238000009826 distribution Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 description 21
- 230000000295 complement effect Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 12
- 238000010276 construction Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000007115 recruitment Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Abstract
一方面,本发明包括一种系统,该系统包括:(a)位于单片芯片上的多个并行处理器;以及(b)芯片上并能够被每个处理器访问的计算机存储器。其中,每个处理器都可操作以处理最小指令集,并且每个处理器都包括本地高速缓冲存储器。本地高速缓冲存储器分别用于处理器内的至少三个专用寄存器。另一方面,本发明还包括这样一种系统,该系统包括:(a)位于单片芯片上的多个并行处理器;以及(b)位于芯片上并能够被每个处理器访问的计算机存储器。其中,每个处理器都可操作以处理被优化用于线程级并行处理的指令集。
Description
相关申请的交叉引用
本申请要求于2006年2月3号提交的第60/764,955号美国临时专利申请的优先权。该临时申请的全部内容通过引用并入本文。
背景技术和发明内容
可使用两种一般的方法来加快计算机速度:加快指令执行速度或以并行的方式执行更多的指令。由于指令执行速度已接近硅电子迁移率的极限,因而并行操作成为加快计算机速度的最佳可选方式。
并行操作的早期尝试包括:
1.将取下一条指令与执行当前指令进行重叠。
2.指令流水线操作。指令流水线将每一条指令拆分为尽可能多的片段,然后尝试将连续的指令映射到并行的执行单元内。由于多步指令的无效性,很多软件程序不能提供足够的连续指令以使并行执行单元保持填满,并且在遇到分支结构、循环结构或判断结构时,要花费大量时间来重新填充指令单元,因而很难获得理论上的最高限度的改进。
3.单指令多数据或SIMD。该类技术是在因特尔SSE指令集中发现的,如在因特尔奔腾3或其它处理器中实现。在该技术中,在多个数据集上执行单一的指令。该技术只对例如视频图像绘制的特殊应用有帮助。
4.超立方体结构。该技术使用处理器的大的二维阵列(有时使用三维阵列)和本地存储器。支持处理器阵列所需的通信和互连固有地将它们限制在特殊应用中。
流水线是由连续地完成指令片段的执行的多个连续的阶段组成的指令执行单元,所述执行例如取指令、译码、执行、存储等。多个流水线可并行地放置,以将程序指令连续地供给每条流水线,直到所有的流水线都在执行指令。然后从最初的流水线开始重复进行指令填充。当N条流水线都填充了指令并且都在执行时,其性能效果在理论上是单执行单元的执行速度的N倍。
成功的流水线取决于如下方面:
1.指令的执行必须能够定义为几个连续的状态。
2.每条指令必须具有相同数目的状态。
3.每条指令的状态数目确定并行执行单元的最大数目。由于基于并行流水线的数目,流水线操作能够获得性能提高,且由于并行流水线的数目由每条指令的状态数目所确定,因此流水线鼓励复杂的多状态指令。
过度流水线化的计算机很难获得接近并行执行单元期望的理论性能改进。该流水线损失的一些原因包括:
1.软件程序并不只由连续的指令构成。各种研究表明每8-10条指令就会发生执行流的变化。改变程序流的任何分支都将会扰乱流水线。将流水线的扰乱降低到最小的尝试是很复杂的且是不完全的。
2.强迫所有的指令包含相同数目的状态常常导致执行满足最小公分母(即,最慢和最复杂)指令的需求的流水线。由于该流水线的原因,使得不管是否需要,所有的指令都被迫具有相同数目的状态。例如,逻辑操作(例如为AND(与)或OR(或))的执行比ADD(加)的执行要快一个数量级,但是常常为两者分配了相同数量的执行时间。
3.流水线鼓励多状态复杂指令。可能需要两个状态的指令通常被延长以填充20个状态,就因为该流水线的深度是20。(因特尔奔腾4使用20个状态的流水线。)
4.除了特殊状态的设计余量或冗余以外,每个流水线状态所需的时间还必须考虑到通过逻辑电路和相关晶体管的传播延迟。
5.由于仲裁逻辑内的晶体管的传播延迟,常常会降低流水线寄存器和其它资源存取的仲裁性能。
6.在附加的状态实际上会减慢执行速度而不是加快速度之前,指令可被拆分为的状态的数目具有上限。一些研究表明,DigitalEquipment Corporation(数字装备公司)的α处理器的最后一代的流水线架构超出了该上限,而实际上比先前的较短流水线的处理器版本执行得更慢。
拆分流水线
重新分解CPU设计的观点之一是考虑将流水线执行单元拆分为多个(N个)简化的处理器。(在这样的设计中,寄存器和一些其它逻辑可需要复制。)相对于上述流水线架构,N个简化的处理器中的每个处理器都将具有如下的优点:
1.无会发生流水线停止。无分支预测的必要性。
2.指令能按所需时间执行,而不是全部都被分配给与最慢指令相同的执行时间。
3.可通过减少必要的执行状态来简化指令,从而减少流水线损失。
4.从流水线中去除的每个状态都能消除传播延迟,并能去除该状态所需的设计余量。
5.能消除寄存器仲裁。
而且,相对于流水线化的CPU,具有N个简化处理器的系统还具有如下优点:
1.消除最大流水线并行操作的限制。
2.不同于流水线化的处理器,可选择性地关闭多个单独处理器的电源,以在不使用这些处理器时降低功耗。
当前并行操作方法的其它问题
并行操作的很多实现屈服于阿姆达尔定律(Amdahl′s Law)的限制。由于该问题的不可串行化部分,并行操作的加速会受到系统开销的限制。基本上,当并行操作的数量增加时,支持这种数量增加所需的通信会超过并行操作带来的益处。
红线上的停止信号(Stoplight Sitting at Redline)
当前处理器的另一低效率是不能将计算功率调整到满足即时计算的需求。大多数计算机将其大部分时间花费在等待某些事发生。其等待I/O、等待下一条指令、等待存储器存取、或有时等待人机接口。这种等待是计算功率的低效浪费。而且,花费在等待上的计算机时间常常导致功耗的增加和热量的产生。
等待规则的例外是诸如引擎控制器、信号处理器和防火墙路由器等应用软件。由于问题集和解决方法集的预定性质,因此这些应用软件是用于并行操作加速的卓越候选者。使用N个乘法器可更快地解决需要N次独立乘法的乘积的问题。
通用计算机的感知性能实际上已达到其峰点。通用计算机变得越来越忙,这是由于运行快速屏幕刷新的视频游戏、编译大的源文件或搜索数据库。在理想世界中,视频绘制将被分解为特殊用途、阴影、变换、绘制硬件。将程序分解为特殊用途硬件的一种方法是使用“线程”。
线程是自含式的、很少与其它线程进行数据通信的独立程序。线程通常用于从低速实时活动收集数据,并提供收集结果。线程也可用于在显示器上绘制变化。线程在需要进一步与另一线程交互之前,可变换数千或数百万个状态。独立线程通过并行操作为提高性能提供了机会。
许多软件编译器都支持线程的产生和管理,用于对软件设计过程进行分解。通过优选实施方式中的线程优化微处理器(TOMI)中实现的线程级并行操作技术,相同的分解将支持多CPU并行处理。
线程级并行操作
线程是用于在单CPU上分解软件程序的非常容易理解的技术。通过使用TOMI处理器,线程级并行操作能获得程序加速。
与其它并行方法相比,TOMI处理器的一个重要优点是,TOMI处理器只需对当前软件编程技术做最小的改变,而不需要开发新算法。许多现存的程序需要重新编译,但是基本上不用重写。
有效的TOMI计算机架构应该构建在大量简化处理器的周围。不同的架构可用于不同类型的计算问题。
基本计算机操作
对于通用计算机,最通用的操作按照频率减小的顺序排列是:加载和存储;排序;以及数学和逻辑。
加载和存储
加载(LOAD)和存储(STORE)的参数是源和目的地。加载和存储的能力是源和目的地的范围(例如,4G字节比256字节具有更有力的范围)。相对于当前源和目的地的位置对许多数据集来说是很重要的。加1、减1是最有用的。增加从当前源和目的地的偏移量越来越不重要了。
加载和存储也可受存储器分级体系所影响。从存储器加载可能是CPU可执行的最慢操作。
排序
分支和循环是基本的排序指令。根据测试改变指令顺序是计算机做出判定的方法。
数学和逻辑
数学和逻辑操作是三种操作中最少使用的。逻辑操作是CPU可执行的最快操作,并可仅仅需要单逻辑门延迟。由于高比特位依赖于低比特位操作的结果,因而数学操作更复杂。即使提前进位,32位相加(ADD)也可需要至少32个门延迟。使用移位相加技术的相乘(MULTIPLY)可等价于需要32个相加。
指令大小的折衷
完美指令集可由大到足以选择无限可能的源、目的地、操作和下一条指令的操作码组成。不幸地,该完美指令集的操作码将会无限宽,因而指令带宽将会是零。
高指令带宽的计算机设计包括创建这样的具有操作码的指令集,其能够利用最少的操作码位有效地定义最通用的源、目的地、操作和下一条指令。
宽的操作码导致高的指令总线带宽需求,且该得到的架构将会很快受限于冯·诺伊曼瓶颈,其中,计算机性能受到从存储器取指令的速度的限制。
如果存储器总线是64位宽,就能在每个存储器周期取单条64位指令、两条32位指令、四条16位指令或八条8位指令。32位指令的有用性最好为16位指令的两倍,这是因为32位指令将指令带宽减少为一半。
指令集设计的主要目标是减少指令冗余。一般地,优化的高效指令集利用指令和数据的位置。最简单的指令优化实现已很久了。对于大多数计算机程序,最可能的下一条指令为存储器中按顺序的下一条指令。因此不用在每条指令中包含下一条指令的字段,而是大多数指令都假设下一条指令是当前指令+1。创建零比特源和零比特目的地的架构是可能的。
堆栈架构
堆栈架构计算机也称为零操作数架构。堆栈架构根据后进先出堆栈的内容执行所有的操作。双操作数操作需要两个操作数都出现在堆栈上。当操作执行时,两个操作数都将从堆栈弹出(POP),执行该操作,然后将结果压入(PUSH)到堆栈中。由于源和目的地已隐含地位于堆栈中,因而堆栈架构计算机可具有非常短的操作码。
大多数程序需要全局寄存器的内容,在需要该寄存器时,其在堆栈上可能并不总是可用的。将该事件的发生概率最小化的尝试包括为堆栈编索引,从而允许对不位于堆栈顶部的操作数进行存取。为堆栈编索引要么需要额外的操作码位从而导致更大的指令,要么需要额外的操作以将堆栈索引值放置在堆栈本身。某些时候,定义了一个或多个额外的堆栈。更好的但非最优化的解决方法是堆栈/寄存器架构的结合。
堆栈架构操作也常常明显不符合最优化地造成冗余。例如,当堆栈在存储器内操作时,每次弹出和压入操作都可能造成浪费时间的存储器操作。而且,堆栈操作可消耗下一个操作中立即需要的操作数,从而需要进行操作数复制,并可能需要另一个存储器操作。以将一维数组中的所有元素乘以15的操作为例进行说明。
在堆栈架构上,通过如下操作实现:
1.压入数组的起始地址
2.复制(DUPLICATE)地址(因此得到数组中将用于存储结果的地址。)
3.复制地址(因此得到数组中将用于进行读取的地址。)
4.间接压入(PUSH INDIRECTLY)(将堆栈顶端所指的数组位置的内容压入)
5.压入15
6.乘法(MULTIPLY)(将第3步所读的数组内容进行15次乘法。)
7.交换(SWAP)(从堆栈的顶部得到数组地址,以用于下一条指令。)
8.间接弹出(POP INDIRECTLY)(弹出乘法结果并将其存储回数组)
9.递增(INCREMENT)(指向下一个数组元素。)
10.转到步骤2直到数组完成。
第9步的循环计数需要额外的参数,在某些架构中,该参数存储在另一堆栈中。
在假定的寄存器/累加器架构中,该实施例实现如下:
1.存储指向数组的起始位置的指针
2.读取指针(将该指针指向的地址的内容读取到累加器中)
3.乘以15
4.存储指针(将结果存储到该指针指向的地址)
5.递增指针
6.转到第2步直到数组完成。
比较上述实施例中用于堆栈架构的九个步骤和用于寄存器架构的五个步骤。而且,堆栈操作包括至少3次用于额外存储器存取的可能机会。假定的寄存器/累加器架构的循环控制能够简单地在寄存器中被处理。
堆栈对于对表达式求值是很有用的,且因而用于大多数编译器中。堆栈对于嵌套操作(例如为函数调用)也是很有用的。大多数C编译器都用堆栈实现函数调用。然而,如果没有通用存储的补充,堆栈架构则需要大量的额外数据转移和处理。为了优化的目的,堆栈的压入和弹出操作还应该与数学和逻辑操作相分离。但是从上面的实施例可见,当重复加载和存储数据时,由于数组地址由间接压入和间接弹出而消耗,因此堆栈尤其效率低。
一方面,本发明包括一种多处理器系统,其包括:多个并行通用处理器,嵌入单片RAM芯片中,其中,位于芯片上的随机存取存储器能够被每个处理器访问,其中,每个处理器都包括本地高速缓冲存储器,本地高速缓冲存储器用于处理器内的至少三个专用寄存器中的每个。
在不同是实施方式中:(1)每个本地缓冲存储器的大小等于芯片上的随机存取存储器的一行;(2)具有相关高速缓冲存储器的至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器;(3)最小指令集由七条指令组成;(4)每个处理器都能够操作以处理单线程;(5)累加器是用于除了递增指令外的每个指令的操作数;(6)每条指令的目的地总是操作数寄存器;(7)三个寄存器自动递增且三个寄存器自动递减;(8)完成每条指令均只需要一个时钟周期;(9)指令集不包括分支指令和跳转指令;(10)每条指令的长度最多为8比特;(11)单一的主处理器负责管理每个并行处理器。
另一方面,本发明还包括一种多处理器系统,其包括:嵌入单片RAM芯片上的多个并行通用处理器,其中,主存储器位于芯片上,并能够被每个处理器访问,其中,每个处理器都能够操作以对指令集进行处理,包括具有足够小的晶体管计数以适合主存储器的处理器逻辑。
在不同是实施方式中:(1)每个处理器都能够操作以处理最小指令集;(2)每个处理器都包括本地高速缓冲存储器,高速缓冲存储器用于处理器中至少三个专用寄存器中的每个;(3)每个本地高速缓冲存储器的大小等于芯片上的随机存取存储器的一行;(4)至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器;(5)最小指令集由七条指令组成;(6)每个处理器都能够操作以处理单线程;(7)单一的主处理器负责管理每个并行处理器。
另一方面,本发明还包括一种线程级并行处理方法,其中,方法利用嵌入单片RAM芯片的的随机存取存储器中的多个并行处理器和主处理器实现,其中多个处理器中的每个都能够操作以处理指令集以及处理单线程,方法包括:(a)为多个处理器的每个处理器中的三个专用寄存器中的每个寄存器分配本地高速缓冲存储器;(b)将多个处理器中一个分配以处理单线程;(c)由多个处理器处理每个分配的线程;(d)由多个处理器处理来自每个线程的结果;以及(e)在线程处理完成之后,对多个处理器的中的一个进行解分配。
在不同是实施方式中:(1)最小指令集由七条指令组成;(2)最小指令集中每条指令的长度最大为8比特;(3)最小指令集中的每条指令均在一个时钟周期内处理。
附图说明
图1描述了一个实施方式的示例性TOMI架构;
图2是示例性的指令集;
图2A示出了操作中的向前分支;
图3图解说明了不同寻址方式中的有效地址;
图4图解说明了从4-32比特的数据路径是如何简单地被创建的;
图5描述了示例性本地高速缓冲存储器;
图6描述了示例性高速缓冲存储器的管理状态;
图7示出了利用宽系统RAM总线的额外处理功能的一个实施方式;
图8描述了示例性的存储器映射;
图9描述了示例性的处理可用性表;
图10图解说明了处理器分配的三个组件;
图11描述了示例性的分解;
图12描述了示例性的系统RAM;
图13描述了64个处理器的单块阵列的示例性平面布置图。
具体实施方式
本发明至少一个实施方式的TOMI架构优选地使用可像通用计算机一样操作的最小逻辑。最常用的操作是优先的。大多数操作是可见的、常规的,并可用于编译器优化。
在一个实施方式中,如图1所示,TOMI架构是对累加器架构、寄存器架构和堆栈架构的变体。在该实施方式中:
1.类似于累加器架构,除了递增指令之外,累加器总是操作数之一。
2.类似于寄存器架构,目的地总是操作数寄存器之一。
3.累加器和程序计数器也是寄存器空间,从而可在其上操作。
4.三个专用寄存器自动递增和自动递减,并对于创建堆栈和输入输出流也是有用的。
5.全部操作都需要单个时钟周期(和两个状态:时钟高、时钟低)。
6.所有的指令都是8比特长,简化并加快了解码。
7.无分支(BRANCH)和跳转(JUMP)指令。
8.如图2所示,只有七条指令允许操作员从8比特指令中选择3比特。
优选实施方式的一些好处包括:
1.所有的操作都以逻辑允许的最大速度运行,而不是由流水线所需的平均性而压缩。逻辑操作是最快的。数学操作是次快的。需要存储器存取的操作是最慢的。
2.该架构按任何数据宽度而调整,仅受组件管脚数、加法器进位次数以及有效性所限制。
3.该架构接近执行通用计算机的所有操作所需的最小可能功能性。
4.该架构是非常透明的、有规则的,且大多数操作都可用于优化编译器。
该架构设计得足够简单,从而可以在单一的单块芯片上被复制许多次。一个实施方式将CPU的多份拷贝和存储器一起嵌入在单块芯片上。32位CPU可用少于1,500个门实现,其中大多数门都用于定义寄存器。通过利用与单一的因特尔奔腾4中使用的相同数目的晶体管,可实现优选实施方式中的将近1,000个TOMI CPU。
指令集
指令集中的七条指令以及其位映射如图2所示。每条指令优选地由单一的8比特字组成。
寻址方式
图3图解说明了不同寻址方式的有效地址。
寻址方式是:
直接寻址(Immediate)
寄存器寻址(Register)
寄存器间接寻址(Register Indirect)
寄存器间接自动递增寻址(Register Indirect Auto-increment)
寄存器间接自动递减寻址(Register Indirect Auto-decrement)
特殊情况
寄存器0和寄存器1都是程序计数器(PC)。用寄存器0(PC)作为操作数的所有操作都是有条件的,即累加器进位位(C)等于1。如果C=1,则将PC的旧值交换到累加器(ACC)中。而将寄存器1(PC)作为操作数的所有操作都是无条件的。
无分支
分支和跳转操作通常是CPU设计者的难题,因为它们需要宝贵的操作码空间中的很多位。分支功能可如下创建:通过利用LOADACC,xx将期望的分支地址加载到ACC内,然后使用STOREACC,PC指令来实现分支。通过存储到寄存器0,分支可以C的状态为条件。
跳转
跳转通过执行INC,PC而创建。执行将会需要两个周期,一个用于完成当前PC递增周期,一个用于完成INC。通过将寄存器0递增,跳转可以C的状态为条件。
相对分支
相对分支(relative branch)的创建是通过将期望的偏移量加载到ACC中,然后执行ADD,PC指令而实现的。通过与寄存器0相加,相对分支可以C的状态为条件。
向前分支
由于循环所需的向后分支(rearward branch)的位置能够通过按照首先经过循环顶部的程序步骤保存PC而简单地获得,因而向前分支(forward branch)比向后分支更有用。
比相对分支更有效的向前分支的创建通过将分支端点的最低有效位加载到ACC中,然后存储到PC中而实现。由于可根据使用寄存器0或寄存器1,而有条件或无条件地存取PC,因而向前分支也可通过将PC寄存器(寄存器0或寄存器1)作为目的地操作数的选择而为有条件或无条件的。
例如:
LOADI,#1C
STOREACC,PC
如果ACC的最高有效位都为零,则仅将6个最低有效位传送到PC寄存器。如果当前PC寄存器的6个最低有效位小于将要加载的ACC值,则将寄存器中的最高有效位保持不变。如果当前PC寄存器中的6个最低有效位大于将要加载的ACC值,则将当前PC寄存器从第7位开始递增。
这样有效地允许高达31条指令的向前分支。向前分支的方法应该在一切可能的情况下使用,这不仅因为相对于相对分支的3条指令来说,其只需要2条指令,而且因为其不需要经过加法器,而经过加法器是最慢的操作。图2显示了操作中的向前分支。
循环
循环的顶部可使用LOADACC,PC来保存。得到的指向循环结构顶部的指针则可存储在寄存器中,或压入到一个自动索引的寄存器中。在循环的底部,可用LOADACC,EA获得指针,并使用STOREACC,PC将该指针重新存储到PC中,从而产生向后循环。通过存储到寄存器0,循环可以C的状态为条件,从而造成有条件的向后循环。
自修改代码
可利用STOREACC,PC写自修改代码。指令可被创建或取至ACC,然后被存储到PC中作为下一条指令来执行。该技术可用于创建情况(CASE)结构。
假设存储器中的跳转表数组由N个地址和跳转表(JUMPTABLE)的基地址组成。为了方便起见,跳转表可位于低位存储器内,因此其地址可用LOADI或在LOADI之后跟随一个或多个右移位、ADD、ACC来创建。
假设进入跳转表的索引位于ACC内,且跳转表的基地址位于命名为JUMPTABLE的通用寄存器中:
ADD,JUMPTABLE 将索引加入跳转表的基地址中
LOADACC,(JUMPTABLE) 加载具有索引的地址
STOREACC,PC 执行跳转
如果将从0000开始的低位存储器分配给系统调用,那么,每个系统调用可执行如下,其中,SPECIAL_FUNCTION是直接操作数0-63的名字:
LOADI,SPECIAL_FUNCTION 加载系统调用的编号
LOADACC,(ACC) 加载系统调用的地址
STOREACC,PC 跳转到函数
右移位
基本的架构不会预想右移位操作。当需要该操作时,优选实施方式的解决方法是,将通用寄存器之一指定作为“右移位寄存器”。STOREACC,R1GHTSHIFT将ACC右移位后的单一位置存储到“右移位寄存器”中,其中,可用LOADACC,RIGHTSHIFT读取该值。
架构的可缩放性
TOMI架构优选地以8位指令为特征,但是数据宽度无需受到限制。图4图解说明了从4到32位的任何宽度的数据分支是如何创建的。创建更宽数据处理只需要将寄存器组、内部数据路径和ALU的宽度增加到期望的宽度。数据路径的上限只由加法器进位传播延迟和晶体管预算所限制。
为了简便起见,优选的TOMI架构实现为冯·诺伊曼存储器配置,但是哈佛架构实现(具有独立的数据总线和指令总线)也是可能的
通用数学操作
2的补码运算能以几种方法实现。可将通用寄存器预配置为全“1”并命名为ALLONES。假定操作数位于命名为OPERAND的寄存器中:
LOADACC,ALLONES
XOR,OPERAND
INC,OPERAND “2”的补码被留在OPERAND中
通用编译器结构
大多计算机程序都是由编译器生成的。因此,有用的计算机架构应该擅长于通用编译器结构。
C编译器通常使堆栈维持将参数传递给函数调用。S、X或Y寄存器可用作堆栈指针。函数调用使用例如STOREACC,(X)+,将参数压入到担当堆栈的一个自动索引寄存器上。在进入函数之后,将参数弹出到通用寄存器中,以备使用。
堆栈相对寻址
有时,传递到函数调用的元素会多于适合于通用寄存器的元素。对于下面的实施例,假定堆栈压入操作使堆栈递减。如果将S用作堆栈寄存器,读取相对于堆栈顶部的第N项:
LOADI,N
STOREACC,X
LOADACC,S
ADD,X
LOADACC,(X)
在数组中编索引
进入数组函数之后,数组基地址则位于命名为ARRAY的通用寄存器中。读取数组中的第N个元素:
LOADI,N
STOREACC,X
LOADACC5 ARRAY
ADD,X
LOADACC,(X)
在N字元素数组中编索引
有时,数组将为元素分配N个字的宽度。数组的基地址位于命名为ARRAY的通用寄存器中。在5字宽的数组中访问第N个元素的第一个字:
LOADI,N
STOREACC,X 存储到临时寄存器中
ADD,ACC 乘以2
ADD,ACC 再次乘以2,等于4
ADD,X 加1,等于5
LOADACC,ARRAY
ADD,X 加上数组的基地址
LOADACC,(X)
本地TOMI高速缓存
高速缓冲存储器是在尺寸上小于主存储器、但比主存储器具有更快的存取速度的存储器。对于许多操作而言,减少的存取时间以及程序和数据存取的本地化使得高速缓存操作能够提高优选TOMI处理器的性能。从另一个方面看,通过增加TOMI处理器相对于主存储器的独立性,高速缓冲存储器提高了并行处理性能。高速缓存相对于主存储器的性能以及在需要将另一个主存储器从高速缓冲存储器加载或存储到高速缓冲存储器之前TOMI处理器能够执行的周期数目将确定由于TOMI处理器的并行性而产生的性能的增加量。
由于TOMI处理器的并行性,TOMI本地高速缓冲存储器提高了性能的增加。如图5所示,每个TOMI处理器优选地具有三个相关的本地高速缓冲存储器:
Instruction(指令)-与PC相关
Source(源)-与X寄存器相关
Destination(目的地)-与Y寄存器相关
这些高速缓冲存储器的最佳尺寸是由应用程序决定的。通常的实施方式中,每个高速缓冲存储器需要1024字节。换句话说,1024条指令,以及256个32比特字的源和目的地。至少两个因素确定高速缓冲存储器的最佳尺寸。第一是在需要另一个高速缓冲存储器加载或存储操作之前,TOMI处理器能够循环的状态数目。第二是高速缓冲存储器从主存储器加载或存储操作的成本,其中该成本相对于在主存储器操作过程中TOMI处理器执行周期的数目。
在RAM中嵌入TOMI处理器
在一个实施方式中,宽的总线将大的嵌入式存储器连接到高速缓冲存储器,因此到高速缓冲存储器的加载或存储操作能快速地发生。通过嵌入到RAM的TOMI处理器,整个高速缓冲存储器的加载或存储将由对RAM列的单存储器周期组成。在一个实施方式中,嵌入式存储器将响应63个TOMI处理器的请求,因此当另一个TOMI处理器高速缓冲存储器完成时,高速缓冲存储器对一个TOMI处理器加载或存储的响应时间可延长。
如图6所示,在高速缓冲存储器可根据相关存储器寻址寄存器X,Y,PC的改变进行存储和加载。例如,PC寄存器的总宽可以是24位。如果PC高速缓冲存储器是1024字节,PC的低10位将定义PC高速缓冲存储器中的存取。当对PC写入以使其高14位有变化时,则将需要高速缓冲加载周期。与PC高速缓冲存储器相关的TOMI CPU将停止执行,直到高速缓冲加载周期结束,且可从PC高速缓冲存储器读取指示指令。
高速缓冲存储器双缓冲
在预期到高速缓冲存储器的加载需求时,可加载次级高速缓冲存储器。两个高速缓冲存储器将为相同的,并根据PC高14位的内容可交替地选择和取消选择。在上述的实施例中,当PC的高14位变为与预缓存在次级高速缓冲存储器中的数据的高14位相匹配时,则可将次级高速缓冲存储器选为主高速缓冲存储器。之前的主高速缓冲存储器则将变成次级高速缓冲存储器。由于大多数计算机程序的存储器呈线性递增,本发明的一个实施方式的次级高速缓冲存储器将总是用来读取当前PC的高14位加1的、主存储器的高速缓冲的存储器内容中的内容。
当将存储器数据转移到当前存储器外部时,增加次级高速缓冲存储器将会减少TOMI处理器等待从主存储器读取存储器数据的时间。次级高速缓冲存储器的增加几乎将TOMI处理的复杂性提高为两倍。对于最佳化系统,该双倍复杂性应该由相应地将TOMI处理器性能提高为两倍来抵消。否则,能用相同数目的晶体管实现没有次级高速缓冲存储器的两个简易的TOMI处理器。
高速乘法、浮点操作、额外的功能性
整数乘法和所有浮点操作需要许多执行周期,即使是专用硬件也是一样的。因此,应该将其包含在其它处理器内,而不是包含在基本TOMI处理内。数字信号处理(DSP)操作常常使用深度流水线化的乘法器,这些乘法器在每个周期产生一个结果,即使总的乘法需要许多周期。对于重复相同算法的单处理应用,这样的乘法器架构是最优化的,且可并合并为TOMI处理器的外围处理器,但是如果将其直接合并到TOMI处理的话,则可能会增加复杂性并降低总体性能。图7显示了利用宽的系统RAM总线组织的额外处理功能的一个实施例。
TOMI中断策略
中断是处理器正常顺序操作之外的且造成处理器立即改变其操作顺序的事件。
中断的实施例可能是外部装置操作的完成或某些硬件的错误条件。传统的处理器竭尽全力地快速停止正常顺序的操作,保存当前操作的状态,开始执行一些特殊的操作来处理由任何事件造成的中断,且当特殊操作完成时恢复先前的状态并继续顺序操作。中断处理质量的基本标准是响应时间。
中断对传统处理器造成一些问题。其使执行时间不确定,浪费处理器周期存储和恢复状态,使处理器设计变得复杂,并可引入减慢每个处理器操作的延时。
立即中断响应对大多数处理器来说是没必要的,除了正在进行错误处理以及处理器直接与真实世界的活动进行交互。
在多处理器TOMI系统的一个实施方式中,只有一个处理器处理基本的中断权能。所有其它处理器都非中断地运行,直到它们完成某些指定的工作并停止,或直到它们被协调处理器所停止。
输入/输出(I/O)
在TOMI处理器环境的一个实施方式中,单一的处理器负责与外部世界的所有接口。
直接存储器存取(DMA)控制
在一个实施方式中,在TOMI处理器系统中通过DMA控制器立即响应外部世界。当被外部装置请求时,DMA控制器将数据从外部装置传送到内部数据总线,用于写入系统RAM。当被请求时,相同的控制器还将数据从系统RAM传送到外部装置。DMA请求将具有内部总线存取的最高优先权。
组织TOMI处理器阵列
本发明优选实施方式的TOMI处理器设计为可被大量复制,且在单片芯片上与附加的处理功能性、非常宽的内部总线以及系统存储器像组合。该系统的示例性的存储器映射如图8所示。
每个处理器的存储器映射的前32个位置(十六进制的1F)用于该处理器的本地寄存器(见图3)。存储器映射的剩余位置可由所有处理器通过它们的高速缓冲存储器的寄存器进行寻址(见图6)。系统RAM的寻址范围只由与本地高速缓冲存储器相关的三个寄存器PC,X,Y的宽度限制。如果寄存器是24位宽,总的寻址范围将会是4M字节,但是无上限。
在一个实施方式中,64个TOMI处理器与存储器一起单片地实现。单一的主处理器负责管理其它63个处理器。当一个从属处理器空闲时,其就不计时,因此其消耗很少的功率或不消耗功率,并产生少量的热量或不产生热量。在初始化时,只有主处理器是操作的。主处理器开始取指令并执行指令,直到线程应该启动时。每个线程都已被预编译且加载到存储器中。为了启动线程,主处理器将线程分配到其中一个TOMI CPU中。
处理器可用性
TOMI处理器的工作可用性的协调优选地由图9示出的处理器可用性表来进行处理。协调(主)处理器优选地执行如下功能:
1.将从属处理器的调用参数压入其堆栈中,所述参数包括但不限于线程的执行地址、源存储器和目的存储器。
2.启动从属处理器。
3.通过轮询或通过响应中断,来响应从属处理器线程完成事件
请求一个处理器
协调处理器可从可用性表中请求处理器。返回可用标志(available_flag)设为“0”的最低处理器。然后协调处理器可将与可用处理器相关的可用标志设为“1”,从而启动从属处理器。如果无处理器可用,请求将会返回错误。可选地,可由协调处理器根据与请求的将要执行的工作相关联的优先级分配处理器。根据优先权方案进行资源分配的技术是本领域公知的。图10图解说明了处理器分配的三个优选部分:协调处理器启动操作、从属处理器操作以及通过中断响应进行协调处理器结果处理。
逐步启动从属处理器
1.协调处理器将用于线程运行的参数压入其自身的堆栈中。这些参数可包括:线程的起始地址,线程的源存储器、线程的目的存储器以及最后的参数计数(parameter_count)。
2.协调处理器请求可用的处理器。
3.处理器分配逻辑返回设置了相关的可用标志并清除了相关的已完成标志(done_flag)的最低编号的从属处理器的号码,或者返回错误。
4.如果返回错误,协调处理器则重试请求直到从属处理器变得可用,或者执行某些特殊的操作来处理错误。
5.如果返回可用的处理器号码,协调处理器则清除指示的处理器的可用标志。该操作将堆栈参数的参数计数号压入所选处理器的堆栈中。将已完成标志清零。
6.从属处理器获取栈顶元素,并将其传送给从属处理器的程序计数器。
7.然后从属处理器将程序计数器指示的存储器列读取到指令高速缓冲存储器中。
8.从属处理器开始从指令高速缓冲存储器的起始处开始执行指令。第一条指令将可能从堆栈获取调用参数。
9.从属处理器执行指令高速缓冲存储器中的线程。当线程完成时,检查其相关的已完成标志的状态。如果设置了已完成标志,则等待直到已完成标志被清除,从而指示协调处理器已处理了任何先前结果。
10.如果与从属处理器相关的中断向量设置为-1,则不通过设置已完成标志而创建中断。因此协调处理器可轮询已完成标志是否设置。
当协调处理器检测到已设置了已完成标志时,其则可处理从属处理器的结果,并可重新指定从属处理器进行新的工作。当从属处理器的结果已经被处理时,相关的从属处理器则将清除相关的已完成标志。
如果与从属处理器相关的中断向量不等于-1,那么,设置相关的已完成标志将会造成协调处理器被中断,并且在中断向量地址开始执行中断处理程序。
如果相关的可用标志也已设置,协调处理器则也可读取被压入到从属堆栈的返回参数。
中断处理程序将处理从属处理器的结果,并且可能为重新指定从属处理器进行新的工作。当从属处理器的结果已被处理时,运行在协调处理器上的中断处理程序则将清除相关的已完成标志。
11.如果已完成标志被清除,从属处理器则设置其相关的已完成标志,并保存新的起始时间。从属处理器可继续工作或可返回可用状态。为了返回可用状态,从属处理器可将返回参数压入其堆栈中,然后进行堆栈计数并设置其可用标志。
存储器锁定
TOMI处理器通过其高速缓冲存储器对系统存储器进行读和写。一次对一个完全高速缓冲存储的列进行读或写。任何存储器可读取系统存储器的任何部分。单独的处理器可将存储器的列锁定为专用于排它地进行写操作。该锁定机制避免了处理器之间的存储器写冲突。
建议的应用程序
并行操作有效地加速了可分为独立的工作片段用于各处理器的应用程序。一个容易分解的应用程序是机器人视觉的图像处理。图像处理算法包括相关性、均衡、边缘识别以及其它操作。许多操作都是由矩阵处理执行。如图11所示,该算法常常很好地分解。
在图11中,示例性的图像映射显示了24个处理器,其中每个处理器被分配以处理全部图像映射的一个矩形子集中的图像数据。
图12示出了在一个实施方式中如何分配TOMI系统RAM。一块系统RAM保存图像捕捉像素,且另一个块保存处理的结果。
在操作中,协调处理器分配了DMA信道,以每隔一段固定的时间就将图像像素从外部源传送到内部系统RAM。图像捕捉的速度通常是60个图像/秒。
然后,协调处理器通过将待由X寄存器使用的图像映射的地址、待由Y寄存器使用的已处理图像的地址、2的参数计数、以及图像处理算法的地址压入堆栈,而使从属处理器1可用。协调处理器随后类似地通过25使处理器2可用。处理器继续以并行的方式独立执行,直到图像处理算法完成。
当算法完成时,每个处理器在处理器可用性表中设置其相关的已完成标志。该结果由协调处理器处理,该协调处理器对完成进行轮询或对“完成”事件上的中断做出响应。
图13示出了64个处理器的单片阵列的示例性平面布置图。
可理解的是,本发明仅通过实施例参考附图进行了描述,可对本发明进行改进和修改,而不偏离本发明的范围或精神。
Claims (24)
1.一种多处理器系统,包括:
多个并行通用处理器,嵌入单片RAM芯片中,
其中,位于所述芯片上的随机存取存储器能够被每个所述处理器访问,
其中,每个所述处理器能够操作以处理指令集且包括本地高速缓冲存储器,所述本地高速缓冲存储器用于所述处理器内的至少三个专用寄存器中的每个。
2.如权利要求1所述的系统,其中每个所述本地高速缓冲存储器的大小等于所述芯片上的随机存取存储器的一行。
3.如权利要求1所述的系统,其中具有相关高速缓冲存储器的所述至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器。
4.如权利要求1所述的系统,其中所述指令集包括由七条指令组成的最小指令集。
5.如权利要求1所述的系统,其中,每个所述处理器都能够操作以处理单线程。
6.如权利要求1所述的系统,其中,累加器是用于除了递增指令外的每个指令的操作数。
7.如权利要求1所述的系统,其中,每条指令的目的地总是操作数寄存器。
8.如权利要求1所述的系统,其中,三个寄存器自动递增且三个寄存器自动递减。
9.如权利要求1所述的系统,其中,完成每条指令均只需要一个时钟周期。
10.如权利要求4所述的系统,其中,所述指令集不包括分支指令和跳转指令。
11.如权利要求1所述的系统,其中,每条指令的长度最多为8比特。
12.如权利要求1所述的系统,其中,单一的主处理器负责管理每个所述并行通用处理器。
13.一种多处理器系统,包括:
嵌入单片RAM芯片中的多个并行通用处理器;以及
主存储器,位于所述芯片上,并能够被每个所述处理器访问,
其中,每个所述处理器能够操作以处理指令集,包括具有足够小的晶体管计数以适合主存储器的处理器逻辑。
14.如权利要求13所述的系统,其中,所述指令集包括像通用计算机一样操作的最小数目的指令。
15.如权利要求13所述的系统,其中,每个所述处理器都包括本地高速缓冲存储器,所述高速缓冲存储器用于所述处理器中至少三个专用寄存器中的每个。
16.如权利要求15所述的系统,其中,每个所述本地高速缓冲存储器的大小等于所述芯片上的随机存取存储器的一行。
17.如权利要求15所述的系统,其中,所述至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器。
18.如权利要求14所述的系统,其中,所述指令集由七条指令组成。
19.如权利要求13所述的系统,其中,每个所述处理器都能够操作以处理单线程。
20.如权利要求13所述的系统,其中,单一的主处理器负责管理每个所述并行通用处理器。
21.一种线程级并行处理方法,其中,所述方法利用嵌入单片RAM芯片的随机存取存储器中的多个并行处理器和主处理器实现,其中所述多个并行处理器中的每个都能够操作以处理指令集以及处理单线程,所述方法包括:
(a)为所述多个处理器的每个处理器中的三个专用寄存器中的每个寄存器分配本地高速缓冲存储器;
(b)将所述多个处理器中一个分配以处理单线程;
(c)由所述多个处理器处理每个分配的线程;
(d)由所述多个处理器处理来自每个线程的结果;以及
(e)在线程处理完成之后,对所述多个处理器的中的一个进行解分配。
22.如权利要求21所述的方法,其中,所述指令集是由七条指令组成的最小指令集。
23.如权利要求21所述的方法,其中,所述指令集中每条指令的长度最大为8比特。
24.如权利要求21所述的方法,其中,所述指令集中的每条指令均在一个时钟周期内处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US76495506P | 2006-02-03 | 2006-02-03 | |
US60/764,955 | 2006-02-03 | ||
PCT/US2007/003313 WO2007092528A2 (en) | 2006-02-03 | 2007-02-05 | Thread optimized multiprocessor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101395578A CN101395578A (zh) | 2009-03-25 |
CN101395578B true CN101395578B (zh) | 2013-01-09 |
Family
ID=38345789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800080470A Active CN101395578B (zh) | 2006-02-03 | 2007-02-05 | 多处理器系统和线程级并行处理方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US8977836B2 (zh) |
EP (2) | EP2154607A3 (zh) |
JP (1) | JP4987882B2 (zh) |
KR (1) | KR101120398B1 (zh) |
CN (1) | CN101395578B (zh) |
AT (1) | ATE536585T1 (zh) |
AU (1) | AU2007212342B2 (zh) |
CA (1) | CA2642022A1 (zh) |
HK (1) | HK1127414A1 (zh) |
RU (1) | RU2427895C2 (zh) |
WO (1) | WO2007092528A2 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2007212342B2 (en) * | 2006-02-03 | 2011-05-12 | Russell H. Fish Iii | Thread optimized multiprocessor architecture |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
US7962553B2 (en) * | 2006-07-31 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | Method and system for distribution of maintenance tasks in a multiprocessor computer system |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8407680B2 (en) * | 2008-12-16 | 2013-03-26 | International Business Machines Corporation | Operand data structure for block computation |
US8458439B2 (en) * | 2008-12-16 | 2013-06-04 | International Business Machines Corporation | Block driven computation using a caching policy specified in an operand data structure |
US8281106B2 (en) * | 2008-12-16 | 2012-10-02 | International Business Machines Corporation | Specifying an addressing relationship in an operand data structure |
US8285971B2 (en) * | 2008-12-16 | 2012-10-09 | International Business Machines Corporation | Block driven computation with an address generation accelerator |
US8327345B2 (en) * | 2008-12-16 | 2012-12-04 | International Business Machines Corporation | Computation table for block computation |
US20120131584A1 (en) * | 2009-02-13 | 2012-05-24 | Alexey Raevsky | Devices and Methods for Optimizing Data-Parallel Processing in Multi-Core Computing Systems |
JP5367416B2 (ja) * | 2009-03-04 | 2013-12-11 | 光洋サーモシステム株式会社 | 搬送ロボット装置 |
US9535876B2 (en) * | 2009-06-04 | 2017-01-03 | Micron Technology, Inc. | Conditional operation in an internal processor of a memory device |
US8527740B2 (en) * | 2009-11-13 | 2013-09-03 | International Business Machines Corporation | Mechanism of supporting sub-communicator collectives with O(64) counters as opposed to one counter for each sub-communicator |
US9823928B2 (en) * | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
KR101984635B1 (ko) | 2012-07-19 | 2019-05-31 | 삼성전자주식회사 | 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 |
JP6099329B2 (ja) * | 2012-08-02 | 2017-03-22 | シャープ株式会社 | 端末、基地局、通信方法および集積回路 |
US9760511B2 (en) * | 2014-10-08 | 2017-09-12 | International Business Machines Corporation | Efficient interruption routing for a multithreaded processor |
RU2693682C2 (ru) * | 2014-12-19 | 2019-07-03 | Сергей Анатольевич Горишний | Система и способ управления функционально связанными данными |
RU2612569C2 (ru) * | 2015-01-27 | 2017-03-09 | Акционерное общество "Научно-исследовательский институт Авиационного оборудования" | Способ автоматического управления избыточностью неоднородной вычислительной системы и устройство для его реализации |
CN104699449B (zh) * | 2015-04-03 | 2017-09-29 | 中国科学院软件研究所 | 一种基于gmp的大整数加法和减法多核并行化实现方法 |
CN111104062B (zh) * | 2019-11-22 | 2023-05-02 | 中科寒武纪科技股份有限公司 | 存储管理方法、装置和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US530890A (en) * | 1894-12-11 | Patrick fitzgibbons | ||
DE1979808U (de) | 1967-01-12 | 1968-02-29 | Hovalwerk Ag Ospelt | Heizkessel zum verfeuern fluessiger oder gasfoermiger brennstoffe. |
US3990054A (en) * | 1974-11-05 | 1976-11-02 | Honeywell Inc. | Microprogram organization techniques |
US4641238A (en) * | 1984-12-10 | 1987-02-03 | Itt Corporation | Multiprocessor system employing dynamically programmable processing elements controlled by a master processor |
US5050075A (en) * | 1988-10-04 | 1991-09-17 | Bell Communications Research, Inc. | High performance VLSI data filter |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
WO1991011765A1 (en) * | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
DE69425377T2 (de) * | 1994-11-29 | 2001-02-15 | International Business Machines Corp., Armonk | Einzel-Zyklus-Prozessor zur Echtzeitsverarbeitung |
US5941981A (en) * | 1997-11-03 | 1999-08-24 | Advanced Micro Devices, Inc. | System for using a data history table to select among multiple data prefetch algorithms |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
DE10121792C2 (de) | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US7039776B2 (en) * | 2003-04-17 | 2006-05-02 | Broadcom Corporation | Patch memory system for a ROM-based processor |
US7353362B2 (en) * | 2003-07-25 | 2008-04-01 | International Business Machines Corporation | Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus |
JP4057989B2 (ja) * | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
FI20040261A0 (fi) * | 2004-02-18 | 2004-02-18 | Nokia Corp | Aikatiedon tarjoaminen |
US7676646B2 (en) * | 2005-03-02 | 2010-03-09 | Cisco Technology, Inc. | Packet processor with wide register set architecture |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
AU2007212342B2 (en) | 2006-02-03 | 2011-05-12 | Russell H. Fish Iii | Thread optimized multiprocessor architecture |
-
2007
- 2007-02-05 AU AU2007212342A patent/AU2007212342B2/en not_active Ceased
- 2007-02-05 CN CN2007800080470A patent/CN101395578B/zh active Active
- 2007-02-05 JP JP2008553428A patent/JP4987882B2/ja not_active Expired - Fee Related
- 2007-02-05 KR KR1020087021561A patent/KR101120398B1/ko active IP Right Grant
- 2007-02-05 US US11/702,979 patent/US8977836B2/en active Active
- 2007-02-05 RU RU2008135666/08A patent/RU2427895C2/ru not_active IP Right Cessation
- 2007-02-05 AT AT07763540T patent/ATE536585T1/de active
- 2007-02-05 EP EP09174901A patent/EP2154607A3/en not_active Withdrawn
- 2007-02-05 WO PCT/US2007/003313 patent/WO2007092528A2/en active Application Filing
- 2007-02-05 CA CA002642022A patent/CA2642022A1/en not_active Abandoned
- 2007-02-05 EP EP07763540A patent/EP1979808B1/en not_active Not-in-force
-
2009
- 2009-06-04 HK HK09105041.9A patent/HK1127414A1/en not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
Also Published As
Publication number | Publication date |
---|---|
EP1979808A4 (en) | 2009-04-08 |
KR20080109743A (ko) | 2008-12-17 |
EP1979808A2 (en) | 2008-10-15 |
WO2007092528A3 (en) | 2008-08-28 |
US20070192568A1 (en) | 2007-08-16 |
WO2007092528A9 (en) | 2009-05-14 |
EP2154607A2 (en) | 2010-02-17 |
EP1979808B1 (en) | 2011-12-07 |
AU2007212342A1 (en) | 2007-08-16 |
CN101395578A (zh) | 2009-03-25 |
RU2008135666A (ru) | 2010-03-10 |
EP2154607A3 (en) | 2010-07-14 |
CA2642022A1 (en) | 2007-08-16 |
JP2009525545A (ja) | 2009-07-09 |
WO2007092528A2 (en) | 2007-08-16 |
US8977836B2 (en) | 2015-03-10 |
KR101120398B1 (ko) | 2012-02-24 |
HK1127414A1 (en) | 2009-09-25 |
ATE536585T1 (de) | 2011-12-15 |
JP4987882B2 (ja) | 2012-07-25 |
RU2427895C2 (ru) | 2011-08-27 |
AU2007212342B2 (en) | 2011-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101395578B (zh) | 多处理器系统和线程级并行处理方法 | |
CN101796484B (zh) | 线程优化的多处理器架构 | |
CN113703834B (zh) | 基于块的处理器核复合寄存器 | |
CN1304943C (zh) | 同时多线程处理器及提高其性能的方法 | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
US9632790B2 (en) | Select logic for the instruction scheduler of a multi strand out-of-order processor based on delayed reconstructed program order | |
US20060265555A1 (en) | Methods and apparatus for sharing processor resources | |
US20070143582A1 (en) | System and method for grouping execution threads | |
CA2337962C (en) | Method and apparatus for releasing functional units in a multithreaded vliw processor | |
CN103635875A (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
CN101268444A (zh) | 用于多处理器上流媒体应用的数据转换 | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
CN1820253A (zh) | 上下文流水线操作 | |
EP1146420A1 (en) | Method and apparatus for splitting packets in a multithreaded VLIW processor | |
CN107180010A (zh) | 异构计算系统和方法 | |
CN115374923A (zh) | 基于risc-v扩展的通用神经网络处理器微架构 | |
US20240272909A1 (en) | Instruction execution method, processor and electronic apparatus | |
EP1378824A1 (en) | A method for executing programs on multiple processors and corresponding processor system | |
US6766437B1 (en) | Composite uniprocessor | |
CN102609306A (zh) | 多核处理芯片对视频处理任务的处理方法及其系统 | |
US8285975B2 (en) | Register file with separate registers for compiler code and low level code | |
Rutzig | Multicore platforms: Processors, communication and memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1127414 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1127414 Country of ref document: HK |