CN104536723A - 线程优化的多处理器架构 - Google Patents

线程优化的多处理器架构 Download PDF

Info

Publication number
CN104536723A
CN104536723A CN201410827036.7A CN201410827036A CN104536723A CN 104536723 A CN104536723 A CN 104536723A CN 201410827036 A CN201410827036 A CN 201410827036A CN 104536723 A CN104536723 A CN 104536723A
Authority
CN
China
Prior art keywords
processor
instruction
tomi
memory
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410827036.7A
Other languages
English (en)
Inventor
拉塞尔·H·菲什
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN104536723A publication Critical patent/CN104536723A/zh
Pending legal-status Critical Current

Links

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • 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/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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 or look ahead
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Semiconductor Memories (AREA)

Abstract

在一个方面,本发明包括一种系统,该系统包括:(a)位于单个芯片上的多个并行处理器;以及(b)计算机存储器,位于芯片上并且被处理器中的每个访问;处理器中的每个被操作为处理最小指令集,处理器中的每个包括专用于处理器中的至少三个特定寄存器中的每个的本地高速缓冲存储器。在另一方面,本发明包括一种系统,该系统包括:(a)位于单个芯片上的多个并行处理器;以及(b)计算机存储器,位于芯片上并且被处理器中的每个访问,处理器中的每个被操作为处理被优化用于线程级并行处理的指令集,每个处理器访问芯片上的计算机存储器的内部数据总线,内部数据总线的宽度是存储器的一行的宽度。

Description

线程优化的多处理器架构
本申请为题为“线程优化的多处理器架构”的中国专利申请的分案申请,该中国专利申请的申请号为200880014972.9,申请日为2008年6月27日。
技术领域
本申请涉及线程优化的多处理器架构,更具体地涉及通过半导体制造工艺制备的线程优化多处理器。
背景技术
可使用两种一般的方法来加快计算机速度:加快指令执行速度或以并行的方式执行更多的指令。由于指令执行速度已接近硅电子迁移率的极限,因而并行操作成为加快计算机速度的最佳可选方式。
并行操作的早期尝试包括:
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编译器都用堆栈实现函数调用。然而,如果没有通用存储的补充,堆栈架构则需要大量的额外数据转移和处理。为了优化的目的,堆栈的压入和弹出操作还应该与数学和逻辑操作相分离。但是从上面的实施例可见,当重复加载和存储数据时,由于数组地址由间接压入和间接弹出而消耗,因此堆栈尤其效率低。
发明内容
一方面,本发明包括一种系统,其包括:(a)位于单片芯片上的多个并行处理器;以及(b)计算机存储器,其位于芯片上并能够被每个处理器访问;其中,每个处理器都能够操作以处理最小(de minimis)指令集,并且,每个处理器都包括本地高速缓冲存储器,本地高速缓冲存储器用于处理器内的至少三个专用寄存器中的每个。
在不同的实施方式中:(1)每个本地缓冲存储器的大小等于芯片上的随机存取存储器的一行;(2)具有相关高速缓冲存储器的至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器;(3)最小指令集包括七条基本指令;(4)每个处理器都能够操作以处理单线程;(5)累加器是用于除了递增指令外的每个指令的操作数;(6)每条基本指令的目的地总是操作数寄存器;(7)三个寄存器自动递增且三个寄存器自动递减;(8)指令集不包括分支指令和跳转指令;(9)每条指令的长度最多为8比特;(10)单一的主处理器负责管理每个并行处理器。
另一方面,本发明还包括一种系统,其包括:(a)位于单片芯片上的多个并行处理器;以及(b)计算机存储器,其位于芯片上,并能够被每个处理器访问;其中,每个处理器都能够操作以对指令集进行处理,指令集被优化用于线程级并行处理。
在不同的实施方式中:(1)每个处理器都能够操作以处理最小指令集;(2)每个处理器都包括本地高速缓冲存储器,高速缓冲存储器用于处理器中至少三个专用寄存器中的每个;(3)每个本地高速缓冲存储器的大小等于芯片上的随机存取存储器的一行;(4)至少三个专用寄存器包括指令寄存器、源寄存器和目的寄存器;(5)最小指令集包括七条基本指令;(6)每个处理器都能够操作以处理单线程;(7)单一的主处理器负责管理每个并行处理器;以及(8)最小指令集包括指令扩展的最小集合以优化处理器操作和促进软件编译器的效率。
在另一实施方式中,本发明还包括一种线程级并行处理方法,其中,方法利用单一芯片上的主处理器、多个并行处理器以及计算机存储器实现,其中多个处理器中的每个都能够操作以处理最小指令集以及处理单线程,方法包括:(a)为多个处理器的每个处理器中的三个专用寄存器中的每个寄存器分配本地高速缓冲存储器;(b)将多个处理器中一个分配以处理单线程;(c)由处理器处理每个分配的线程;(d)由处理器处理来自每个线程的结果;(e)在线程处理完成之后,对多个处理器的中的一个进行解分配;以及(f)最小指令集包括指令的最小集合以优化处理器管理。
在不同的实施方式中,最小指令集包括七个基本指令,最小指令集中的指令的长度最大为8位。最小指令集还可包括除了七个基本指令以外的一组扩展指令,这组扩展指令优化TOMI CPU的内部操作、有助于优化正由TOMI CPU执行的软件程序指令的执行并且优化用于TOMI CPU的软件编译器的操作。具有多个TOMI CPU核的本发明实施方式还可包括用于管理多个CPU核的一组有限的处理器管理指令。
在另一方面,本发明包括一种系统,该系统包括:(a)多个并行处理器,安装在存储器模块上;(b)外部存储器控制器;以及(c)通用中央处理单元,并行处理器中的每个被操作为处理被优化用于线程级并行处理的指令。
在不同的实施方式中,(1)并行处理器中的每个被操作为处理最小指令集;(2)在存储器模式寄存器中分配的一个或多个位被操作为启用或禁用并行处理器中的一个或多个;(3)存储器模块是双列直插内存模块;(4)处理器中的每个被操作为处理单线程;(5)多个线程通过共享的存储器共享数据;(6)多个线程通过一个或多个共享的变量共享数据;(7)存储器模块是DRAM、SRAM和FLASH存储器中的一个;(8)并行处理器中的至少一个被当作主处理器,并行处理器中的其它被当作从属处理器;(9)每个处理器具有时钟速度,除了主处理器的每个处理器被操作为将该处理器的时钟速度调整为优化性能或功率消耗;(10)每个处理器被操作为被当作主处理器或从属处理器;(11)主处理器请求从属处理器的处理,等待来自从属处理器的输出,并且组合输出;(12)当从几个处理器中的每个接收到输出时,主处理器组合来自几个处理的输出;(13)通过停止并行处理器中的一个或多个来提供低功率耗散;以及(14)并行处理器中的每个与程序计数器相关联并且被操作为通过将全1写入与并行处理器相关联的程序计数器中而被停止。
在又一方面,本发明包括一种系统,该系统包括:多个并行处理器,被嵌入在动态随机存取存储器(DRAM)芯片中,多个并行处理器与外部存储器控制器和外部处理器通信,并行处理器中的每个被操作为处理被优化线程级并行处理的指令集。
在其它不同的实施方式中,(1)所述芯片用DRAM引脚封装;(2)并行处理器被安装在双列直插内存模块上;(3)系统作为DRAM工作,除了处理器通过DRAM模式寄存器启用;(4)外部处理器被操作为将数据和指令从相关联的永久存储设备传输至DRAM;(5)永久存储设备是FLASH存储器;以及(6)外部存储器被操作为在并行处理器与外部设备之间提供输入/输出接口。
在又一方面,本发明包括一种系统,该系统包括:(a)位于单个芯片上的多个处理器;以及(b)计算机存储器,位于芯片上并且被处理器中的每个访问;处理器中的每个被操作为处理最小指令集,处理器中的每个包括专用于处理器中的至少三个特定寄存器的本地高速缓冲存储器。
在其它不同的实施方式中,(1)本地高速缓存存储器中的每个的大小等于芯片上的随机存取存储器的一行;(2)每个处理器访问芯片上的随机存取存储器的内部数据总线,内部数据总线的宽度为随机存取存储器的一行的宽度;(3)内部数据总线的宽度为1024、2048、4096、8192、16328或32656位;(4)内部数据总线的宽度是1024位的整数倍;(5)专用于处理器中的至少三个特定寄存器的本地高速缓冲存储器被操作为在一个存储器读或写周期内被填充或清洗;(6)最小指令集基本上由七个基本指令组成;(7)基本指令集包括ADD、XOR、INC、AND、STOREACC、LOADACC和LOADI指令;(8)最小指令集中的每个指令的长度最大为8位;(9)最小指令集包括多个指令集扩展以优化处理器上的指令序列的执行;而且所述指令扩展基本上由小于20个指令组成;(10)最小指令集包括一组指令以选择地控制芯片上的多个处理器;(12)每个处理器控制指令的长度最大为8位;(13)通过被设计用于单块存储器设备的半导体制造工艺,用位于芯片上的计算机存储器,在芯片上制造多个处理器;(14)半导体制造工艺使用小于4层的金属互连;(15)半导体制造工艺使用小于3层的金属互连;(16)将多个处理器集成到计算机存储器电路导致小于30%的芯片尺寸的增加;(17)将多个处理器集成到计算机存储器电路导致小于20%的芯片尺寸的增加;(18)将多个处理器集成到计算机存储器电路导致小于10%的芯片尺寸的增加;(19)将多个处理器集成到计算机存储器电路导致小于5%的芯片尺寸的增加;(20)小于250,000个晶体管用于建立芯片上的每个处理器;(21)通过小于4层的金属互连的半导体制造工艺制造芯片;(22)处理器中的每个被操作为处理单线程;(23)累加器是除了递增指令以外的每个基本指令的操作数;(24)用于每个基本指令的目的地总是操作数寄存器;(25)三个寄存器自动递增,三个寄存器自动递减;(26)每个基本指令只需要一个时钟周期即可完成;(27)指令集包括无BRANCH指令和无JUMP指令;以及(28)单个主处理器负责管理并行处理器中的每个。
在又一方面,本发明包括一种系统,该系统包括:(a)位于单个芯片上的多个并行处理器;以及(b)计算机存储器,位于芯片上并且被处理器中的每个访问,处理器中的每个被操作为处理被优化用于线程级并行处理的指令集;每个处理器访问芯片上的计算机存储器的内部数据总线,内部数据总线的宽度不大于存储器的一行的宽度。
在不同的实施方式中,(1)处理器中的每个被操作为处理最小指令集;(2)处理器中的每个包括专用于处理器中的至少三个特定寄存器中的每个的本地高速缓冲存储器;(3)本地高速缓冲存储器中的每个的大小等于芯片上的计算机存储器的一行;(4)至少三个特定寄存器包括指令寄存器、源寄存器和目的地寄存器;(5)最小指令集基本上由七个基本指令组成;(6)基本指令集包括ADD、XOR、INC、AND、STOREACC、LOADACC和LOADI指令;(7)指令集中的每个指令的长度最大为8位;(8)处理器中的每个被操作为处理单线程;(9)单个主处理器负责管理并行处理器中的每个;(10)最小指令集包括多个指令扩展以优化处理器上的指令序列的执行;而且指令扩展包括小于20个指令;(11)每个指令扩展的长度最大为8位;(12)最小指令集包括一组指令以选择地控制芯片上的多个处理器;(13)每个处理器控制指令的长度最大为8位;以及(14)能够通过被设计用于单块存储器设备的半导体制造工艺,用位于芯片上的计算机存储器,在芯片上制造多个处理器。
在又一方面,本发明包括一种使用单个芯片上的多个并行处理器、主处理器和计算机存储器的线程级并行处理方法,多个处理器中的每个被操作为处理最小指令集并且处理单线程,该方法包括:(a)为多个处理器中的每个内的三个特定寄存器中的每个分配本地高速缓冲存储器;(b)分配多个处理器中的一个以处理单线程;(c)由处理器处理每个分配的线程;(d)对处理器处理每个线程的结果进行处理;(e)在线程被处理之后不再分配多个处理器中的一个。
在不同的实施方式中,(1)最小指令集基本上由七个基本指令组成;(2)基本指令包括ADD、XOR、INC、AND、STOREACC、LOADACC和LOADI指令;(3)最小指令集包括一组指令以选择地控制多个处理器;(4)每个处理器控制指令的长度最大为8位;(5)该方法进一步包括如下步骤:每个处理器通过存储器的内部数据总线访问计算机存储器,内部数据总线的宽度为芯片上的存储器的一行的宽度;以及(6)最小指令集中的每个指令的长度最大为8位。
在又一方面,本发明包括一种系统,该系统包括:(a)多个处理器,被嵌入在与用于存储器设备的电子工业标准设备封装和引脚布局兼容的存储器芯片内;以及(b)一个或多个处理器,可通过被传输至存储器芯片的存储器模式寄存器的信息激活,存储器芯片的功能与工业标准存储设备的操作兼容,除了所述处理器的一个或多个通过所述存储器模式寄存器被激活的情况。
在本发明的另一方面,提供了一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:在至少一个芯片上将少于16层的金属互连;将至少一个处理器嵌入所述至少一个芯片中;以及将所述至少一个芯片安装在双列直插内存模块上。
在本发明的又一方面中,提供了一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:在至少一个芯片上将少于8层的金属互连;将至少一个处理器嵌入所述至少一个芯片中;以及将所述至少一个芯片安装在双列直插内存模块上。
在本发明的又一方面中,提供了一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:在至少一个芯片上将少于4层的金属互连;将至少一个处理器嵌入所述至少一个芯片中;以及将所述至少一个芯片安装在双列直插内存模块上。
附图说明
图1描述了一个实施方式的示例性TOMI架构;
图2是示例性的基本指令集;
图2A示出了操作中的向前分支;
图2B图示了示例性TOMI指令集的指令映射;
图2C图示了一组示例性的多TOMI处理器管理指令扩展;
图2D图示了用于TOMI处理器的时钟编程电路;
图2E示出了一组示例性指令扩展;
图3图解说明了不同寻址方式中的有效地址;
图4图解说明了从4-32比特的数据路径是如何简单地被创建的;
图5描述了示例性本地高速缓冲存储器;
图6描述了示例性高速缓冲存储器的管理状态;
图7A示出了利用宽系统RAM总线的额外处理功能的一个实施方式;
图7B示出了用于将由TOMI处理器访问的两个存储体的数据线路交织的示例性电路;
图8描述了示例性的存储器映射;
图9描述了示例性的处理可用性表;
图10图解说明了处理器分配的三个组件;
图10A图示了DIMM封装上的多个TOMI处理器的实施方式;
图10B图示了在与通用CPU接口连接的DIMM封装上的多个TOMI处理器的实施方式;
图10C描述了用于多个TOMI处理器实施方式的示例性TOMI处理器初始化;
图10D图示了用于TOMI处理器初始化的存储器模式寄存器的使用;
图10E描述了示例性TOMI处理器可用性状态图;
图10F示出了示例性处理器间通信电路设计;
图10G示出了识别TOMI处理器来执行工作的示例性硬件实现;
图10H示出了示例性处理器仲裁图;
图11描述了示例性的分解;
图12描述了示例性的系统RAM;
图13A描述了64个TOMI处理器的单块阵列的示例性平面布置图;
图13B描述了TOMI处理器的单块阵列的另一示例性平面布置图;
图14A描述了TOMI外围控制器芯片(TOMIPCC)的示例性平面布置图;
图14B描述了使用TOMIPCC的蜂窝式便携无线电话语言翻译器应用的示例性设计;
图14C描述了使用TOMIPCC和多个TOMI DIMMS的以存储器为中心的数据库应用的示例性设计;
图15A至15D示出了32位TOMI处理器的示例性实施方式的顶层示意图;
图15E示出了图15A-D所示的示意图的信号说明。
具体实施方式
本发明至少一个实施方式的TOMI架构优选地使用可像通用计算机一样操作的最小逻辑。最常用的操作是优先的。大多数操作是可见的、常规的,并可用于编译器优化。
在一个实施方式中,如图1所示,TOMI架构是对累加器架构、寄存器架构和堆栈架构的变体。在该实施方式中:
1.类似于累加器架构,除了递增指令之外,累加器总是操作数之一。
2.类似于寄存器架构,目的地总是操作数寄存器之一。
3.累加器和程序计数器也是寄存器空间,从而可在其上操作。
4.三个专用寄存器自动递增和自动递减,并对于创建堆栈和输入输出流也是有用的。
5.所有的指令都是8比特长,简化并加快了解码。
6.无分支(BRANCH)和跳转(JUMP)指令。
7.如图2所示,只有七条基本指令允许操作员从8比特指令中选择3比特。
优选实施方式的一些好处包括:
1.所有的操作都以逻辑允许的最大速度运行,而不是由流水线所需的平均性而压缩。逻辑操作是最快的。数学操作是次快的。需要存储器存取的操作是最慢的。
2.该架构按任何数据宽度而调整,仅受组件管脚数、加法器进位次数以及有效性所限制。
3.该架构接近执行通用计算机的所有操作所需的最小可能功能性。
4.该架构是非常透明的、有规则的,且大多数操作都可用于优化编译器。
该架构设计得足够简单,从而可以在单一的单块芯片上被复制许多次。一个实施方式将CPU的多份拷贝和存储器一起嵌入在单块芯片上。简化的32位CPU可用少于1,500个门实现,其中大多数门都用于定义寄存器。通过利用与单一的因特尔奔腾4中使用的相同数目的晶体管,可实现优选实施方式中的将近1,000个TOMI CPU。
TOMI CPU中的简化指令集执行通用计算机的必要操作。处理器的指令集越小,处理器越能有效地运行。TOMI CPU被设计为与现代处理器架构相比具有格外少的指令数。例如,与具有286条指令的因特尔奔腾处理器、具有195条指令的因特尔安腾处理器、具有127条指令的StrongARM处理器和具有多于400条指令的IMB Cell处理器相比,TOMI CPU的一个实施方式具有25条指令。
与最新一代的奔腾处理器所需的30个时钟周期形成对比,TOMICPU的基本指令集被简化和设计为在单一的系统时钟周期内执行。TOMI CPU架构是“非流水线”架构。这种架构和单一的时钟周期指令执行显著地减少或消除在其它并行的处理或流水线架构中发生的延迟、依赖性和浪费的时钟周期。尽管基本指令只需要单一时钟周期来执行时,但是随着时钟速度增加(并且时钟周期时间减少),执行结果传播通过用于复杂数学指令的电路晶体管门(例如,ADD)所需的时间可达到单一时钟周期的极限。在这种情况下,允许在两个时钟周期内执行特定的指令可能是最佳的,从而不会减慢较快指令的执行。这取决于CPU设计中系统时钟速度、制造工艺和电路设计的优化。
TOMI简化的指令集允许用少于5000个晶体管(不包括高速缓冲存储器)构造32位TOMI CPU。通过附图15A至15D示出了单一的32位TOMI CPU的实施方式的顶层示意图,图15E示出了信号说明。即使使用高速缓冲存储器和相关的译码逻辑,与最新一代因特尔奔腾微处理器芯片需要250,000,000个晶体管相比,32位TOMI CPU可使用40,000至200,000个晶体管(取决于CPU高速缓冲存储器的大小)构造。遗传的微处理器架构(例如因特尔奔腾、安腾、IBM Cell和StrongARM等)需要大量且递增数量的晶体管来实现处理容量的递增。TOMI CPU架构通过为每个CPU核使用格外少的晶体管而与这种工业进步相反。TOMI CPU的较少的晶体管数量提供了许多的优点。
由于TOMI CPU的紧凑的尺寸,因此可在同一个硅芯片上构造多个CPU。这也允许将多个CPU和主存储器(例如DRAM)构造在同意芯片上,而仅在DRAM芯片自身的制造成本之外使用极少的附加制造成本。因此,能够通过最小程度地增加DRAM芯片的尺寸和制造成本,将多个TOMI CPU置于单一芯片上用于并行处理。例如,512MBDRAM包含大约7亿个晶体管。64个TOMI CPU(假设单一的TOMICPU需要200,000个晶体管)仅在任何DRAM设计上增加1280万个晶体管。对于512MB DRAM,64个TOMI CPU将增加小于5%的芯片尺寸。
TOMI CPU被设计为通过现有的便宜的批量存储器制造工艺(例如,用于DRAM、SRAM和FLASH存储器设备的制造工艺)制造。用于TOMI CPU的晶体管的数量少意味着CPU能够在小面积内被构造,并且能够容易地通过2层金属互连的便宜的半导体制造工艺而不是用于通过8或更多层的金属互连或其它逻辑处理制造大微处理器芯片(例如因特尔奔腾)的昂贵的制造工艺在硅中互连。现代的DRAM和其它商用存储器芯片使用具有较少层(例如,2层)金属互连的较简单且成本较低的半导体制造工艺来获得较低的制造成本、较大的产品产量和较高的产品产值。用于商用存储器设备的半导体制造工艺的特征通常在于低电流泄漏设备工作;而用于构造现代微处理器的工艺致力于高速和高性能特性,而不是晶体管级别的低电流泄漏值。通过用于DRAM和其它存储器设备的相同制造工艺有效地实现的TOMICPU的能力使TOMI CPU能够在嵌入在现有的DRAM芯片(或其它存储器芯片)内,并且具有低成本、高产量的芯片制造工艺的优点。这还提供了通过当前在工业使用中用于DRAM和其它存储器芯片的相同的封装和设备管脚布局(例如,符合存储器设备的JEDEC标准)、制造设施、测试固定设备和测试向量制造TOMI CPU的优点。在反面,将DRAM存储器嵌入到传统微处理器芯片将在相对的方向上工作,这是因为该微处理器芯片是使用具有8或更多层金属互连的昂贵且复杂的逻辑制造工艺制造的并且存储器电路受到由微处理器操作产生的大的电噪声和热量,这就会影响嵌入在处理器芯片中的存储器的类型、大小和功能。这个结果将产生较高的成本、较低的产量、较高的功率消耗、较小的存储器、最终产生较低性能的微处理器。
优选实施方式的另一优点是TOMI CPU足够小(需要很小的功率),从而可在物理上位于DRAM(或其它存储器)电路的附近并且允许CPU访问超宽的内部DRAM数据总线。在现代DRAM中,这种总线是1024、4096或8192位宽(或其整数倍),还通常对应于DRAM设计内的数据块中的一行数据的宽度。(通过比较,因特尔奔腾数据总线是64位,因特尔安腾总线是128位宽。)TOMI CPU的内部高速缓冲存储器的大小被设计为与DRAM行的大小匹配,从而CPU高速缓冲存储器可在单一的DRAM存储器读或写周期内被填充(或清洗)。TOMI CPU使用超宽内部DRAM数据总线作为TOMI CPU的数据总线。TOMI CPU高速缓冲存储器可被设计为对用于有效布局和电路操作的DRAM行和/或列锁存电路的设计进行镜像,包括至TOMI CPU高速缓冲存储器的数据传输。
优选实施方式的又一优点是由于晶体管的数量少并且因为CPU使用超宽内部DRAM数据总线访问存储器而不是不断驱动I/O电路来访问用于数据的片外存储器而由TOMI CPU产生的较低的电噪声。片内CPU高速缓冲存储器允许直接访问用于处理的数据而使访问片外存储器的需要最少。
处理器架构的设计目标是使处理容量和速度最大,而使实现该处理速度所需的功率最小。TOMI CPU架构是具有极小功率消耗的高速处理器。处理器的功率消耗与设计中使用的晶体管的数量直接相关。用于TOMI CPU的较少数量的晶体管将使TOMI CPU的功率消耗最小。简化且有效的指令集也允许TOMI CPU降低其功率消耗。此外,TOMI CPU高速缓存和通过宽的内部DRAM数据总线访问片内存储器将不必不断驱动用于片外存储器访问的I/O电路。以1GHz时钟速度工作的单一的TOMI CPU消耗大约20至25毫瓦的功率。与之相反,因特尔奔腾4处理器在2.93GHz时需要130瓦,因特尔安腾处理器在1.6GHz时需要52瓦,StrongARM处理器在200MHz时需要1瓦,以及IBM Cell处理器在3.2GHz时需要100瓦。众所周知的是,处理器产生的热量直接与处理器所需的功率量有关。极小功率TOMI CPU架构排除了对可在当前的微处理架构中找到的风扇、大热沉和外部冷却机构的需要。同时,小功率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)作为操作数的所有操作都是无条件的。
在可选的实施方式中,用寄存器0(PC)作为目的地的写操作的条件是进位位(C)等于0。如果C=1,则不执行任何操作。如果C=0,则将累加器(ACC)中的值写入PC并且程序控制变为新的PC地址。用寄存器1作为目的地的写操作是没有条件的。累加器(ACC)中的值被写入PC,程序控制变为新的PC地址。
用寄存器0作为源的读操作加载PC的值加上2。在该方式中,循环顶部的地址可被读取和存储,用于随后的使用。在大多数情况中,将循环地址推入堆栈(S)中。用寄存器1作为源的读操作加载由PC寻址的下一全字节所指向的值。在该方式中,可加载32位直接操作数。32位直接操作数必须字对齐,但是LOADACC指令可位于直接在32位直接操作数之前的4字节字中的任意字节位置。在执行读之后,PC讲递增使得其对32位直接操作数之后的第一个字对齐指令进行寻址。
无分支
分支和跳转操作通常是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
LOADACC5ARRAY
ADD,X
LOADACC,(X)
在N字元素数组中编索引
有时,数组将为元素分配N个字的宽度。数组的基地址位于命名为ARRAY的通用寄存器中。在5字宽的数组中访问第N个元素的第一个字:
指令集扩展
本发明的另一实施方式包括如图2所示的七个基本指令的扩展。如图2E所示的指令集扩展有助于进一步优化TOMI处理器的内部操作、软件程序指令和用于TOMI处理器的软件编译器。
SAVELOOP—这个指令将程序计数器的当前值推入堆栈中。Saveloop最有可能在循环结构的顶部处执行。在循环的底部处,所保存的程序计数器值将从堆栈被拷贝且存储到程序计数器中,实现向后跳转至循环的顶部。
SHIFTLOADBYTE—这个指令将ACC向左移位8位,读这个指令之后的8位字节,并且将其置于ACC的最不重要的8位内。在该方式中,可用指令序列加载长直接操作数。例如,加载14位的直接操作数:
LOADI,#14  \\加载14位操作数的最重要的6位
SHIFTLOADBYTE \\将这6位向左移位8个位置并且加载接下来的8位值
CONSTANT#E8  \\8位直接操作数
在ACC中得到的十六进制值是14E8。
LOOP—这个指令将堆栈的顶部拷贝到程序计数器。Loop最有可能在执行Saveloop之后的循环结构的底部处执行,以将程序计数器保存在loop的顶部。当Loop执行时,所保存的程序计数器将从堆栈被拷贝且保存至程序计数器,实现向后跳转至循环的底部。
LOOP_IF—这个指令将堆栈的顶部拷贝至程序计数器。这个指令基于C的值,执行有条件的循环。Loop_if最有可能在执行Saveloop之后的循环结构的底部处执行,以将程序计数器保存在循环的顶部处。当Loop_if执行时,如果C=0,则所保存的程序计数器将从堆栈被拷贝且保存至程序计数器,实现向后跳转至循环的顶部。如果C=1,则程序计数器递增以指向下一个连续的指令。
NOTACC—对ACC的每位进行补码。如果ACC=0,将C设为1。否则,将C设为0。
ROTATELEFT8—将ACC向左旋转8位。在每个旋转步骤处,移出ACC的MSB移入ACC的LSB。
ORSTACK—对ACC和堆栈顶部的值执行逻辑或(OR)。将结果置于ACC内。如果ACC=0,则将C设为1。否则,将C设为0。
ORSTACK+—对ACC和堆栈顶部的值上执行逻辑OR。将值置于ACC内。在逻辑操作之后,递增堆栈指针S。如果ACC=0,则将C设为1。否则,将C设为0。
RIGHTSHIFTACC—将ACC向右移位单一的比特。将ACC的LSB移入C内。
SETMSB—设置ACC的最重要的位。C没有改变。这个指令在执行符号比较时使用。
本地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处理内。然而,可将简单的16位乘以16位的乘法器添加至TOMI CPU(利用小于1000个晶体管)以将附加功能和多功能提供给TOMI CPU架构。
数字信号处理(DSP)操作常常使用深度流水线化的乘法器,这些乘法器在每个周期产生一个结果,即使总的乘法需要许多周期。对于重复相同算法的单处理应用,这样的乘法器架构是最优化的,且可并合并为TOMI处理器的外围处理器,但是如果将其直接合并到TOMI处理的话,则可能会增加复杂性并降低总体性能。图7A显示了利用宽的系统RAM总线组织的额外处理功能的一个实施例。
访问邻近的存储体
存储器芯片中的存储器电路的物理布局设计通常被设计为使得存储器晶体管被布置在大的存储单元存储体内。存储体通常被组织为相等大小的矩形区域并且被置于芯片的两列或多列内。存储器单元在大存储体内的布局可用于加速存储器的读和/或写访问。
在本发明的一个实施方式中,一个或多个TOMI处理器可被置于存储器芯片内的两列存储单元存储体之间。两个存储体的行数据线可被交叉使得利用如图7B所示的逻辑,TOMI处理器可通过使选择A或选择B使能来访问存储体A或存储体B。在这种方式中,通过存储器芯片内的特定TOMI处理器直接可寻址的存储器可被加倍。
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处理器
用于实现和管理多个TOMI处理器的一个技术是将TOMI处理器安装在如图10A所示的双列直插内存模块(DIMM)中。TOMI/DIMM可被包含在由外部存储器控制器和通用CPU构成的系统(例如,个人计算机)中。图10B示出了这种构造。模式寄存器通常可在DRAM、SRAM和FLASH存储器内找到。模式寄存器是一组锁存器,这些锁存器可独立于存储器存取由外部存储器控制器写入。存储器模式寄存器中的位通常用于指定例如同步、刷新控制和输出脉冲长度的参数。
能够在存储器模式寄存器内分配一个或多个位以启用或禁用TOMI CPU。例如,当TOMI CPU被模式寄存器禁用时,包含TOMI CPU的存储器将作为普通的DRAM、SRAM或FLASH存储器起作用。当模式寄存器启用TOMI CPU初始化时,按照图10C所描述的顺序执行。在该实施方式中,单个处理器被确定为主处理器。这个处理器总是在RESET操作之后首先启动。在初始化结束时,主处理器以全速运行并且执行期望的应用程序。当TOMI CPU执行时,DRAM、SRAM或FLASH存储器不能被存取。有时,存储器模式寄存器可由外部存储器控制器控制以暂停TOMI CPU的执行。当TOMI CPU暂停时,DRAM、SRAM或FLASH的内容可被附接至通用CPU的外部存储器控制器读取。在该方式中,结果可被传递至通用CPU,附加的数据或执行结果可被写入DRAM、SRAM或FLASH存储器。
当通用CPU已经完成了DRAM、SRAM或FLASH存储器的任何读或写时,外部存储器控制器将模式寄存器位从HALT写成RUN,TOMI CPU从它们停止处继续执行。图10D示出了DRAM、SRAM或FLASH存储器的通常存储器模式寄存器以及这些寄存器如何被修改以控制TOMI CPU。
调整处理器时钟速度
处理器时钟速度确定处理器功率耗散。TOMI架构通过启用除了将要停止的一个处理器之外全部的处理器来实现低功率耗散。而且,除了主处理器之外的每个处理器的时钟速度都可被调整以利用如图2D所示的逻辑电路优化性能或功率消耗。
TOMI处理器管理的另一实施方式
某些计算机软件算法是递归的。换句话说,该算法的主要功能是调用其自身。被称为“分治法”的一类算法通常使用递归技术实现。分治法适用于数据的搜索和分类、以及某些数学函数。可用多个处理器(例如TOMI架构可用的那些处理器)并行执行这些算法。为了实现这些算法,一个TOMI CPU必须能够将工作传递给另一个TOMICPU并且从那个CPU接收结果。TOMI处理器的另一实施方式允许任一处理器为主处理器并且将任何其它可用的TOMI处理器作为从属处理器。在这个处理器管理的实施方式中支持启动和停止TOMI处理器、在处理器之间通信、和管理独立的和相关的线程。
停止TOMI CPU
TOMI CPU可通过将全1写入其PC中来停止。当TOMI CPU被停止时,其时钟不再运转并且不再消耗功率。任何TOMI CPU可将全1写入其自身的PC内。
启动TOMI CPU
当不是全1的其它值被写入TOMI CPU的PC内时,TOMI CPU可开始执行。当主处理器通过如图10D所示的模式寄存器复位时,主处理器将0值写入其PC内。
独立的处理器线程
当多个线程在单个通用处理器上执行时,这些线程可能非常松散地连接,很少通信。某些线程可永久运行连续且永恒地连续传递结果而不是运行、返回结果和停止。这些线程的实施例可以是网络通信线程或读取鼠标设备的线程。鼠标线程连续运行,并将鼠标位置和点击信息传递至可被轮询的共享存储器区域或者直接出现的回调程序中。
这些独立的线程主要用于简化编程而不是加速执行。类似的线程可在例如TOMI的多处理器系统上执行。结果可被传递至共享的存储器区域。在某些情况下,可通过共享的变量完成通信。
在TOMI架构中,共享的变量可比共享的存储器更有效,这是因为这种变量可避免在存储器RAS周期内将完整的行加载到X_cache或Y_cache的必要性。变量使用的实施例是指向用于监控网络流量的TOMI CPU的接收缓存器的输入指针。当接收到数据时,网络监控CPU递增该变量。数据消耗CPU不时地读取变量并且当足够的数据出现时执行操作以将存储行加载到X_cache或Y_cache。然后,可从高速缓冲存储器读取接收到的网络数据直至由共享变量指示的值。
相关的处理器线程
某些算法(例如,被分类为分治法的那些算法)能够通过同时在几个处理器上执行算法片并且结合结果来实现并行。在这种设计中,单个主处理器将从几个从属处理器请求工作,然后在从属处理器并行执行这些工作时等待。在这种方式中,主处理器依赖于正由从属处理器完成的工作。
当从属处理器的工作完成时,主处理器读取部分结果并且将它们组合成最终的结果。这个功能使TOMI架构能够有效地处理被称为“分治法”的一类算法。多个普通简单的分治法算法中的某些是搜索和分类。
多处理器管理指令集扩展
基本TOMI指令的一系列扩展允许独立和相关的线程管理。这些指令通过使用如图2B所示的可用的NOOP代码中的某些来实现。这些管理扩展指令在图2C中概述。
GETNEXTPROCESSOR—这个指令询问处理器可用性表并且将与下一个可用处理器相关联的数加载至ACC。
SELECTPROCESSOR—这个指令将ACC写入处理器选择寄存器。处理器选择寄存器选择哪个处理器将由TESTDONE和READSHAREDVARIABLE估计。
STARTPROCESSOR—这个指令写入由处理器选择寄存器选择的处理器的PC。这个指令最有可能在主处理器想要启动停止的从属处理器时执行。如果从属处理器的PC为全1,则该从属处理器停止。通过将值写入从属处理器的PC,主处理器使从属处理器开始在写入的PC的位置处运行程序。如果这个操作成功,则ACC包含正被写入所选处理器的PC值。如果这个操作失败,则ACC包含-1。失败操作的最有可能的原因是所选的处理器不可用。
TESTDONE—这个指令测试由处理器选择寄存器选择的处理器的PC,并且如果PC=全1则将调用处理器的C位设为“1”。在这种方式中,可通过如下步骤创建对PC的循环测试:
LOADI,处理器号
SELECTPROCESSOR
LOADACC,LOOPADDRESS
TOP TESTDONE
STOREACC,PC_COND//循环至TOP直到所选处理器的PC=全1而停止
TESTAVAILABLE—这个指令测试用于由处理器选择寄存器选择的处理器的处理器分配表位中的“可用”位,并且如果所选的处理器可用则将调用处理器的C位设为“1”。在这种方式中,可通过如下步骤创建用于测试进一步工作可用性的循环:
LOADI,处理器号
SELECTPROCESSOR
LOADACC,LOOPADDRESS
TOP TESTAVAILABLE
STOREACC,PC_COND//循环至TOP直到所选的处理器可用
SETAVAILABLE—这个指令设置用于由处理器选择寄存器选择的处理器的处理器分配表中的“可用”位。这个指令最有可能由已经请求另一处理器做如图10E所示的工作的一个处理器执行。当工作处理器完成工作时,通过将其PC设为全1而停止。请求处理器周期性地为工作处理器进行TESTDONE。当工作处理器已经完成工作时,请求处理器将通过共享的存储位置或者通过共享的变量读取结果。当结果已经被读取时,工作处理器可用以被再分配给另一任务,请求处理器将使用SETAVAILABLE使其它处理器可请求它做进一步的工作。
READSHAREDVARIABLE—这个指令读取由处理器选择寄存器选择的处理器的共享变量。这个指令最有可能由已经请求另一处理器工作的一个处理器执行。共享的变量可由任意处理器读取以确定分配的工作的进程。作为实施例,工作处理器可被分配以处理正从高速网络接收的数据。共享的变量指示已经被读取的数据的量并对其它处理器可用。每个处理器包含共享变量。共享变量可由任何其它处理器读取,但是共享变量只能由其自身的处理器写入。
STORESHAREDVARIABLE—这个指令将ACC的值写入执行该指令的处理器的共享变量中。共享变量可由任何其它处理器读取并且用于将状态和结果传输至其它处理器。
使用数据就绪锁存器进行处理器间通信
图10F图示了TOMI处理器间通信的一个可能的硬件实现。一个TOMI处理器可通过SELECTPROCESSOR命令建立其自身与另一TOMI处理器之间的连接。这个指令通过共享寄存器、READSHAREDVARIABLE和STORESHAREDVARIABLE命令建立允许选择的和被选择的处理器交换数据的逻辑连接。
图10F的上半部示出了处理器的、将数据发送至由就绪标志寄存器控制的另一处理器的逻辑电路。图10F的下半部示出了处理器的、从由就绪标志寄存器控制的另一处理器接收数据的逻辑电路。
可将共享寄存器的状态读入进行选择或被选择的处理器的C位。在操作中,处理器将数据写入其共享的寄存器内,从而设置相关联的数据就绪标志。连接的处理器读取共享寄存器,直到C位指示相关联的数据就绪标志已经被设置。读操作清除就绪标志,从而处理器能够重复。
仲裁处理器分配
如上所述,TOMI处理器能够将工作委托给其可用性已经通过GETNEXTPROCESSOR确定的另一TOMI处理器。
GETNEXTPROCESSOR确定处理器是否可用。可用的处理器是当前没有执行工作、也没有保持还没有由READSHAREDVARIABLE获取的先前的工作的结果的处理器。
图10G示出了识别可被委托工作的可用处理器的一个硬件实现。图10H示出了示例性处理器仲裁的事件。该过程如下所示:
1.请求处理器执行GETNEXTPROCESSOR指令,将“请求下一个可用的处理器”行推入仲裁逻辑。
2.仲裁逻辑生成与“下一个可用的处理器”行上的TOMI CPU对应的号。
3.请求处理器执行SELECTPROCESSOR指令,将该号存储至请求处理器的PSP(处理器选择寄存器)。
4.然后,请求处理器执行STARTPROCESSOR指令,该指令写由处理器选择寄存器选择的处理器的PC。如果该操作成功,则也将所选择的处理器的号保存至仲裁逻辑以指示所选择的处理器不再能用于被分配做工作。如果该操作失败,则原因可能是所选择的处理器不可用。请求处理器将执行另一GETNEXTPROCESSOR以找到另一可用的处理器。
5.当所选择的处理器执行STORESHAREDVARIABLE以使其结果可用时,通知仲裁逻辑所选择的处理器具有等待被读取的结果。
6.当通过将-1写入所选择的处理器的PC来停止该处理器时,通知仲裁逻辑所选择的处理器可用。
7.当通过READSHAREDVARIABLE获取所选择的处理器的结果时,通知仲裁逻辑已经读取所选择的处理器的结果。
存储器锁定
TOMI处理器通过其高速缓冲存储器对系统存储器进行读和写。一次对一个完全高速缓冲存储的列进行读或写。任何存储器可读取系统存储器的任何部分。单独的处理器可将存储器的列锁定为专用于排它地进行写操作。该锁定机制避免了处理器之间的存储器写冲突。
建议的应用程序
并行操作有效地加速了可分为独立的工作片段用于各处理器的应用程序。一个容易分解的应用程序是机器人视觉的图像处理。图像处理算法包括相关性、均衡、边缘识别以及其它操作。许多操作都是由矩阵处理执行。如图11所示,该算法常常很好地分解。
在图11中,示例性的图像映射显示了24个处理器,其中每个处理器被分配以处理全部图像映射的一个矩形子集中的图像数据。
图12示出了在一个实施方式中如何分配TOMI系统RAM。一块系统RAM保存图像捕捉像素,且另一个块保存处理的结果。
在操作中,协调处理器分配了DMA信道,以每隔一段固定的时间就将图像像素从外部源传送到内部系统RAM。图像捕捉的速度通常是60个图像/秒。
然后,协调处理器通过将待由X寄存器使用的图像映射的地址、待由Y寄存器使用的已处理图像的地址、2的参数计数、以及图像处理算法的地址压入堆栈,而使从属处理器1可用。协调处理器随后类似地通过25使处理器2可用。处理器继续以并行的方式独立执行,直到图像处理算法完成。
当算法完成时,每个处理器在处理器可用性表中设置其相关的已完成标志。该结果由协调处理器处理,该协调处理器对完成进行轮询或对“完成”事件上的中断做出响应。
图13A和13B示出了用片内系统存储器实现的64个TOMI处理器的单块阵列的示例性平面布置图。该平面布置图可随着电路设计、存储器电路的布局和整体芯片架构而变化。
TOMI外围控制芯片(TOMIPCC)
TOMI架构的一个实施方式将一个或多个TOMI CPU嵌入到标准的DRAM芯片中。所形成的芯片封装在具有标准的DRAM引出线的标准DRAM封装。封装的零件可被安装在标准DRAM DIMM(双列直插内存模块)上。
在操作中,这个实施方式以类似于标准DRAM的方式,除了嵌入的TOMI CPU是通过DRAM模式寄存器而启用。当TOMI CPU被启用并且工作时,其执行由外部处理器加载至DRAM的程序。通过共享DRAM将TOMI CPU的计算结果提供给外部处理器。
在某些应用中,通过PC提供外部处理器。在另一应用中,可提供专用处理器以执行用于TOMI DRAM芯片的下列功能。图14A示出了这种处理器,TOMI外围控制芯片(TOMIPCC),的一个实施方式。该处理器的功能为:
1.提供将数据和指令从相关联的永久存储设备传输至TOMI芯片DRAM中使用的机制。在许多系统中,永久存储设备可以是闪存RAM。
2.在TOMI芯片与真实的设备(例如,显示器和网络)之间提供输入/输出接口。
3.执行协调TOMI CPU操作所必需的一小组操作系统功能。
图14B示出了使用TOMIPCC的非常小的系统。蜂窝式便携无线电话语言翻译器的实施例仅由三个芯片构成:闪存RAM、TOMIPCC和单个的TOMI CPU/DRAM。在这个最小应用中,单个的TOMICPU/DRAM通过由D0-D7指示的标准8位DRAM I/O通信。
闪存RAM包含语音和语法的字典,该字典定义了口头语和用法以将口头语从一个翻译为另一个。
TOMIPCC接收模拟口头语(或其等同),将其转换为数字表示,并且将其呈现给TOMI DRAM用于解释和翻译。所产生的数字化的言语将从TOMI DRAM传递回TOMIPCC,被转换为模拟语音表示,然后输出给蜂窝式便携无线电话用户。
图14C示出了使用TOMIPCC的非常大的系统。这种系统的实施例是以存储器为中心的数据库应用(或MCDB)。MCDB系统工作在高速存储器内的整个数据库上,而不是工作在非常慢的磁盘或存储设备中的存储器分页块。通过在与以存储器为中心的数据库位于相同片上的TOMI CPU上执行的所谓的分治算法的使用,TOMI架构能够进行快速搜索和分类。
这种系统可通过合并了多个TOMI CPU芯片的TOMI DIMM(双列直插内存模块)构造。标准240针DIMM的数据通路是64位。因此,以存储器为中心的数据库应用中的TOMIPCC将驱动由D0-D63指示的64位宽的数据库。
可理解,仅示例性地通过实施例并参照附图描述了本发明,本发明不限于本文描述的特定实施方式。本领域的技术人员将认识到,在不背离本发明的范围或精神的情况下,可对本发明和本文描述的示例性实施方式进行改进和修改。

Claims (3)

1.一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:
在至少一个芯片上将少于16层的金属互连;
将至少一个处理器嵌入所述至少一个芯片中;以及
将所述至少一个芯片安装在双列直插内存模块上。
2.一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:
在至少一个芯片上将少于8层的金属互连;
将至少一个处理器嵌入所述至少一个芯片中;以及
将所述至少一个芯片安装在双列直插内存模块上。
3.一种通过半导体制造工艺制备的线程优化多处理器,所述半导体制造工艺通过以下步骤执行:
在至少一个芯片上将少于4层的金属互连;
将至少一个处理器嵌入所述至少一个芯片中;以及
将所述至少一个芯片安装在双列直插内存模块上。
CN201410827036.7A 2008-06-26 2008-06-27 线程优化的多处理器架构 Pending CN104536723A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/147,332 US8984256B2 (en) 2006-02-03 2008-06-26 Thread optimized multiprocessor architecture
US12/147,332 2008-06-26

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200880014972.9A Division CN101796484B (zh) 2008-06-26 2008-06-27 线程优化的多处理器架构

Publications (1)

Publication Number Publication Date
CN104536723A true CN104536723A (zh) 2015-04-22

Family

ID=41444820

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200880014972.9A Active CN101796484B (zh) 2008-06-26 2008-06-27 线程优化的多处理器架构
CN201410827036.7A Pending CN104536723A (zh) 2008-06-26 2008-06-27 线程优化的多处理器架构

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN200880014972.9A Active CN101796484B (zh) 2008-06-26 2008-06-27 线程优化的多处理器架构

Country Status (10)

Country Link
US (2) US8984256B2 (zh)
EP (1) EP2288988A4 (zh)
JP (1) JP2010532905A (zh)
KR (1) KR101121606B1 (zh)
CN (2) CN101796484B (zh)
AU (1) AU2008355072C1 (zh)
BR (1) BRPI0811497A2 (zh)
CA (1) CA2684753A1 (zh)
RU (1) RU2450339C2 (zh)
WO (1) WO2009157943A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109863477A (zh) * 2016-10-25 2019-06-07 威斯康星校友研究基金会 具有本地化存储器的矩阵处理器

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
ATE536585T1 (de) 2006-02-03 2011-12-15 Russell H Fish Iii Gewindeoptimierte multiprozessor-architektur
US8209597B2 (en) * 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US8612687B2 (en) 2010-05-26 2013-12-17 International Business Machines Corporation Latency-tolerant 3D on-chip memory organization
US20120151232A1 (en) * 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
KR101946455B1 (ko) * 2013-03-14 2019-02-11 삼성전자주식회사 시스템 온-칩 및 이의 동작 방법
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
US10521387B2 (en) * 2014-02-07 2019-12-31 Toshiba Memory Corporation NAND switch
US9870401B2 (en) * 2014-04-17 2018-01-16 Wisoncsin Alumni Research Foundation Database system with highly denormalized database structure
RU2579899C1 (ru) * 2014-09-30 2016-04-10 Общество с ограниченной ответственностью "Аби Девелопмент" Обработка документа с использованием нескольких потоков обработки
US20160147667A1 (en) * 2014-11-24 2016-05-26 Samsung Electronics Co., Ltd. Address translation in memory
WO2016099318A2 (ru) * 2014-12-19 2016-06-23 Сергей Анатольевич ГОРИШНИЙ Система и способ управления функционально связанными данными
CN104598319B (zh) * 2015-01-13 2017-06-30 浪潮电子信息产业股份有限公司 一种实现应用性能优化的节点分配方法
RU2612569C2 (ru) * 2015-01-27 2017-03-09 Акционерное общество "Научно-исследовательский институт Авиационного оборудования" Способ автоматического управления избыточностью неоднородной вычислительной системы и устройство для его реализации
US9959208B2 (en) 2015-06-02 2018-05-01 Goodrich Corporation Parallel caching architecture and methods for block-based data processing
CN105808256B (zh) * 2016-03-08 2017-06-23 武汉斗鱼网络科技有限公司 一种构造合法堆栈返回值绕过函数调用检测的方法与系统
RU2644535C2 (ru) * 2016-06-01 2018-02-12 Владимир Викторович Ермишин Архитектура параллельной вычислительной системы
DE102016224747A1 (de) * 2016-12-12 2018-06-14 Robert Bosch Gmbh Steuergerät
US10459771B2 (en) 2017-02-22 2019-10-29 Red Hat Israel, Ltd. Lightweight thread synchronization using shared memory state
WO2019025864A2 (en) 2017-07-30 2019-02-07 Sity Elad ARCHITECTURE OF DISTRIBUTED PROCESSORS BASED ON MEMORIES
RU2665224C1 (ru) * 2017-11-09 2018-08-28 Российская Федерация, от имени которой выступает Государственная корпорация по космической деятельности "РОСКОСМОС" Способ динамического контроля конфликтных ситуаций в сложных технических системах со средой облачных вычислений
US10613955B2 (en) * 2017-12-28 2020-04-07 Intel Corporation Platform debug and testing with secured hardware
US11030148B2 (en) * 2018-04-04 2021-06-08 Lawrence Livermore National Security, Llc Massively parallel hierarchical control system and method
CN111382091A (zh) * 2018-12-30 2020-07-07 德克萨斯仪器股份有限公司 用于低周期存储器访问和附加功能的宽边随机访问存储器
JP7107275B2 (ja) * 2019-04-25 2022-07-27 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置
CN111209042B (zh) * 2020-01-06 2022-08-26 北京字节跳动网络技术有限公司 一种建立函数栈的方法、装置、介质和电子设备
KR20210156058A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 인-메모리 프로세싱을 수행하는 메모리 디바이스
CN117555599B (zh) * 2024-01-10 2024-04-05 睿思芯科(成都)科技有限公司 加快关键数据访问速度的芯片设计方法、系统及相关设备

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US553890A (en) * 1896-02-04 zeidlee
US3990054A (en) * 1974-11-05 1976-11-02 Honeywell Inc. Microprogram organization techniques
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4641238A (en) * 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
EP0715251B1 (en) * 1994-11-29 2000-07-26 International Business Machines Corporation One cycle processor for real time processing
US6524019B1 (en) * 1995-03-27 2003-02-25 Nec Corporation Inter-cluster data transfer system and data transfer method
JP3075184B2 (ja) * 1996-08-02 2000-08-07 日本電気株式会社 演算処理機能付主記憶システム及びその制御方法
JPH1111021A (ja) 1997-06-23 1999-01-19 Nippon Kayaku Co Ltd 感熱記録材料
JP3099290B2 (ja) * 1997-10-03 2000-10-16 啓介 進藤 マルチスレッドプログラムを使用する情報処理装置
US7373440B2 (en) * 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
NO308149B1 (no) * 1998-06-02 2000-07-31 Thin Film Electronics Asa Skalerbar, integrert databehandlingsinnretning
JP3156670B2 (ja) * 1998-06-26 2001-04-16 日本電気株式会社 演算処理機能付パケット型メモリシステムおよびその制御方法
FI117523B (fi) * 1998-10-07 2006-11-15 Nokia Corp Menetelmä tehonkulutuksen säätämiseksi
JP2000207248A (ja) * 1999-01-14 2000-07-28 Toshiba Corp 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
JP2002108691A (ja) * 2000-09-29 2002-04-12 Mitsubishi Electric Corp 半導体記憶装置および半導体記憶装置の制御方法
US7043416B1 (en) * 2001-07-27 2006-05-09 Lsi Logic Corporation System and method for state restoration in a diagnostic module for a high-speed microprocessor
US7064579B2 (en) * 2002-07-08 2006-06-20 Viciciv Technology Alterable application specific integrated circuit (ASIC)
US6803786B1 (en) * 2003-03-11 2004-10-12 Xilinx, Inc. Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7676646B2 (en) 2005-03-02 2010-03-09 Cisco Technology, Inc. Packet processor with wide register set architecture
US20070028010A1 (en) 2005-08-01 2007-02-01 Texas Instruments, Inc. Peripheral device utilization monitoring
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
ATE536585T1 (de) * 2006-02-03 2011-12-15 Russell H Fish Iii Gewindeoptimierte multiprozessor-architektur
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
TW200737188A (en) * 2006-03-27 2007-10-01 Memocom Corp Complex memory chip
EP1855181A2 (en) * 2006-05-10 2007-11-14 Marvell World Trade Ltd. System with high power and low power processors and thread transfer
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US7917788B2 (en) * 2006-11-01 2011-03-29 Freescale Semiconductor, Inc. SOC with low power and performance modes
US20120151232A1 (en) 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109863477A (zh) * 2016-10-25 2019-06-07 威斯康星校友研究基金会 具有本地化存储器的矩阵处理器

Also Published As

Publication number Publication date
US8984256B2 (en) 2015-03-17
RU2450339C2 (ru) 2012-05-10
EP2288988A1 (en) 2011-03-02
EP2288988A4 (en) 2012-06-27
JP2010532905A (ja) 2010-10-14
KR20100032359A (ko) 2010-03-25
KR101121606B1 (ko) 2012-02-28
US20150234777A1 (en) 2015-08-20
WO2009157943A1 (en) 2009-12-30
CN101796484B (zh) 2015-02-04
US20080320277A1 (en) 2008-12-25
AU2008355072B2 (en) 2012-05-31
AU2008355072A1 (en) 2010-01-14
US9934196B2 (en) 2018-04-03
AU2008355072C1 (en) 2012-11-29
BRPI0811497A2 (pt) 2014-11-18
CA2684753A1 (en) 2009-12-28
CN101796484A (zh) 2010-08-04
RU2009145519A (ru) 2011-06-20

Similar Documents

Publication Publication Date Title
CN101796484B (zh) 线程优化的多处理器架构
CN101395578B (zh) 多处理器系统和线程级并行处理方法
CN108009119B (zh) 处理器和控制工作流的方法
US20140351563A1 (en) Advanced processor architecture
CN101739235A (zh) 将32位dsp与通用risc cpu无缝混链的处理器装置
US20100199068A1 (en) Reconfigurable processor for reduced power consumption and method thereof
US8549466B2 (en) Tiered register allocation
WO2022139666A1 (en) A netwok on chip processing system
Elshimy et al. A Near-Memory Dynamically Programmable Many-Core Overlay
Rodriguez Hardware
CN117597691A (zh) 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器
Sanchez-Elez et al. A Coarse-Grain Dynamically Reconfigurable System and Compilation Framework

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150422