CN1107983A - 一种数据处理系统及其方法 - Google Patents

一种数据处理系统及其方法 Download PDF

Info

Publication number
CN1107983A
CN1107983A CN94103297A CN94103297A CN1107983A CN 1107983 A CN1107983 A CN 1107983A CN 94103297 A CN94103297 A CN 94103297A CN 94103297 A CN94103297 A CN 94103297A CN 1107983 A CN1107983 A CN 1107983A
Authority
CN
China
Prior art keywords
value
group
data
instruction
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN94103297A
Other languages
English (en)
Other versions
CN1080906C (zh
Inventor
迈克尔·G·盖拉普
罗德尼·L·高克
小罗伯特·W·西顿
特瑞·G·拉威尔
斯蒂芬·G·奥斯勃恩
托马斯·J·托马金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of CN1107983A publication Critical patent/CN1107983A/zh
Application granted granted Critical
Publication of CN1080906C publication Critical patent/CN1080906C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • 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
    • 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
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30101Special purpose 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/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Abstract

一种包括一个或多个数据处理机(10)的数据处 理系统(55)及其方法。数据处理机能够完成矢量运 算以及标量运算。数据处理机(10)利用一个单独微 定序器(22),既执行矢量指令也执行标量指令。数据 处理机(10)还具有能够存储矢量操作码和标量操作 码的存储器电路(14)。

Description

本发明一般涉及数据处理,更具体地涉及一种数据处理系统及其方法。
在数据处理中模糊逻辑、神经网络和其它并行、阵列导向的应用渐渐变得非常普遍和重要。当今的大部分数字数据处理系统并没有特意考虑按模糊逻辑、神经网络和其它并行、阵列导向的应用来设计。因此,数字数据处理系统可以得到明显的性能和价格好处假使其设计能特别地满足模糊逻辑、神经网络和其它并行、阵列的应用要求。
饱和保护
某些算术运算,如加法和减法,可能在正方向或负方向中的一个上产生溢出。“溢出”指的是一种状况,即算术运算得出的结果值超出了目的地寄存器所能存储的最大值(如试图在一个8位寄存器里存储一个%100000001的结果)。“饱和”或“饱和保护”指的是一种处理溢出状况的方法,在这种方法里寄存器中的值用一个上限值或下限值来代替,例如以$FF作为一个8位的无符号上限值。一般地,有两种常用的处理溢出的方法。第一种,该结果可允许被卷转进位,即$01可被存入到目的地寄存器里(非饱和法)。第二种,该结果可用一个上限值或一个下限值来替代(饱和法)。
数据处理机中的一个常见问题是需要进行更宽的数据值的算术计算,即其具有的位数要比可得到的寄存器和可得到的算术逻辑部件(ALU)电路所能容纳的位数更多。例如,对一个数据处理机要求其能用一个16位的ALU进行两个32位数据的相加并非不常见。需要一种方法以有效地支持扩充长度运算的饱和保护。
数据处理机间的通信
对于模糊逻辑、神经网络和其它并行、阵列导向的应用,使用一个多维的集成电路阵列是值得采用的。这样,在模糊逻辑、神经网络和其它并行、阵列导向的应用中集成电路之间的通信往往非常重要。
在一些现有技术的数据处理系统中,比如以超算机(transputer)为例,集成电路间的通信是通过集成电路内指令的执行来交互控制的。从而,为把数据传送给其它集成电路需要一条或更多的指令,而从其它集成电路接收数据也需要一条或更多的指令。在一些其它的现有技术的数据处理系统中,诸如电话交换网络和某些计算机网络,被传送的数据本身包含有关哪些集成电路是该数据的指定接受器的路由选择信息。
模糊逻辑、神经网络和其它并行、阵列导向的应用的目标是开发一种集成电路通信技术和开发一种允许集成电路间通用数据传送能力的集成电路管脚结构,此外这种管脚结构还包括:(1)不再在集成电路阵列之外需要大量的电路;(2)不再为数据传送能力需要大量的软件开销;和(2)不再需要大量的软件开销用于数据传送能力;和(3)只需要尽可能少的专用集成电路管脚。
数据处理机中的扩充长度运算
数据处理机中的一个常见问题是需要进行更宽的数据值的算术计算,即数据值具有的位数要比可以得到的算术逻辑部件(ALU)电路在一个ALU周期内所能容纳的位数更多。例如,对一个数据处理机要求其使用一个16位的ALU进行两个32位数据的相加并非不常见。现有技术的数据处理机通常通过提供一个单“进位”位或“扩充”位和通过提供两种类型的计算指令来确定该进位位是否被用来作为该指令的一个输入(如,“加法”和“带进位的加法”、“减法”和“带借位的减法”、“右移”和“带扩充的右移”等)来支持这种扩充算术运算的。这种传统的方法对于有限的运算指令系统是足够的,但是不能有效支持其它的扩充长度运算。因此提供一种方法来有效支持一套广博的扩充长度运算指令系统是有必要的。
数据处理机中的数据位移运算
采用矢量的数据处理机的一个常见的问题是需要计算一个矢量的各元素之和或总和。在一些应用中,仅需要一个标量结果(即所有矢量元素的总和)。在其它应用中,必须计算一个累加和矢量。把矢量元素合并成单个总集合值或合并成一个累加的部分集合矢量的要求不只限于加法。某些应用也要求其它的聚合运算,如最小值和最大值。所以,提供一种更有效的把矢量元素合并成单个总集合值的技术和机制是有必要的。
指令的多级条件执行
在所有类型的数据处理机里指令的条件执行是一个非常有用的特性。在许多数据处理机中,条件转移指令已被用来实现指令的条件执行。但是,在SIMD(单指令多数据)处理机中,仅使用允许位或屏蔽位对复杂的判定树是不适合的,这些复杂的判定树要求使用一系列的复杂逻辑运算来计算允许位或屏蔽位的下一个状态。所以提供一种允许以一种更直截了当的方式来实现指令的条件执行的方案是有必要的。
数据处理机体系结构
SISD(单指令单数据)处理机对完成某些类型的数据处理任务是最有用的。SIMD(单指令多数据)处理机对完成另外一些类型的数据处理任务是最有用的。某些应用,诸如模糊逻辑、神经网络和其它并行、阵列导向的应用,趋向于利用一些最好由SISD处理机完成的数据处理任务,以及一些最好由SIMD处理机完成的数据处理任务。
把输入数据装入到数据处理机中
模糊逻辑、神经网络和其它并行、阵列导向的应用最好采用多维的集成电路阵列,这种阵列要求传送相当大量的数据。因此,集成电路使用的选择和存储输入数据的技术在模糊逻辑、神经网络和其它并行、阵列导向的应用中是相当重要的。集成电路使用的选择和存储输入数据的技术必须是灵活的,以便允许根据数据处理系统的特定要求以多种模式选择与存储输入数据。
在有关现有技术中,DMA(直接存储器存取)是这样一种技术,即一个输入/输出装置通过一个地址和数据总线直接去访问存储器,因此该输入/输出装置不需要依靠处理机去访问存储器。同时,在有关现有技术中,不同类型的处理机根据采用不同编址方式的指令内部地生成地址。
数据处理机的拖延(stalling)技术和机制
应用于模糊逻辑、神经网络和其它并行、阵列导向的应用的一块集成电路可能在该集成电路正从外部源接收数据的同时执行指令。这就产生了数据连贯性问题。集成电路必须具有一种机制来确定在执行一条指令时所使用数据的有效性。使用无效数据通常是一个灾难性问题,在大多数数据处理系统中是不能接受的。
在有关的现有技术中,采用了多种技术来确保数据的连贯性。存在许多软件数据传送或同步技术,如信号标志(semaphores)。此外,还有许多硬件数据传送技术,如数据界面中的状态位。不幸的是,对于硬件状态位,可能需要一个轮询或中断软件例程,或者可能需要一种排队方案。
对模糊逻辑、神经网络和其它并行、阵列导向的应用,需要一种数据连贯性技术和机制,它能够保证矢量和标量两种指令的数据相关性,并且只需要最少的软件开销,而且只用最少的电路就能实现。
最大值和最小值的确定
模糊逻辑、神经网络和其它并行、阵列导向的应用所需要的一种常见的运算是用以确定在包括两个或两个以上的一组数据值中那个或那些数据值等于最大值的比较运算。类似地,模糊逻辑、神经网络和其它面向并行、阵列导向的应用所需要的一种常见的运算是用以确定在包括两个或两个以上的一组数据值中那个或那些数据值等于最小值的比较运算。
希望能够支持带符号的(2的补码)和无符号的两种数。还希望能够支持扩充长度(多字节)操作数。因为在模糊逻辑、神经网络和其它并行、阵列导向的应用中需要使用一个多维的集成电路阵列,这就附加地要求能够越过集成电路的边界进行这种最大和最小的比较。
利用现有技术的软件指令也可以实现一种能完成确定最大值或最小值的软件例程。但是,这种软件例程将包含一长串指令并且执行起来可能需要长的时间。另外,把软件实现方法进行扩展以穿过运行不同软件程序的集成电路的边界也是困难的。
上述要求可由本发明实现。相应地,以一种格式提供了一种集成电路及其方法。该集成电路包括一种可执行矢量指令的矢量机。该集成电路还包括一种可执行标量指令的标量机。一个定序器控制矢量机中的矢量指令和标量机中标量指令两者的执行。该定序器和矢量机相连用以传送矢量控制信息。该定序器和标量机相连用以传送标量控制信息。该集成电路还包括用来存储一个矢量操作数和一个标量操作数的一个共享存储器电路。该共享存储器电路和矢量机相连用以传递矢量操作数。该共享存储器和标量机相连用以传递标量操作数。
通过下面参照附图的详细描述可对这些和其它特性、及优点得到更清晰的了解。
附图的简要描述
图2-1-1给出42×35前馈网络的传统表示。
图2-1-2给出42×35前馈网络的逻辑表示。
图2-1-3给出42×35前馈网络的实体表示。
图2-2-1给出102×35前馈网络的传统表示。
图2-2-2给出102×35前馈网络的逻辑表示。
图2-2-3给出102×35前馈网络的实体表示。
图2-3-1给出42×69前馈网络的传统表示。
图2-3-2给出42×69前馈网络的逻辑表示。
图2-3-3给出42×69前馈网络的实体表示。
图2-4-1给出73×69前馈网络的传统表示。
图2-4-2给出73×69前馈网络的逻辑表示。
图2-4-3给出73×69前馈网络的实体表示。
图2-5-1给出63×20×8前馈网络的传统表示。
图2-5-2给出63×20×8前馈网络的逻辑表示。
图2-5-3给出63×20×8前馈网络的实体表示。
图2-6示出联合机子系统。
图2-7示出联合机如何地分配输入数据矢量。
图2-8示出多个联合机功能信号组。
图2-9示出运用ECO和WCI控制信号的一个流写入操作。
图2-10示出联合机的引脚分配。
图2-11示出联合机的标识寄存器。
图2-12示出算术控制寄存器。
图2-13示出异常状态寄存器。
图2-14示出异常屏蔽寄存器。
图2-15示出处理部件选择寄存器。
图2-16示出端口控制寄存器。
图2-17示出Run(运行)方式输入变址(FM=0)。
图2-18示出Run方式输入标记(FM=1)。
图2-19示出联合机端口监视寄存器。
图2-20表示一批端口错误例子。
图2-21示出通用端口寄存器。
图2-22示出处理部件选择寄存器。
图2-23示出IDR指针寄存器。
图2-24示出IDR计数寄存器。
图2-25示出IDR位置屏蔽寄存器。
图2-26示出IDR初始偏移寄存器。
图2-27示出主机流选择寄存器。
图2-28示出主机流偏移寄存器。
图2-29为例1:流写入期间的简单数据分布。
图2-30为例2:数据的再排序和重叠分布。
图2-31表示一个北一南保持寄存器。
图2-32表示一个北一南保持寄存器。
图2-33表示1号偏移地址寄存器。
图2-34表示1号深度控制寄存器。
图2-35表示2号偏移地址寄存器。
图2-36表示2号深度控制寄存器。
图2-37表示1号中断状态寄存器。
图2-38表示1号中断屏蔽寄存器。
图2-39表示2号中断状态寄存器。
图2-40表示2号中断屏蔽寄存器。
图2-41表示一微定序器控制寄存器。
图2-42表示FLS,栈,FSLE和STKF。
图2-43表示一微定序器状态寄存器。
图2-44表示一标量进程控制寄存器。
图2-45表示一指令寄存器。
图2-46表示一多个指令超高速缓冲存储器线路有效寄存器。
图2-47表示程序计数器。
图2-48表示程序计数器界限寄存器。
图2-49表示指令高速缓冲存储器标记#0。
图2-50表示一指令高速缓冲存储器标记#1。
图2-51表示一指令高速缓冲存储器标记#2。
图2-52表示一指令高速缓冲存储器标记#3。
图2-53表示一个栈指针。
图2-54表示一一级栈。
图2-55表示一重复开始寄存器。
图2-56表示一重复结束寄存器。
图2-57表示一重复计数寄存器。
图2-58表示多个全局数据寄存器。
图2-59表示多个全局指针寄存器。
图2-60为一异常指针表。
图2-61为异常处理流程图。
图2-62表示多个输入数据寄存器。
图2-63表示多个矢量数据寄存器(V0-V7)。
图2-64表示一矢量进程控制寄存器。
图2-65表示多个输入标记寄存器。
图2-65-1表示一指令高速缓冲存储器。
图2-66表示一系数存储器阵列。
图2-67表示一微代码编程器的模型。
图2-68表示多个矢量机寄存器。
图2-68-1表示多个矢量机寄存器。
图2-69表示多个微定序器寄存器。
图2-70表示多个标量机寄存器。
图2-71表示多个联合机控制寄存器。
图2-72表示IDR的概念性实现。
图2-73为drotmov操作的一个例子。
图2-74表示一vmin和vmax指令。
图2-75为VPCR  VT和VH位状态变换图。
图2-76表示一repeat循环结束时的bra/jmpri/jmpmi。
图2-77表示一repeat循环结束时的bsr/jsrri/jsrmi。
图2-78说明一个repeate循环本体。
图2-79说明一个repeate循环结束时的一个矢量条件。
图2-80说明一个repeate循环结束时的一个矢量条件。
图3-1表示一典型的神经网络布局。
图3-2表示一图3-1中用于隐层(h)的联合机实现。
图3-3表示一输入层到隐层的映象。
图3-4为微定序器的简化图。
图3-5表示一单周期指令流水线定时。
图3-6说明双周期指令定时图。
图3-7为第二级拖延的实例。
图3-8说明CMA和MMA等效存储器映象。
图3-9为直接和反相的CMA存取的图象表示。
图3-10说明例2的CMA布局。
图3-11表示IC、CMA和页面。
图3-12表示程序计数器和高速缓冲存储器标记。
图3-13说明例3的CMA布局。
图3-14说明例4的CMA布局。
图3-15说明例5的CMA布局。
图3-16说明例6的CMA布局。
图3-17说明例7的CMA布局。
图3-18说明例8的CMA布局。
图3-19说明4个端口的主机访问功能。
图3-20说明一维流运算。
图3-21说明2维流运算。
图3-22为输入数据流的一个例子。
图3-23为运用输入标记的一个例子。
图3-24说明主机存储器映象。
图3-25说明联合机的内部构造。
图3-26说明联合机的宏流程。
图3-27说明输入数据寄存器和相关的有效位。
图3-28为联合机独立填充然后计算的流程图。
图3-29为联合机在填充时独立计算的流程图。
图3-30表示一个主机、联合机和联合机的交互作用。
图3-31说明微代码指令流。
图3-32说明例1中的数据移动。
图3-33说明例2中的数据移动。
图3-34说明例3中的数据移动。
图3-35说明例4中的数据移动。
图3-36说明例5中的数据移动。
图3-37为积之和传播例程。
图3-38说明多循环例程。
图3-39为多联合机信号标志传送的示例性联合机例程。
图3-40表示联合机的端口开关和抽头结构。
图3-41表示联合机的环形配置。
图3-42为联合机环形配置的例子。
图3-43示出一个联合机组的二维阵列。
图4-1示出一个联合机组的二维阵列。
图4-2说明主机随机存取读写定时。
图4-3说明主机随机存取地址传送定时。
图4-4说明主机随机存取地址/数据传送定时。
图4-5表示了带有早期终止的主机随机存取地址/数据传送。
图4-6说明主机流式存取读定时。
图4-7说明主机流式写访问。
图4-8说明从2号设备进行的Run方式写操作。
图4-9说明从具有待用的PE的设备#2进行的Run方式写操作。
图4-10说明联合机的写操作碰撞定时图。
图4-11说明联合机done到BUSY的输出定时图。
图4-12说明联合机R/S到BUSY的输出定时图。
图4-13说明联合机的带有Run/Stop干预的写定时图。
图4-14说明中断定时图。
图4-15说明复位定时。
图4-16说明IEEE1149.1端口定时图。
图5-1-1表示代表一个利用一饱和指令的例子。
图5-1-2是饱和指令的流程图。
图5-2-1和图5-2-2一起表示4个数据处理机的方框图。
图5-3为Stop操作方式下的数据处理机的方框图。
图5-4为Run操作方式下的数据处理机的方框图。
图5-5为Stop操作方式下的和在随机存取方式下的数据处理机的方框图。
图5-6为Stop操作方式下和在流存取方式下的数据处理机的方块图。
图5-7为在Run操作方式下数据处理机的方框图。
图5-8是表示一个执行一系列加法指令例子的示意图。
图5-9为移位指令的流程图。
图5-10为比较指令的流程图。
图5-11为算术运算指令的流程图。
图5-12为表示现有技术中矢量聚集方法的原理图。
图5-13为按照本发明的一个实施例的聚集方法的示意图。
图5-14为几个处理部件中的一部分的方框图。
图5-15为几个处理部件中的一部分的方框图。
图5-16为几个处理部件中的一部分的方框图。
图5-17为跳越指令的流程图。
图5-18-1和图5-18-2为重复指令的流程图。
图5-19为代表一个变址填充方式例子的图。
图5-20为代表一个标记填充方式例子的图。
图5-21为数据处理机的部分方框图。
图5-22-1和图5-22-2是包含有拖延的数据连贯性技术的流程图。
图5-23为一个采用包含有拖延的数据连贯性的技术的例子的方框图。
图5-24为一个采用包含拖延顿的数据连贯性的技术的例子的方框图。
图5-25为一个采用含有拖延的数据连贯性的技术的例子的方框图。
图5-26为数据处理机的部分方框图。
图5-27和图5-28以表格形式给出极大值确定的一个例子。
图5-29为数据处理系统的部分方框图。
图5-30-1和图5-30-2为比较指令的流程图。
图5-31为一个采用一系列比较指令的例子的图。
图5-32为一个采用一系列比较指令的例子的图。
图5-33为数据处理系统一部分的方框图。
最佳实施例的详细说明
目录
第一节
前言
1.1  关键特征
1.2  联合机体系结构的目标
1.3  约定
第二节
功能说明
2.1  联合机系统概述
2.1.1  总论
2.1.2  映象
2.1.3  一般的数据流
2.1.4  数据流
2.1.5  初始化
2.1.6  输入数据
2.1.7  部分神经腱结果计算
2.1.8  输出数据
2.2  联合机信号说明
2.2.1  联合机引出脚
2.2.2  联合机Run/Stop(运行/停止)操作方式
2.2.3
端口信号
北数据端口(ND[7∶0])
北控制输出(NCO)
北控制输入(NCI)
南数据端口(SD[7∶0])
南控制输出(SCO)
南控制输入(SCI)
东数据端口(ED[7∶0])
东控制输出(ECO)
东控制输入(ECI)
西数据端口(WD[7∶0])
西控制输出(WCO)
西控制输入(WCI)
2.2.4
主机存取控制线
读/写控制(R/W)
允许数据(EN)
存取类型(OP)
2.2.5
系统配合线
Run/stop(R/S)
忙(BUSY)
2.2.6
行和列信号
行信号(ROW)
列信号(COL)
2.2.7
其它信号
系统总线时钟(CLK)
系统复位(RESET)
中断(INTR)
通用端口I/O(PA[1∶0]
处理机状态(PSTAT[2∶0])
2.2.8
测试信号
测试时钟(TCK)
测试数据输入(TDI)
测试数据输出(TDO)
测试方式选择(TMS)
测试复位(TRST)
2.2.9  直流电气特征
2.2.10  联合机引出脚
2.3  联合机主机可访问寄存器
2.3.1  联合机标识寄存器(AIR)
2.3.2  算术控制寄存器(ACR)
2.3.3  异常状态寄存器(ESR)
2.3.4  异常屏蔽寄存器(EMR)
2.3.5  处理部件选择寄存器(PESR)
2.3.6  端口控制寄存器(PCR)
2.3.7  联合机端口监视寄存器(APMR)
2.3.8  通用端口寄存器(GPPR)
2.3.9  通用方向寄存器(GPOR)
2.3.10  IDR指针寄存器(IPR)
2.3.11  IDR计数寄存器(ICR)
2.3.12  IDR位置屏蔽寄存器(ILMR)
2.3.13  IDR初始偏移寄存器(IOR)
2.3.14  主机流选择寄存器(HSSR)
2.3.15  主机流偏移寄存器(HSOR)
2.3.16  北-南保持寄存器(NSHR)
2.3.17  西-东保持寄存器(EWHR)
2.3.18  1号偏移地址寄存器(OAR1)
2.3.19  1号深度控制寄存器(DCR1)
2.3.20  2号偏移地址寄存器(OAR2)
2.3.21  2号深度控制存器(DCR2)
2.3.22  1号中断状态寄存器(ISR1)
2.3.23  1号中断屏蔽寄存器(IMR1)
2.3.24  2号中断状态寄存器(IMR2)
2.3.25  2号中断屏蔽寄存器(IMR2)
2.3.26  微定序器控制寄存器(MCR)
2.3.27  微定序器状态寄存器(MSR)
2.3.28  标量进程控制寄存器(SPCR)
2.3.29  指令寄存器(IR)
2.3.30  指令高速缓冲存储器线路有效寄存器(ICVR)
2.3.31  程序计数器(PC)
2.3.32  程序计数器限寄存器(PBR)
2.3.33  指令高缓冲存储器标记#0(ICTO)
2.3.34  指令高速缓存储器标记#1(ICT1)
2.3.35  指令高速缓冲存器标记#2(ICT2)
2.3.36  指令高速缓冲存储器标记#3(ICT3)
2.3.37  栈指针(SP)
2.3.38  一级栈(FLS)
2.3.39  重复开始寄存器(RBR)
2.3.40  重复结束寄存器(RER)
2.3.41  重复计数寄存器(RCR)
2.3.42  全局数据寄存器(G[0]-G[7])
2.3.43  全局指针寄存器(P[0]-P[7])
2.3.44  异常指针表
2.3.45  输入数据寄存器(IDR)
2.3.46  矢量数据寄存器(从V[0]到V[7])
2.3.47  矢量进程控制寄存器(VPCR)
2.3.48  输入标记寄存器(ITR)
2.3.49  指令高速缓冲存储器(IC)
2.3.50  系数存储器阵列(CMA)
2.4  联合机可用微代码存取的寄存器
2.4.1  输入数据寄存器(IDR)
2.4.2
矢量机寄存器
系数存储器阵列(CMA)
矢量数据寄存器(V[0]-V[7])
矢量进程控制寄存器(VPCR)
2.4.3
微定序器控制寄存器
指令寄存器(IR)
程序计数器(PC)
栈指针(SP)
一级线(FLS)
重复开始寄存器(RBR)
重复结束寄存器(RER)
重复计数寄存器(RCR)
2.4.4
标量机寄存器
全局指针寄存器(P[0]-P[7])
全局数据寄存器(G[0]-G[7])
标量进程控制寄存器(SPCR)
2.4.5
联合机控制寄存器
联合机标识寄存器(AIR)
算术运算控制寄存器(ACR)
异常状态寄存器(ESR)
异常屏蔽寄存器(EMR)
处理部件选择寄存器(PESR)
端口控制寄存器(PCR)
联合机端口监视寄存器(APMR)
通用端口寄存器(GPPR)
通用方向寄存器(GPDR)
IDR指针寄存器(IPR)
IDR计数寄存器(ICR)
IDR位置屏蔽寄存器(ILMR)
IDR初始偏移寄存器(ODR)
2.5  联合机微代码指令集概述
2.5.1  指令类型
2.5.2  使用记号
2.5.3
微代码指令格式
数据格式
寄存器选择
2.5.4  栈指针约定
2.5.5  存取IDR
2.5.6  矢量进程控制寄存器
2.5.7  标量进程控制寄存器
2.5.8  带符号与不带符号运算比较
2.5.9  饱和与非饱和运算比较
2.5.10  联合机系统控制操作
2.5.11
矢量机数据传送
对drotmov指令的说明
对dsrot指令的说明
2.5.12
矢量机数据运算
循环右移指令和左移指令的概述
向下移位操作的K得w
vmin/vmax指令的说明
2.5.13
矢量机条件操作
条件指令对VT和VH位的作用
循环右移和左移指令概述
2.5.14  标量机数据移动
2.5.15  标量机数据运算
2.5.16  标量机程序流程控制操作
2.5.17
repeat和repeate指令的说明
repeat循环终点处的流程变化
repeat循环终点处的矢量条件
2.5.18  扩充位和多字节运算的执行
2.5.19
多字节运算的说明
多字节加法
多字节减法
多字节比较
“VIF”对xX0和xX1的依赖
多字节最大值
多字节最小值
多字节算术左移位
多字节算术右移位
多字节求反
多字节指针增量
多字节指针减量
2.5.20  进程计算控制
2.5.21  VPCR的VH位和VT位对PE处理的作用
2.5.22  指令执行时间
2.5.23  联合机的缺失指令
第三节
联合机的操作原理
3.1  信息流程和结构
3.2  指令流线
3.2.1  指令流线中的拖延
3.2.2  指令流线里的拖延优先级
3.3  指令和数据存储器
3.3.1  指令高速缓存
3.3.2  CMA和MMA映象
3.3.3  对CMA的直接和反向存取
3.3.4
分配CMA空间
例1:仅用于数据存储的CMA
例2:指令高速缓存器、PC和CMA页面
例3:用于程序和数据的CMA
例4:程序移位
例5:对例4增加跳转表
例6:对例4增加CMA栈
例7:对例4增加矢量和标量存储
例8:把所有部分汇集到一起
3.4  联合机初始化
3.5  端口操作
3.5.1
主机传送方式
随机存取方式
主机流式存取方式
3.5.2
联合机传送方式
输入变址
使用ILMR的例子
输入标记
3.5.3  对联合机的主机存储器映象
3.6  联合机操作
3.6.1  联合机的宏观
3.6.2
主机和联合机交互作用的详细说明
输入有效位
先填充后计算
边填充边计算
联合机和联合机的交互作用
3.6.3  联合机指令流程的微观
3.6.4
联合机的异常模型
复位异常
标量异常
矢量异常
端口错误异常
多个端口错误异常的解释
3.6.5
微代码程序结构
初始化和循环
多重循环
两个联合机之间的信号传送
条件执行
3.7  微代码启动的端口写操作
3.8  联合机总线布置
3.8.1  联合机端口开关和抽头
3.8.2
总线端口冲突及出错
联合机冲突条件
联合机争用条件
联合机交错
联合机开关争用
3.8.3  联合机环形结构
3.8.4  二维联合机结构
第四节
联合机总线操作
4.1  联合机端口定时
4.1.1  主机随机存取
4.1.2  主机随机地址西到东传送
4.1.3  主机随机地址和数据北和南传送
4.1.4
带有早期结束的主机随机
地址/数据北/南传送
4.1.5  主机流式读
4.1.6  主机流式写存取
4.2  联合机主控机操作
4.2.1  联合机全部有效数据的写操作
4.2.2  联合机部分有效数据的写操作
4.2.3  联合机写冲突定时
4.3  其它定时
4.3.1  联合机BUSY输出定时
4.3.2  联合机带有Run/Stop干预的写定时
4.3.3  中断定时
4.3.4  复位定时
4.3.5  IEEE1149.1测试存取端口(TAP)定时
第五节
对选定专题的概述
5.1  饱和保护
5.2  数据处理机间的通信:开关和抽头
5.3  多端口数据处理机
5.4  数据处理机中的扩充长度操作
5.5  数据处理机中的数据传送操作
5.5.1
“dadd”、“daddp”、“dmin”、
“dminp”、“dmax”和“dmaxp”指令
5.5.2  “dsrot”指令
5.6  指令的多级条件执行
5.6.1  “vif”、“velse”和“vendif”指令
5.6.1  “dskip”和“dskipe”指令
5.6.3  “repeat”和“repeate”指令
5.7  数据处理机体系结构
5.8  把输入数据装入数据处理机
5.9  数据处理机的拖延技术和机制
5.10  最大值和最小值的确定
5.10.1
“colmax”、“rowmax”、“locmax”、“colmin”、
“rowmin”和“locmin”指令
5.10.2
“vmaxp”、“vmax”、“vminp”以及
“vmin”、“maxp”、“max”、“minp”和“min”指令
5.11  对系数存储器阵列(CMA)14的反向访问
词汇表
联合机:
联合机
联合机′:
包括多于一个联合机的系统中,有可能各个不同的联合机含有不同的微代码。该撇号用作指明这种微代码的不同。
联合机组:
联合机的复数形式。多于一个联合机。
联合机链:
用xCO/xCI菊链控制信号链接起来的一群联合机。
簇(bank):
处理一个输入矢量的一群联合机。增加簇的数量增加了输出神经细胞的数量。如果想象联合机组按x-y矩阵排列,那么一簇就类似于矩阵中的一行。可以比较这种簇和片的定义。
广播:
该术语和Run(运行)方式流式写运算同义。即数据以流的形式(无外部发送地址)从一单信号源(联合机或某外部数据源)被传送给多联合机组。请注意该术语仅用于Run方式流式写入,不用于Run方式流式读出。这是因为在Run方式下,数据只能被写进或写出联合机,但数据不能从联合机中被读出。为了联合机读出数据,该设备必须置为Stop(停止)方式(R/S=0)。
在Run方式操作(R/S=1)下,广播操作的目的地是接收设备的输入数据寄存器(IDR)。在Stop方式操作下(当信号R/S=0时),广播操作的目的地由主机流选择寄存器(HHSR)的LS[3∶0]位标志所指明。
冲突:
当一外部端口访问和write微代码指令碰撞时出现联合机冲突(仅在Run方式下)。该条件取决于含有该冲突的端口的抽头设定。write微代码指令总是被取消掉。当检测出冲突时出现端口错误异常处理。
边填充边计算:
这是一种方法,在把输入数据填充给输入数据寄存器(IDR)的同时允许微定序器对该输入数据进行重叠计算。
争用:
当两个或更多的源试图同时访问IDR(输入数据寄存器)时出现联合机争用。目前不同的源包括:1)一个或多个端口;2)vstorei、vwritel或writel指令。这种情况主要在Run方式中是有意义的并取决于抽头设置。当争用被检测出时将出现端口错误异常处理。
异常:
联合机异常(仅在Run方式下)是可能出现在正常系统中的数种系统事件中的一种。联合机所响应的异常类型为溢出、被零除和端口错误。在指令存储器的第一部分里含有一个异常矢量表。
主机:
在联合机外部的负责联合机内务功能的任何控制机制。这些功能可包括联合机初始化、数据的输入,联合机产生的中断的处理等等。
输入帧:
输入数据的一个完整集。在生成一个输出前所必需的数据量。通过适当使用流线技术,输入帧可被重叠以获得更大的吞吐率。
输入变址:
允许邻接的输入采样序列被装入到输入数据寄存器(IDR)的输入捕捉机制。
输入标记:
允许不邻接的输入采样序列被装入到输入数据寄存器(IDR)的输入捕捉机制。
输入矢量:
联合机子系统为生成一个结果而所需的输入采样总数。
输出功能
作用到前馈神经网络中各神经细胞输出上的功能。该功能通常用采用S形压挤功能形式。当所有其它联合机组的部分神经腱结果已被收集之后,该功能可由单个联合机完成。关于该功能如何由单个联合机完成的详细描述,请参见3.6.2.4节“联合机和联合机的交互作用”。
部分神经腱结果:
把传播函数作用在部分输入帧上所获得的结果。如果进入网络的输入采样总数小于64(单一联合机能够处理的最大数量),单个联合机可对整个输入帧进行操作(如同它作用在单个神经细胞上)并能因此计算出全部神经腱结果。
如果输入采样的总数大于64,联合机只能把传播函数作用在输入帧的一部分上,从而对各个神经细胞只计算出部分神经腱结果。单个联合机的责任是将所有的部分神经腱结果收集到一起,以便为各个神经细胞生成一个总神经腱结果。
端口:
联合机上4个可能的外部总线端口中的一个。其可能为北、南、东和西。
传播函数:
用来计算一个网络输出的函数。最简单的例子是各输入与连接权的乘积之和,即∑Ii×Wij
在联合机系统中,联合机完成部分传播函数(因为每个联合机只能得到部分输入)。某个单个联合机的责任是收集所有这些部分传播函数的结果(也称之为部分神经腱结果)并把它们总计起来形成完整的传播函数。关于这个函数的详细描述参见3.6.2.4节“联合机和联合机′的交互作用”。
饱和:
联合机上的许多算术指令,由于与那些允许结果卷转进位的指令相反,将会引起结果饱和,具有这两种不同方式运算的优点之一是,在多字节操作中,在那里较低有效字节采用其将不饱和的指令(即较低有效字节完成引起结果卷转进位的运算),而最高有效位字节的运算会引起结果饱和。
考虑下述不带符号操作:
饱和:$FF+$02==>$FF(溢出被设置)
非饱和:$FF+$$02==>01(溢出被设置)
请注意在带符号方式中这种饱和运算不同。请详见2.5.9节“饱和和非饱和运算”。
影子寄存器:
少数联合机寄存器被用于规定初始值。这些寄存器装备了周期地含有初始值的隐式(或影子)寄存器。这些带有影子寄存器配对物的联合机寄存器为:IPR、ICR、OAR1、DCR1、OAR2、DCR2。IPR和ICR是Run方式流操作中使用的主要寄存器。OAR1、DCR1、OAR2和DCR2是Stop方式流操作中使用的主要寄存器。影子寄存器的概念允许对流操作中使用的寄存器迅速地重新初始化。
层(shelf):
单个SIMD机和其关联系数值的广义化名称。当联合机被用于神经网络应用时,层可看作为一个神经细胞。当联合机被用于模糊逻辑应用时,层可看作为一个模糊隶属函数。
SIMD:
单指令多数据。这个词用作为描述联合机的状态控制机制的一个形容词。该词意味有一个协调联合机所有ALU(运算逻辑部件)部分的动作的单一指令流。
SIMD矢量机:
联合机的ALU部分。在联合机中有64个计算块,它们对置放在输入数据寄存器(IDR)和系数存储器阵列(CMA)内的数据进行运算。这些运算得到的结果可存储在矢量寄存器(V0-V7)里。
SIMD标量机:
联合机的状态控制部分。SIMD标量机从指令高速缓冲存储器(IC)中读指令,并用这些指令控制在SIMD标量机里和SIMD矢量机中进行的操作。
片(slice):
在具有一个以上簇的联合机子系统中,一“片”是在同一时间接受输入矢量的相同部分的一群联合机组。增加片的数量便增加了输入的数量。如果想象联合机组按x-y矩阵排列,一片将类似矩阵中的一列。可以比较片和簇的定义。
流式传输:
一种存取方式,允许信息可被“倾注到”或“虹吸出”联合机子系统而不需要在地址总线上提供显式寻址。地址信息代之以来自OAR、DCR和HSOR寄存器。从软件的观点来看,这样允许联合机子系统的更加透明的生长。
开关:
把两个相对端口连接起来的内部电路。当数据通过开关时为其数据的传输加上一个时钟周期的延迟。
抽头:
允许当前读周期式写周期(在一个端口)去访问IDR寄存器单元的一种内部电路。这种机制还允许联合机窥探由于端口开关连接而可能通过联合机的数据传送。
前言
(第一节)
联合机(Association Engine)(简称AE)是由Motorola公司研制的一种单芯片装置,它将成为解决神经网络、模糊逻辑和各种并行计算应用的一种完整的总体方法。本文件将论述作为一个独立器件和作为由多联合机组构成的一个系统的成员的两种情况下联合机的功能描述及其操作。作为一个微编码SIMD(单指令、多数据)机而实施的联合机,将足够灵活地在最少主机CPU干预下支持许多现有的神经网络范例、模糊逻辑应用和并行计算算法。在初期研制阶段,这种芯片正被开发成为可被用户用于特定的神经网络和模糊逻辑应用的一种构件。远期目标是,把特定的一些应用集成到使用供单片连接的模块间总线(IMB)上联合机的全部或部分的适当一些MCU中。
(1.1)关键特征
·单层应用的规模可变性:该体系结构在输入帧宽度和输出数量两方面都是规模可变的。
多层应用的规模可变性:联合机组群可以无缝(最少外部连接逻辑)地级连起来,并在最少CPU干预下传送层间数据。
·各个联合机向另一个联合机馈给的同时可直接和CPU/MCU通信。
·独特的总线开关和抽头结构用于高效的数据传送。
·支持多达64个8位输入×64个输出。
·模块设计可允许用户按自己应用要求安装。
·支持单片学习。
·支持模糊逻辑算法。
·通用的CPU接口。
·为通用性由一个微编码SIMD机供电。
·用户可编程微代码。
·支持标准接口协议以允许和CPU或MCU的直接连接。
·支持对所有内部单元的单时钟读和写周期(流方式)
·支持对所有内部单元的三时钟读和写周期(随机方式)
·联合机可链接以支持最大达216-1  8位采样的输入数据帧宽度。
·每个处理部件具有专用的ALU硬件以支持同时对全部数据的并行计算。
·支持IEEE1144.1边界扫描体系结构(JTAG)。
(1.2)联合机体系结构的目标
·最小时钟频率:DC(直流)
·最大时钟频率:20MHz(兆赫)
·最大功率消耗:400mw a5v
·3.3v操作
·包装类型:84引脚无引线芯片载件(LCC)
·包装尺寸:28mm×28mm
(1.3)约定
本文件采用的约定如下:
·字节排序-当描述一个寄存器组(该组中含有多于一个的寄存器)时,该寄存器组将按数组符号写出,最高有效位寄存器为第一,最低有效位寄存器为最后,例如写作:IDR[63:0]。64个输入数据寄存器的整个组一般称为IDR。
·位排序-当描述信号引脚组成寄存器位组时,最高有效位将具有最大号码而最低有效位将具有最小号码。因此,诸如PSTAT[2∶0]的符号表示有3根PSTAT信号引线,其中最高有效位为PSTAT[2]。
·命名约定:
信号名以黑体大写字母出现。
位名以斜体大写字出现。
寄存器以斜黑体大写字母出现。
微代码指令名以黑体小写字母出现。
·端口命名约定
有四个标明为北(N)、南(S)、东(E)和西(W)的端口。
作为一个端口的一部分的信号在其前面冠以x。这样,诸如xCI的符号代表所有的xCI信号(NCI、SCI、ECI和WCI)
功能说明
(第二节)
(2.1)联合机系统概述
(2.1.1)总论
本节给出联合机操作的高级概述。本节还描述隐藏在该芯片所支持的数据流和流水线后面的概念。编写本文件时假设读者对所使用的该芯片组的应用类型具有一般的了解。联合机设计为一种通用的计算机,它有效地用于并行算法、模糊逻辑和神经网络的处理。尽管如此,在本节中将描述神经网络体系结构和联合机体系结构之间的联系,因为基本神经网络结构相对而言是简单的。而且神经网络本质上是尺寸可变的,这使得联合机的规模可变性更容易得到理解。
对模糊逻辑和神经网络的了解和实施趋向于提出某些有趣的和挑战性的问题。这些问题主要是因为缺乏对术语和概念的标准化,大部分参与者创造和使用他们自己对术语和概念的定义。由于这个原因,简要讨论从传统的神经网络到联合机芯片之间的映射是有帮助的。此后将讨论主机(任何控制联合机芯片操作的智能源)和联合机芯片之间的数据流、联合机组之间的传送、和多层神经网络层间的传送。
(2.1.2)映象
为了更好地理解联合机芯片的能力和灵活性,将讨论传统的神经网络体系结构和联合机体系结构之间的映象。这一讨论集中在4个具有不同复杂性的独立的例子上,以帮助读者增加了解。这些例子里输入和输出数量的选取是任意的,只不过是为了传递一种尺寸的观念。
联合机被组成为支持高达64个8位输入和产生高达64个输出。对于那些要求低于64个输入和少于64个输出的应用,单个联合机就足以实现必要的结构。对于超过这些需求(大于64个8位输入和/或64个输出)的应用,为实现其结构需要不同数量的联合机。下面的例子用来说明为实现这些应用的不同的联合机组成。
例1:42个输入35个输出的前馈网络
图2-1-1到图2-1-3分别用传统的神经网络表示、逻辑的联合机表示和实体的联合机表示描述一个要求具有42个输入和35个输出的单层前馈网络。其实现只需要一个联合机。主机向联合机传送42个字节的数据;施用了传播函数;生成35个输出。一个联合机可支持多达64个的输出。在图2-1-1和本文件的其它地方,应注意到输入层不完成任何计算功能。它只简单地作为分配层。
例2:102个输入35个输出的前馈网络
图2-2-1到图2-2-3说明具有102个输入和35个输出的前馈网络的传统表示、逻辑表示和实体表示。如可从图2-2-3中看出的,需要两个联合机。联合机组和输入数据流串联连接,联合机0处理数据输入0-63,联合机1处理数据输入64-101。联合机1还完成部分神经腱结果(来自联合机0和其自身)的聚集然后生成35个输出。联合机0和联合机1组成一个簇(Bank)。为便于微代码编程,可能最好配置一个第三联合机以完成聚集和输出功能。
例3:42个输入69个输出的前馈网络
图2-3-1到图2-3-3显示需要42个输入和69个输出的前馈网络。其实现需要两个联合机。联合机组与输入数据流并联连接,两个联合机同时接受输入数据。如可从图2-3-3中看出,联合机0和联合机1组成单个片。
例4:73个输入69个输出的前馈网络
图2-4-1到图2-4-3说明要求具有73个输入和69个输出的实现方案。该实现方案需要四个联合机来完成任务。在片0中,联合机0和联合机2相连以处理输入数据0-63。在片1中,联合机1和联合机3连接以处理输入数据64-72。片0和片1有效地串联相连以处理多于64个输入的输入数据流。联合机0和联合机1相连组成簇0负责输出0-63。联合机2和联合机3相连组成簇1负责输出64-68。
图5:63个输入20条隐线8个输出的前馈网络
图2-5-1到图2-5-3描绘2层前馈网络。输入层只作为输入数据到隐层的分配点。隐层由63个输入和20个输出组成。从隐层出来的20个输出均等地分配给输出层的所有输入。输出层包括20个输入和8个输出。联合机0形成实现输入层和隐层的单个簇(簇0)。这些层从主机取出63个输入采样,对数据执行网络变换函数演算,然后把20个输出传送给输出层。层3由一个簇(簇1)组成。簇1(联合机1)对由隐层提供的20个输入进行运算,对这些数据执行另一个网络变换函数演算,生成输出0-7。有关联合机及其操作的更详细描述,参见第三节“联合机的操作原理”。
(2.1.3)一般的数据流
如前面的例子所描述的那样,联合机可以按不同的方式配置。从最简单的配置(一个联合机)到更复杂的实现方案,数据流是相容的。数据从主机流向联合机、从联合机流向带撇号的联合机(联合机′),从联合机′流回主机,或在多层应用中流到另一层上。尽管每个联合机器件具有独一的号码,撇号(联合机′)用来区别带有不同微程序内容和功能的联合机。应该再次指出的是,使用具有不同微代码的多联合机组是一种很强有力的特征,由于一种单一的芯片类型可用于多种变化的应用和功能中。
联合机含有专用端口,标明为N、S、E和W,分别代表北、南、东和西。在主机访问联合机阵列期间,端口承担对联合机/主机提供地址和数据信息的专用功能。在程序控制下,所有端口采用同样的基本传送协议,以在实现层间或层内通信时允许它们互相连接。下一节将给出通过这些端口的数据的概况。图2-6是讨论数据流时的参考图。
(2.1.4)数据流
子系统中的每个联合机通过外部接口电路从主机系统接收地址、数据和控制激励。所有的初始化、状态监视和输入都通过该接口。在图2-6中,主机接口和西端口W及南端口S相连。有多种用于在联合机和主机向传送数据的可编程方式,它们将在后面章节中详细描述。一种数据传送方式可能比其它方式更适宜于完成诸如初始化、状态检查、系数存储器阵列(CMA)建立或为计算目的输入操作数据等特定功能。本文件的本节,除了讨论运算数据的输入之外,将不讨论每种功能的合适传送方式。这些传送方式的细节在第2.2节“联合机信号说明”和第3节“联合机的操作原理”中讨论。联合机还具有许多其它可编程特征,它们将在本文后面讨论。
(2.1.5)初始化
在任何操作数据输入到联合机之前,该装置的许多主要区域必须得以初始化。已经细心定义了联合机的缺省值以保证在使联合机进入运行状态对只需要主机最少的工作。有关需由主机初始化区域的详细定义见第3节“联合机的操作原理”。
(2.1.6)输入数据
子系统中的每个联合机负责取出适当数量的输入数据矢量,计算神经细胞的部分神经腱结果并把结果传送给联合机′。在诸联合机执行它们的微程序的同时,通常把输入数据矢量从主机传送到联合机。数据流的这些方式以及其它存取方式将在第3.5.1节“主机传送方式”和第3.5.2节“联合机传送方式”中详细描述。
图2-6中表示的联合机子系统支持256字节的输入数据矢量流,该矢量流可被看作为4个部分输入矢量,如图2-7所示。每个联合机支持64字节的输入数据矢量流。关联的控制信号及各联合机上的内部配置负责确定什么时候该联合机应当从主机接收它的数据段。联合机0和联合机1接收输入矢量的前64字节(或部分输入矢量#1),联合机2和联合机3接收部分输入矢量#2,联合机4和联合机5接收部分输入矢量#3,而联合机6和联合机7接收部分输入矢量#4。
如前面所述,每个联合机可接收多达64个输入采样,并且每个联合机计算多达64个部分神经腱结果。联合机组可链接在一起以允许更宽的输入数据矢量。一个或多个联合机的链必须和一个联合机,相连接以对该链上所有联合机的部分神经腱结果进行聚集,以便形成输出。和一个联合机′相连接的一个联合机链称之为一簇(Bank),每个簇可处理64个神经细胞。图2-6中有2个簇,簇0和簇1。该图示例出的子系统因而能够处理128个神经细胞。
在簇0中,将来自联合机0的第一部分输出值与来自联合机2、4和6的第一部分输出值合并,以生成该簇里第一个神经细胞的输出。整个神经细胞输出值的聚集在联合机8′内部完成。全体部分输出值(或部分神经腱结果-对神经网络体系结构而言),穿过东/西端口,从联合机组传送联合机′。
(2.1.7)部分神经腱结果计算
联合机包含一个能够执行种种算术和逻辑运算的单指令、多数据(SIMD)计算机。所有64个处理部件步调一致地计算它们的数据值,在大部分实施中,由于所支持的算法的复杂性,联合机组是受计算限制的。由于其流线内部体系结构,联合机在输入数据传送时间内可隐掩掉很大部分的计算开销。这是因为联合机可在输入数据矢量的第一个采样到达时刻就开始计算操作而不必在开始之前等待接收整个输入数据矢量。用户可把可得到的微代码指令集下装到微代码存储器阵列以进行对输入数据的计算(参见第2.5节“联合机微代码指令集概述”)。
(2.1.8)输出数据
一旦对所有64个神经细胞计算了部分神经腱结果(对所有64个神经细胞计算功能是并行完成的),在微程序控制下,64个神经细胞中每一个的部分神经腱结果通过东-西端口从联合机被传送给相关的联合机′。由于所进行计算的类型和这些计算的精度(的不同)从联合机传送到联合机′的部分神经腱结果可能在宽度上不同。与用于主机传送的控制线类似,适当的控制线被用来为各联合机到联合机′的数据流定序。象联合机组对它们相关联的数据完成计算一样,联合机组监视这些控制线,在适当的时刻把它们的结果放到总线上。取决于网络的尺寸和复杂性,对适当的总线操作可能需要外部隔离和缓冲电路。但是在大部分情况下,联合机和联合机′所使用的控制总线的控制信号对控制这个外部电路是足够的。一旦所有部分神经腱结果总计在一起(在联合机′中),可对该总计施以输出功能。
(2.2)联合机信号说明
本节提供对联合机输入和输出信号引脚的描述。这些信号被分成几种不同的类:端口信号;主机存取控制信号;系统配合信号;行和列信号;其它信号;以及测试信号。表2.1给出联合机引脚一览。
本节中使用的约定和第1.3节“约定”中所叙述的一致。
(2.2.1)联合机引出脚
图2-8提供了联合机的引出脚。
(2.2.2)联合机Run/Stop操作方式
将联合机设计为运行于这样两种方式中的一种之下:Run方式或Stop方式。其方式由R/S信号所选定的。该信号确定联合机是Run方式(R/S处于VDD)还是Stop方式(R/S=0)。取决于操作方式,联合机上的信号的表现不同。表2.2说明每一方式的功能性。关于特定的定时信息参见第4节“联合机总线操作”。关于与联合机不同数据传送的说明参见第3.5节“端口操作”。
Run方式用来允许执行联合机微程序。Stop方式用来允许对联合机内部资源做外部访问以便通过系统主机进行初始化和调试。
(2.2.3)端口信号
下面描述联合机上的四个端口信号组。根据俯视联合机器件时的实体位置,这四个端口被标为北、南、东和西。
(2.2.3.1)北数据端口(ND[7∶0](71))
这些信号根据操作的Run/Stop方式传送地址或数据信息。在Run方式下,该双向端口响应写北微代码指令(writen、vwriten)作为一个输出而驱动;而当数据穿过芯片的北-南端口传送时,它又充当为一个输入。在Stop方式下,该端口也是双向的。如果OP信号表明一个随机存取传送,而且该装置被选中(ROW和COL都被认定),该端口将接收随机存取地址的LSB(是低有效位)并且立即传递给南端口。如果该装置没有被选中,在该端口(ND作为输入)接收的任何数据都将立即被转到南端口,而在南端口接收的任何数据都向上移动到并排出ND(ND作为输出)。从联合机驱动出的数据值可在CLK信号的下降沿被启动。进入联合机的地址/数据值在CLK信号的上升沿被锁存。
(2.2.3.2)北控制输出(NCO(73))
该输出信号被用来表明有效数据从ND信号线排出。该信号将在CLK信号的下降沿转变。
(2.2.3.3)北控制输出(NCI(75))
该输入信号被用来表明有效地地址/数据正从ND信号线进入。该信号将在CLK信号的上升沿上锁存。
(2.2.3.4)南数据端口(SD[7∶0])(83)
这些信号根据操作的Run/Stop方式传送地址或数据信息。在Run方式下,该双向端口响应写南微代码指令(writes,vwrites)作为一个输出而驱动;而当数据穿过芯片的南-北端口传送时,它又充当为一个输入。在Stop方式下,该端口也是双向的。如果OP信号表明随机存取传送,而且该设备被选中(ROW和COL都被认定),SD将或在CLK的上升沿锁存随相存取数据(当R/W=0时),或在CLK的下降沿把随机存取数据驱出SD(当R/W=1时)。如果该器件未被选中,在该端口(SD作为输入)接收的任何数据将立即被转送到北端口,而在北端口接收的任何数据都将向下移动到并排出SD(SD作为输出)。从联合机驱出的数据值在CLK信号的下降沿被启动。进入联合机的地址/数据值在CLK信号的上升沿锁存。请参看第2.3.14节“主机流选择寄存器(HSSR)”关于在流方式存取期间HSP[1∶0]位如何能改变该端口操作的信息。
(2.2.3.5)南控制输出(SCO(85))
该输出信号用来表明有效的地址/数据正从SD信号线排出。该信号将在CLK信号的下降沿转变。
(2.2.3.6)南控制输入(SCI(89))
该输入信号用来表明有效数据正在从SD信号线进入。该信号将在CLK信号的上升沿锁存。
(2.2.3.7)东数据端口(ED[7∶0](77))
这些信号根据操作的Run/Stop方式传送地址或数据信息。在Run方式下,该双向端口响应写东微代码指令(writee,vwritee)作为一个输出驱动,而当数据穿过芯片的东-西端口传送时,该端口又充当一个输入。在Stop方式下,在该端口(ED作为输入)接收的任何数据将立刻被转送到西端口,而在西端口接收的任何数据都将传给并排出ED(ED作为输出)。从联合机排出的数据值在CLK信号的下降沿启动。进入联合机的地址/数据值在CLK信号的上升沿锁存。诸参看第2.3.14节“主机流选择寄存器(HSSR)”有关在流方式存取期间HSP[1∶0]位如何能改变该端口操作的信息。
(2.2.3.8)东控制输出(ECO(79))
该输出信号用来表明有效的地址/数据正在从ED信号线排出。该信号将在CLK信号的下降沿转变。
(2.2.3.9)东控制输入(ECI(81))
该输入信号用来表明有效数据正在从ED信号线进入。该信号将在CLK信号的上升沿锁存。
(2.2.3.10)西数据端口(WD[7∶0](91))
这些信号根据操作的Run/Stop方式传送地址或数据信息。在Run方式下,该双向端口响应写西微代码指令(writew、vwritew)作为一个输出驱动;而当数据穿过芯片的西-东端口传送时,它又充当一个输入。在Stop方式下,该端口也是双向的。如果OP信号表明一个随机存取传送,而且该装置被选中(ROW和COL都被认定),该端口将接收随机存取地址的MSB(最高有效位)并且立即转送给东端口。如果该装置没有被选中,在该端口(WD作为输入)接收的任何数据都立即转送到东端口,而在东端口接收的任何数据都将传给并排出WD(WD作为输出)。从联合机排出的数据值在CLK信号的下降沿被启动。进入联合机的地址/数据值在CLK信号的上升沿锁存。
(2.2.3.11)西控制输出(WCO(93))
该输出信号用来表明有效数据正在从WD信号线排出。该信号将在CLK信号的下降沿转变。
(2.2.3.12)西控制输入(WCI(95))
该输入信号用来表明有效的地址/数据正在从WD信号线进入。该信号将在CLK信号的上升沿锁存。
(2.2.4)主机存取控制线
下述信号用在Stop方式下访问联合机内的资源。主机存取可以是随机存取或流式存取中的一种。
(2.2.4.1)读/写控制(R/W(65))
该输入信号用来控制向/从联合机存取的方向。如果信号为高电平,存取为读(数据被从联合机读出),如果这个信号为低电平,存取为写(数据被写进联合机)。在CLK的上升沿R/W引脚被内部锁存。
(2.2.4.2)数据启动(EN(67))
该低电平有效输入信号是主机总线传输的数据启动信号。当该信号被认定时(与ROW和COL输入一起),地址或数据被传送给联合机直到适当数量的字节/字已被传送完成EN被否定。EN信号可用来控制流进和流出联合机的信息的数据速率。通过保持ROW、COL线有效和启动/禁止EW信号,数据传送的速率可被改变。在CLK的上升沿EN引脚被锁定。
(2.2.4.3)存取类型(OP)(94)
该输入信号用来指明要执行哪种类型的主机存取(R/S=0)。在CLK的上升沿OP引脚被内部锁存。
当OP=0时,流式存取方式被选择。当以这个方式操作时,通过采用OARx/DCRx寄存器组合,内部地生成一个起始地址和计数。这种机制允许数据流可被写进联合机系统或可从联合机系统读出。通过使用一个起始地址(OARx)寄存器和一个持续(DCRx)寄存器,该数据流可在不提供地址的情况下馈给联合机链。该链是通过把xCI和xCO信号互相连接起来组成的(见图2-9)。所有的联合机组存取同样的数据。流传送的方向由R/W确定。在每个数据装入后内部地址指针自动地递增。在流式存取可在联合机阵列上执行之前,主机流偏移寄存器(HSOR)必须被加载。有关流式传输的更多信息参见第3.5.1节“主机传送方式”。
当OP=1时,随机存取方式被选择。在这种方式下,对由端口完成的各次读和写操作都需要一个地址。地址在西端口或北端口上提供(分别为16位地址的最高有效字节或最低有效字节)数据在南端口被取得或被给出(取决于读/写)。
(2.2.5)系统配合方式
下述信号用来协调联合机系统。最值得注意的是Run/Stop方式以及用于多联合机组的完成信号。
(2.2.5.1)Run/Stop(R/S)(80)
该输入信号确定联合机的操作方式。当该信号为高电平(VDD)时,Run方式被选择。当该信号为低电平(VSS)时,Stop方式被选择。在CLK信号的上升沿R/S引脚被锁存。
Stop方式主要用于对联合机(组)的主机初始化和配置。Run方式主要用于执行内部微代码和用于无须主机干预的联合机组之间的数据传送。
(2.2.5.2)忙(BUSY)(78)
该低电平有效、开路漏极(open drain)输出信号用来表明联合机目前正在执行指令。当联合机已执行done指令或已以单步方式完成所选取的指令时,该BUSY引脚被否定。每当RESET引脚被起动或者R/S信号转换到Stop方式,该BUSY信号也被否定。该输出和一个外部上拉器件一起用来确定什么时候所有的联合机组达到一个“done”状态。该BUSY引脚在CLK信号的下降沿被启动。
(2.2.6)行和列信号
取决于Run/Stop方式,ROW和COL信号执行两种不同的功能。在Run方式下,这些信号用来辅助多联合机组之间的最小值和最大值运算。在Stop方式下,这些信号用来为主机传送选择一个联合机器件。
(2.2.6.1)行信号(ROW(82))
该低电平有效双向“线或”信号用作两件事:在一个行中选择一个联合机和在微程序控制下辅助最小值和最大值运算。
在Run方式下,ROW信号被max和min微代码指令组使用以越过共享一条公用ROW线的芯片中的芯片边界来解决最大值和最小值功能。在这些指令期间,来自正在被测试寄存器的一个数据位被写入该“线或”信号。在下半个时钟周期期间,该信号被检测以观察被读的数据是否和已写入的数据一样。很明显,越过芯片边界执行min和max指令需要芯片进行同步操作(即,不同芯片上的指令在同一时钟上执行)。
在Stop方式下,ROW信号作为向联合机的芯片选择输入,用于为主机存取选择联合机(在一行里)。
(2.2.6.2)列信号(COW)(84)
该低电平有效双向线“或”信号用作两件事:在一个列里选择一个联合机和在微程序控制下辅助最小值和最大值功能。
在Run方式下,COL信号被max和min微代码指令组使用,以越过共享一条公用COL线的芯片中的芯片边界来解决最大值和最小值功能。在这些指令期间,来自正在被测试寄存器的一个数据位被写入该线“或”信号。在下半个时钟周期期间,该信号被检测以观察被读的数据是否和已写入的数据一样。同样,越过芯片边界执行min和max指令要求芯片进行同步操作(即,不同芯片上的指令在同一时钟上执行)。
在Stop方式下COL信号作为向联合机的芯片选择输入,用于为主机存取选择联合机(在一列里)。
(2.2.7)其它信号
(2.2.7.1)系统总线时钟(CLK)
该输入信号是整个网络的系统时钟。所有利用这个时钟传出芯片之外的数据将是这样的,即在时钟的下降沿传送输出数据而在时钟的上升沿捕捉输入数据。所有数据和控制信号的建立时间和保持时间都以该时钟为基准的。这一信号跨过多联合机组的同步对于执行某些联合机指令(特别是那些“外部可见的”指令,比如rowmin,rowmax,colmin,colmax,vwrite,write等)是关键性的。
(2.2.7.2)系统复位(RESET)
和内部系统复位相连的这一低电平有效的输入信号是施加给系统中所有装置的系统复位信号。当其被认定时,它迫使所有的装置回到它们的缺省状态。复位和CLK的上升沿内部地同步。请参见第4,3,4节“复位定时”以得到更多信息。
(2.2.7.3)中断(INTR(66))
该低电平有效、开路漏极输出信号被用来通知主机系统中断条件已经出现。取决于置于IMR1和IMR2寄存器中的那些位,该信号可由不同原因所认定。有关更详细的信息请参见第2.3.23节“1号中断屏蔽寄存器(IMR1)”和第2.3.25节“2号中断屏蔽寄存器(IMR2)”和第4.3.3节“中断定时”。
(2.2.7.4)通用端口I/O(PA[1∶0](68))
这些高电平有效输入/输出信号被联合机微程序用于通用的输入/输出。当这些引脚被编程为输入时,数据在CUK信号的上升沿被锁存。当编程为输出时,这些信号允许数据在CLK信号的下降沿送出。这两个引脚可被独立地编程为输入或为输出。有关I/O和数据编程的更详细信息参见第2、3、8节“通用端口寄存器(GPPR)”。
(2.2.7.5)处理机状态(PSTAT[2∶0](86))
这些输出信号连续地反映联合机指令状态的状态。这些输出信号在CLK信号的下降沿驱动而出。有关PSTAT[2∶0]信号的可能值参看表2.3。
(2.2.8)测试信号
这四个测试信号提供了一个接口,该接口支持IEEE1149.1用于插件连接的边界扫描测试的测试存取端口(TAP)。
(2.2.8.1)测试时钟(TCK)
该输入信号用作为测试逻辑的专用时钟。因为测试逻辑的计时独立于联合机的正常操作,一块板上的所有其它联合机装置可共享一公用的测试时钟。
(2.2.8.2)测试数据输入(TDI)
该输入信号对TAP和边界扫描数据寄存器提供串行数据输入。
(2.2.8.3)测试数据输出(TDO)
该三态输出信号提供来自TAP或边界扫描数据寄存器的串行数据输出。TDO输出可被置为高阻抗方式以允许插件板级测试数据通路的并行连接。
(2.2.8.4)测试方式选择(THS)
该输入信号被TAP控制器解码并区分测试支持电路的主要操作。
(2.2.8.5)测试复位(TRST)
该输入信号把TAP控制器和IO.Ct1单元复位到它们的初始状态。IO.Ct1单元的初始状态为把双向引脚配置为一输入的状态。有关边界扫描链的更详细信息请参看第2.6.3节“数据寄存器”。
(2.2.9)直流电气特性
图2.4给出联合机输入和输出两种功能的直流电气特性。
(2.2.10)联合机引出脚
图2-10详细列举联合机组件的引出脚。标明为“n.c.”的引脚为不连接的引脚,它也不和联合机内部的任何有源电路相连接。
(2.3)联合机的主机可访问寄存器
本节中所描述的寄存器是那些在主机方式存取联合机(即R/S=0)期间可被访问的内部寄存器。这些寄存器可以用随机存取方式(OP=1)或用流式存取方式(OP=0)来访问。但是,联合机标识寄存器的值不能够被改变。表2、6列举了主机可访问寄存器。
(2.3.1)联合机标识寄存器(AIR)
联合机标识寄存器(AIR)330可被主机或微代码用来确定装置的类型和规模。对该装置进行的每次功能修改将通过对该寄存器的递减来记录(即,该装置具有$FF的一个ID(标识),该装置的下一版本就将具有$FF的ID)。
这个寄存器定位为主机和微代码存储器变换中的第一个,这样不论体系结构怎样修改该寄存器将总是定位在相同的位置。
AIR是一个只读寄存器并可由微代码指令movfc访问。图2-11更详细地说明AIR。更多的细节请参阅第2.4.5.1节“联合机标识寄存器(AIR)”。
(2.3.2)算术控制寄存器(ACR)
算术控制寄存器(ACR)172控制矢量机和标量机中数字的算术表示。表2.7提供了有关ACR的更多信息。
SSGN位和VSGN位在算术运算期间分别控制标量机或矢量机里的数值是否考虑为是带符号的或是不带符号的。这些位还控制产生哪种类型(带符号或不带符号)的溢出。这些位的缺省值为0,意味着缺省时标量机和矢量机中采用的是带符号算术。
ACR可用微代码指令movci,movtc和movfc存取。图2-12中更详细地说明了ACR。其中位0-SSGN为标量带符号/不带符号算术运算;位1-VSGN为矢量带符号/不带符号算术运算。有关细节请参阅第2.4.5.2节“算术控制寄存器(ACR)”。
(2.3.3)异常状态寄存器(ESR)
异常状态寄存器(ESR)332记录所有待决异常的出现。联合机异常模型是平直的(异常处理不能嵌套;即,一次只能处理一个异常)和分优先级的(较高优先级异常在较低优先级异常之前处理)。每次该寄存器由主机读过之后,其内容被清除掉。请将这种清除和第2.4.5.3节“异常状态寄存器(ESR)”中所描述的由rte指令对位的清除进行比较。表2.8提供了ESR的更多信息。
SVE位表明何时标量机内已出现溢出异常。VVE位表明何时矢量机内已出现溢出异常。即,如果溢出在64个处理部件中的任何一个中出现,该位将被置位。
SDE位表明何时标量机内已出现被零除的异常。VDE位指明何时矢量机内已出现被零除的异常。和VVE位一样,VDE位反映所有64个处理部件的被零除的状态。如果在64个处理部件的任一个中出现被零除,VDE位将被置位。
PCE位表明是否已出现PC越界异常。当程序计数器(PC)的内容大于PC界限寄存器(PBR)的内容时出现PC越界异常。
IOE位表明何时由联合机执行非法Opcode(操作码)。
PEE位表明何时出现端口错误异常。可能的端口错误异常描述于第3.6.4.5节“对多端口错误异常的解释”和表3.6所示的可能的端口错误异常”之中。
ICE位表明何时出现基于指令的IDR争用。这个条件发生于在执行vstore,vwritel或writel指令的同时一个外部流式写试图对IDR加载。这也被认为是一种端口错误异常。可能的端口错误异常在第3.6.4.5节“对多端口错误异常的解释”和表3.6“可能的端口错误异常”中叙述。
有关异常处理的更详细说明,请参见第3.6.4节“联合机异常模型”。ESR是一个只读寄存器,可被微代码指令movfc访问。图2-13更详细地描述了ESR,其中位0-SVE为标量溢出异常;位1-VVE为矢量溢出异常;位2-SDE为标量被零除异常;位3-VDE为矢量被零除异常;位4-PCE为PC越界异常;位5-IOE为非法操作码异常;位6-PEE为端口错误异常;位7-ICE为基于指令的IOR争用异常。
(2.3.4)异常屏蔽寄存器(EMR)
异常屏蔽寄存器(EMR)334允许联合机中的异常条件的有选择开启(和禁止)。当一个异常被屏蔽掉时,相应的异常例程将不被调用。表2.9给出了EMR的更详细的信息。
如果VVEM位被设置,矢量机的溢出条件将不产生异常(即异常处理不会出现)。矢量溢出由各个处理部件的VPCR(矢量进程控制寄存器)里的VV位表明,而在全局上由ESR的VVE位表明。按照缺省值,VVEM是清零的,这意味着当矢量机内存在溢出条件时将出现异常处理。
SDEM位确定是否标量机里的被零除条件会引起程序流程的改变。如果SDEM位被设置,而且标量机内确实出现被零除条件,将不会出现异常处理。按照缺省值,SDEM是清零的,这意味着当标量机内存在被零除条件时将出现异常处理。
VDEM位确定是否矢量机里的被零除条件会引起程序流程的改变。如果VDEM位被设置,而且矢量机内确实出现被零除条件,将不会出现异常处理。根据缺省值,VDEM是清零的,这意味着当矢量机内存在被零除条件时将出现异常处理。
PCEM位确定是否PC越界会引起异常处理。按照缺省值,PCEM是置1的,这意味着PC越界条件会导致异常处理出现。因为PC越界被认为是“接近致使性”的运行条件,所以强烈地建议在任何时候该位都保持置1。
IOEM位确定是否指令流中非法操作码会引起异常处理。按照缺省值,IOEM是清零的,其意味着非法操作码条件将导致异常处理出现。如果该位被设置,非法操作码会被简单地忽视掉,异常处理将不出现。
PEEM位确定是否端口错误在Run方式期间会引起异常处理出现。按照缺省值,PEEM是清零的,这意味着所有的端口错误都将导致端口错误异常例程受到执行。如果PEEM被设置,所有的端口错误将被忽略。这不是可取的。
ICEM位确定是否基于指令的IDR争用会引起异常处理出现。按照缺省值,ICEM是清零的,这意味着所有基于指令的IDR争用都将导致基于指令的IOR争用异常例程被执行。如果ICEM被设置,所有的基于指令的IDR争用都将被忽略。
EMR可用微代码指令movci、movte和movfc存取。更多的细节请参见第2.4.5.4节“异常屏蔽寄存器(EMR)”。EMR在图2-14中得到更详细的描述,其中,位0-SVEM:标量溢出异常屏蔽;位1-VVEM:矢量溢出异常屏蔽;位2-SDEM:标量被零除异常屏蔽;位3-VDEM-矢量被零除异常屏蔽;位4-PCEM:PC越界异常屏蔽;位5-IOEM:非法操作码异常屏蔽;位6-PEEM:端口错误异常屏蔽;位7-ICEM;基于指令的IDR争用异常屏蔽。
(2.3.5)处理部件选择寄存器(PESR)
处理部件选择寄存器(PESR)220用于所有的向下移位指令(drotmov,dsrot,dadd,daddp,dmin,dminp,dmax和dmaxp)期间。PESR中含有的值指明哪个处理部件将提供环绕(wraps)到0号处理部件的数据。本质上,PESR指示移位链的末端。该寄存器的缺省值为$3F,它表示所有的处理部件都将用于向下移位操作中。
PESR可由微代码指令movci,movtc和movfc访问。更多细节请参见第2.4.5.5节“处理部件选择寄存器(PESR)”。PESR在图2-15中得到更详细的说明。
(2.3.6)端口控制寄存器(PCR)
端口控制寄存器(PCR)52控制在Run方式(R/S=1)期间数据怎样流进和通过联合机,它还控制在Run方式期间输入数据寄存器怎样被填充。图2-16中PCR得到更详细的说明,其中,位0-WT为西抽头位;位1-ST为南抽头位;位2-ET为东抽头位;位3-NT为北抽头位;位4-EWS为东西开关位;位5-NSS为北南开关位;位6-FM:为IDR填充方式。表2.10提供有关PCR的更多信息。
在Run方式(R/S=1)下,该寄存器的前四位(NT70,ET68,ST66和WT64)为抽头位,它们控制是否要把写进端口的信息送给输入数据寄存器(IDR)。如果在Run方式期间数据由一个外部器件写给端口中的一个,并且这个端口的抽头位被设置,则写给这个端口的数据也要被写入IDR。
在Run方式(R/S=1)下,两个开关位(NSS74和EWS72)控制是否写入一个端口的数据要从相对的端口写出。例如,如果NSS=1,并且数据流入北端口,该数据在一个时钟周期之后将流出南端口。类似,如果NSS=1,并且数据流进南端口,一个时钟周期之后该数据将流出北端口。
重要的是要注意,如果北-南开关被闭合,而且北抽头和南抽头二者都闭合、数据被写入北端口,那么复制的数据将不被写入IDR(即,写入北端口的数据将不经过开关然后再经过南抽头传播给IDR)。
抽头和开关设定只在Run方式(R/S=1)期间有效。当联合机被停止(R/S=0)时,ROW,COU,EN信号和地址信息决定数据的源/目的地。
填充方式位(FM)76控制Run方式期间IDR如何被填充。当FM=0时,输入变址被用来填充IDR。当利用输入变址填充IDR时,IPR和ILMR确定输入数据被存储于何处,ICR确定将要存储多个字节,而IOR确定被广播的输入数据何时被接收。图2-17表示用来实现输入变址的寄存器。
当FM=1时,输入标记被采用。输入标记利用IPR和ILMR来确定输入数据被存储于何处,ICR确定将要存储多少字节,而ITR用来确定何时所广播的数据被接收。图2-18表示用来实现输入标记的寄存器。
应记住在Run方式时,数据利用广播数据传输方法从芯片向芯片发送,而这些传送的目的地总是IDR。
请参阅第3.5.2.1节“输入变址”和第3.5.2.3节“输入标记”中有关输入变址和输入标记的讨论。
PCR可由微代码指令movci,movte和movfe访问。有关细节请见第2.4.5.6节“端口控制寄存器(PCR)”。
(2.3.7)联合机端口监视寄存器(APMR)
联合机端口监督寄存器(APMR)336用来确定联合机中端口错误异常的原因。当ESR的PEE位被设置时,这些位描述端口错误异常的原因。表2.10提供有关APMR的更多信息。
该寄存器的前四位(EW,ES,EE和EN)表明当错误条件出现时是否一个通过该装置的Run方式写正在进行中(请记住端口错误异常只会在Run方式期间产生)。最后四位(IW、IS、IE和IN)表明当错误条件出现时是否微代码写正在进行中。
在图2-20中表示端口错误的图形例子。
关于错误代码的描述,请参见第3.6.4.4节“端口错误异常”和第3.6.4.5节“对多个端口错误异常的解释”。
APMR是一个只读寄存器,可由微代码指令movfc访问。有关细节请见第2.4.5.7节“联合机端口监督寄存器(APMR)”。APMR在图2-19中更详细说明,其中位0-EW为外部西端口写;位1-ES为外部南端口写;位2-EE为外部东端口写;位3-EN为外部北端口写;位4-IW为内部西端口写;位5-IS为内部南端口写;位6-IE为内部东端口写;位7-IN为内部北端口写。
(2.3.8)通用端口寄存器(GPPR)
通用端口寄存器(GPPR)338和通用方向寄存器(GPDR)一起用来确定PA[1∶0]信号引脚的状态。PA[1∶0]本质上是一个2位并行I/O端口。该寄存器充当这个2位并行I/O端口的接口,可以或者由主机使用来设置系统范围的参数值,或者由联合机使用以表明状态信息。该寄存器不能由RESET信号来改变。
GPPR可由微代码指令movci,movtc和movfc访问。更多细节请见第2.4.5.8节“通用端口寄存器”。图2-21中较详细地说明GPPR。
(2.3.9)通用方向寄存器(GPDR)
通用方向寄存器(GPDR)340和通用端口寄存器(GPPR)一起用来确定PA[1∶0]信号引脚的状态。这个寄存器控制各个信号引脚的方向。请见表2.12关于这些位的定义。这个寄存器的缺省(或复位)条件在复位下置为$00,表明PA[1∶0]信号作为输入操作。
GPDR可由微代码指令movci,movtc和movfc访问。有关细节请见第2.4.5.9节“通用方向寄存器(GPDR)”。在图2-22中更详细地说明了GPDR。
(2.3.10)IDR指针寄存器(IPR)
IDR指针寄存器(IPR)132是在Run方式(R/S=1)期间为广播操作确定IDR地址的寄存器。这个寄存器中所包含的值指明当广播传送启动时传送的起始IDR单元。IPR可具有范围从零(IDR中的第一个单元)到63(IDR中的最后一个单元)的值。当复位时该寄存器的值为0,表明在Run方式期间接收数据的第一个IDR的单元是IDR[0]。
IPR寄存器以IPR寄存器的一个内部版本作为影子。这个影子寄存器允许在该IPR影子寄存器的值被修改,以把数据放进IDR时,在IPR中规定的初始值保持不改变。每次把数据装入IDR中IPR影子寄存器的内容就增加。该影子寄存器增加的数量取决于ILMR寄存器的内容。
在下述条件下从IPR向IPR影子寄存器加载:
1.当它被加载时;
2.当一条done指令被执行时;
3.当使用IDRC寻地方式时;和
4.当RESET信号被触发时(1→0→1)。
规定IDRC作为矢量指令中的源操作数清除IDR的有效位,并且使用IDR的内容作为矢量源。请参考表2.36中对可能的矢量寄存器源的列举。
硬件限制:当进行超过IDR的界限的写尝试时,或者当对IPR影子寄存器的正常增加使其大于$3F时,将设置一个内部标志,它表明“IDR满”。所有后继的对IDR的Run方式写(由于writel、vwritel和外部写)都被忽视。每当一条done指令被执行、IDRC寻址方式被使用或RESET信号被认定时,该标志被请除。
IPR类似就用于主机方式流操作的OAR1寄存器。请参见第3.5.2.2节关于ILMR怎样影响IDR输入变址的内容。图2-23中更详细地说明了IPR。
对于Run方式输入变址期间IDR、IPR、ICR和ILMR如何一起工作的描述,请见第2.3.6节“端口控制寄存器(PCR)”中对FM位的描述。IPR可用微代码指令movci,movtc和movfc存取。有关细节请参阅第2.4.5.10节“IDR指针寄存器”。
(2.3.11)IDR计数寄存器(ICR)
IDR计数寄存器(ICR)136是用来确定在Run方式(R/S=1)流式写操作期间由IDR接受的字节数量的寄存器。ICR可具有从0到63这个范围的值,为0的值有示1个字节将被写入IDR,63表示64个字节将被写入IDR。如果需要把0个字节装入IDR,端口控制寄存器(PCR)的端口抽头可被断开。ICR用于输入变址(PCR:FM=0)期间和输入标记(PCR:FM=1)期间的两种情况。在复位后该寄存器的值为63,表示当Run方式流式写开始时,64个字节将被接受到IDR中。
ICR寄存器从ICR寄存器的一种内部版本作为影子。这个影子寄存器允许在该ICR影子寄存器的值被修改以把数据放进ICR时,在ICR中规定的初始值保持不改变。每次把数据装入IDR时,ICR影子寄存器的内容被减小。该影子寄存器减小的数量取决于ILMR寄存器的内容。
在下述条件下从ICR向ICR影子寄存器加载:
1.当它被加载时;
2.当执行done指令时;
3.当使用IDRC寻址方式时;和
4.当RESET信号被触发时(1→0→1)
硬件限制:当进行超过IDR的界限的写尝试时,或者当对ICR影子寄存器的正常减小使其小于$00时,将设一个内部标志,它表明“IDR满”。所有后继的对IDR的Run方式写(由于writel、vwritel或外部写)都将被忽视。每当一条done指令被执行、IDRC寻址方式被使用、或者RESET信号被认定时,该标志被清除。
ICR类似用于Stop方式流式操作的DCR1寄存器。该影子寄存器减小的数量由ILMR寄存器的内容控制。同样可见第3.5.2.2节关于ILMR怎样影响IDR变址的内容。
关于在Run方式输入变址期间IDR、IPR、ICR和ILMR如何一起工作的描述,请参见第2.3.6“端口控制寄存器(PCR)”中对FM位的描述。ICR可被微代码指令movci、movtc和movfc访问。更多细节请参阅第2.4.5.11“IDR计数寄存器(ICR)”。图2-24中较详细地说明了ICR。
(2.3.12)IDR单元屏蔽寄存器(ILMR)
IDR单元屏蔽寄存器(ILMR)134确定在Run方式(R/S=1)期间数据是怎样装入IDR的。在随机存取方式下,IDR指针寄存器不被使用(IDR里的每个单元必须被明确地定址)。在流式写操作期间,屏蔽位确定哪些内部生成的IDR地址位是“不必关心的”。ILMR还象一个指示器那样工作,指明当接收流式写数据时IDR指针寄存器(IPR)需要增加多少。
控制ILMR操作的两条规则如下述:
·ILMR的位在内部生成的地址上起“不必关心”的作用。这意味着数据被装入到那些在地址“不必关心”时所选定的IDR单元之中。一个为00110000的ILMR值不必关心IDR地址的位4和位5,它意味着同样的数据被送到IDR单元00000000、00010000、00100000和00110000。
·IPR是按在ILMR中最低有效位“0”的单元来增量的。即,如果最低有效0是在位单元0,那么每一次数据被放进IDR时,IPR将以按20,或1,来递增。如果最低有效“0”是在位单元3,则每次IPR将按8递增。
请见第3.5.2.2节“采用ILMR的例子”中有关采用ILMR的例子。还请阅第2.3.6节“端口控制寄存器(PCR)”关于在Run方式期间加载IDR的更详细描述。
ILMR可由微代码指令movci,movtc和movfc访问。有关细节请参阅第2.4.5.12节“IDR单元屏蔽寄存器(ILMR)。图2-25较详细地说明ILMR。
(2.3.13)IDR初始偏移寄存器(IOR)
初始偏移寄存器(IOR)130是一个只在Run方式(R/S=1)工作的寄存器,它包含对联合机在把数据放进IDR之前必须等待的有效数据数(即时钟周期数)的计数。例如,如果IOR包含$0F,该装置应让15个数据通过,第16个数据应放入IDR中由IPRILMR规定的单元。一旦这个计数被满足,直到下一个Run方式流式写操作之前,这个寄存器的内容一直是被忽视的。
IOR可由微代码指令movci,movtc和movfc访问。更多细节请见第2.4.5.13节“IDR初始偏移寄存器(IOR)”。图2-26中IOR得到更详细说明。
(2.3.14)主机流选择寄存器(HSSR)
主机流选择寄存器(HSSR)100允许主机去定义在Stop方式(R/S=0)期间流式操作在何处和如何影响联合机。表2.13提供有关HSSR的更多信息。
HSSR的前4位(LS[3∶0]用来选择在流传送期间数据传送将来源于或写入哪个联合机的逻辑空间。因为流式存取期间无显式地址向联合机传送,所以存取地址是由HSSR寄存器、偏移地址寄存器(OAR1和OAR2)和深度控制寄存器(DCR1和DCR2)所指定的。表2.14表示由LS位定义的单元。图2-27对HSSR进行了更详细的说明,其中,位0-LS0:逻辑地址选择位#0;位1-LS1:逻辑地址选择位#1;位2-LS2:逻辑地址选择位#2;位3-LS3:逻辑地址选择位#3;位4-HSPO:主机流端口位#0;位5-HSP1:主机流端口位#1。
主机流选择端口位(HSP[1∶0])控制在主机方式流操作期间数据如何传送进和传送出这个装置。这些位的操作很象端口控制寄存器(PCR)中的开关位和抽头位,但是只用于主机方式存取。这些位允许主机主式传送而不干扰联合机阵列的运行期间配置(如由开关位和抽头位定义的)。
当HSP[1∶0]=00,该装置表现得仿佛没有信息呈现。HSP位和XCI/XCO控制线相结合一起工作,只有当这些控制线处于数据传送的正常状态时数据才会呈现。HSP位不控制呈现在北端口的流读数据是否会出现在南端口,也不控制呈现在西端口的流式读数据是否会出现在南端口,也不控制呈现在西端口的流式读数据是否会出现在东端口。这只是控制该装置发源的数据应向哪里发送的一种方法。
(缺省值)当HSP[1∶0]=01时,主机流数据通过南端口传送。对于主机读操作,该装置将来自所有被访问的单元的数据提供给南端口。对于主机写存取,该装置从南端口接收所有的数据。
当HSP[1∶0]=10时,主机流数据通过东端口传送。对于主机读操作,该器件将来自所有被访问的单元的数据提供给东端口。对于主机写存取,该器件从东端口接收所有的数据。
HSP[1∶0]=11则被保留以供将来使用。这个编码使联合机能与在HSP[1∶0]=00时相同地运行,但是Motorola(摩托罗拉)公司保留在任何时候改变该编码的权力(即,请使用HSP[1∶0]=00,而不要依赖HSP[1∶0]=11)。表2.15提供了关于HSP位的更多信息。
(2.3.15)主机流偏移寄存器(HSOR)
主机流偏移寄存器(HSOR)222用来控制在Stop方式(R/S=0)期间对联合机的流写入存取。图2-28中较详细地说明了HSOR。该16位寄存器里所含的值表明从第一块数据抵达该装置的时刻(在XCI被认定后的一个周期)到该装置开始接收数据的时刻之间的延迟。HSOR和DCRx寄存器一起工作,来控制数据偏移以及被写入联合机的流的持续时间。
例如,设有4个联合机(具有如图2-29所示的HSOR和DCR1的值)和一个含有20个数据的流,将数据如图2-29所示那样地装入到联合机组之中。
作为第二个例子,有可能重新排列联合机组接收数据的次序,这样仿佛重新安排了芯片的次序。并且如图2-30所示,甚至还可能使一个链中多于一个的联合机接收相同的数据。
(2.3.16)北-南保持寄存器(NSHR)
北-南保持寄存器(NSHR)90含有关于北和南端口之间最新广播传送的状态和数据。表2.16提供有关NSHR的更多信息。图2-31中更详细地说明了NSHR,其中位0-V为有效位;1-DIR为方向位;位2-SRC为源指示。在Run方式(R/S=1)期间,每一次数据写入北端口或南端口,NSHR的内容都要被更新。当联合机置为Stop方式(R/S=0)时,该寄存器含有北和南端口之间的最新的Run方式流写的状态。当端口控制寄存器(PCR)中的北-南开关(NSS)闭合(PCR:NSS=1)并且在Run方式期间数据被写入北或南端口中的一个时,该寄存器的内容被改变。该寄存器的内容与PCR的北抽头(NT)和南抽头(ST)的设置无关。
如果NSS=0并且数据写入南或北端口,则NSHR将不被改变。NSHR的内容也与PCR中的NT或ST的设置无关。
NSHR的V位表明是否NSHR的数据字节含有有效信息。
DIR位表明数据的方向。如果数据是一个微代码writen、writes、vwriten或vwrites的结果,该位表明数据是从那个端口写入的。如果数据是通过该装置被写入的外部数据的结果,该位就指明数据是从哪个端口写入的。
SRC位表明NSHR中含有的数据是否是微代码writen,writes,vwriten或vwrites的结果。如果该位不被设置,该数据是通过该器件的对某一端口外部写的结果。
(2.3.17)东-西保持寄存器(EWHR)
东-西保持寄存器(EWHR)92含有关于东和西端口之间最新广播传送的状态和数据。表2.17提供有关EWHR的更多信息。图2-32中更详细地说明了EWHR,其中位0-V为有效位;位1-IDR为方向位;位2-SRC为源指示。在Run方式(R/S=1)期间,每一次数据写入东端口或西端口时,EWHR的内容都被更新。当联合机被置入Stop方式(R/S=0)时,该寄存器含有东和西端口之间的最新的Run方式流写的状态。当端口控制寄存器(PCR)中的东-西开关(EWS)被闭合(PCR:EWS=1)、并且在Run方式期间数据被写入东和西端12中的一个时,该寄存器的内容被改变。该寄存器的内容与PCR的东抽头(ET)和西抽头(WT)的设置无关。
如果EWS=0并且数据被写入东和西端口,EWHR将不被改变。EWHR的内容也与PCR的ET或WT的设置无关。
EWHR的V位表明是否EWHR的数据字节含有有效信息。
DIR位表明数据的方向。如果数据是一个微代码writee,writew、vwritee或vwritew的结果,该位表明数据是从哪个端口写入的。如果数据是通过该装置写入的外部数据的结果,该位将表明数据是从那个端口写入的。
SRC位表明EWHR里含有的数据是否是微代码writee,writew,vwrittee或vwritew(和内部写)的结果或者该数据是否是通过该器件的对某一端口的外部写的结果。
(2.3.18)移位地址寄存器#1(OAR1)
偏移地址寄存器#1(OAR1)96用来在Stop方式(R/S=0)流存取期间指明与由HSSR的LS[3∶0]所规定的逻辑空间有关的起始内部地址。图2-33中较详细地描述OAR1。
OAR1由OAR1的一个内部版本作为影子。这个影子寄存器允许在OAR1中的规定的初始值保持不改变,而与此同时OAR1影子寄存器的值被修改以将数据置入联合机内。每次把数据装入联合机时OAR1影子寄存器的内容就被增加。
在下述条件下OAR1影子寄存器从OAR1被加载:
1.当它被加载时;
2.当联合机选择为流存取时;
3.当RESET信号被触发时(1→0→1)。
一维阵列包括输入数据寄存器(IDR)、输入标记寄存器(ITR)、指令高速缓冲存储器(IC)、矢量数据寄存器(V[0]到V[7])、和矢量进程控制寄存器(VPCR)。
当执行进入二维阵列的流式存取时OAR1也被使用。在这种情况下,它被用来对阵列的第一维(列变址)进行变址。唯一的二维阵列是系数存储器阵列(CMA)。
(2.3.19)深度控制寄存器#1(DCR1)
深度控制寄存器#1(DCR1)97的内容用在对所有一维和二维阵列的Stop方式流式存取期间。内部地址生成逻辑利用DCR1的内容确定流传送中所传送的字节数量(在由HSSR的LS[3∶0]所定义的逻辑空间中的一个之中)。图2-34较详细说明了DCR1。
DCR1由DCR1的一个内部版本作为影子。这个影子寄存器允许在DCR1内的规定的初始值保持不改变,而与此同时,DCR1影子寄存器中的值正在改变以将数据放入联合机之中。每次把数据装入联合机时DCR1影子寄存器的内容就被减小。
在下述条件下从DCR1向DCR1影子寄存器加载:
1.当它加载时;
2.当联合机选择为流存取时;
3.当RESET信号被触发时(1→0→1)。
对于一维阵列,在控制被传送给联合机链中下一个联合机之前该寄存器控制在流操作期间写入或读出的单元数量。DCR1的偏移为1,因此DCR1=0将准确地流动1个字节,而DCR1=63将流动64个字节。为使一个联合机不参与流式传输操作,设置HSSR:HSP[1∶0]=00。
当流式传输整个随机存取映象时,将跳过映象中的孔,在孔处没有有用的寄存器。这样DCR1+OCR1将不总是等于在整个映象情况下的结束地址。跳过的地址列举在表2-18中。
该寄存器的复位值为$14FF,这意味着如果在流式操作出现前DCR1不被改变,那么联合机将接收或供给其大小等于随机存取映象减去不使用单元的字节流。
一维阵列包括输入数据寄存器(IDR)、输入标记寄存器(ITR)、指令高速缓冲存储器(IC)、矢量数据寄存器(V[0]到V[7])、和矢量进程控制寄存器(VPCR)。
当执行进入二维阵列的流式存取时也使用DCR1。在这种情况下,它被用来控制置入到各行的项的数量。唯一的二维阵列是系数数存储器阵列(CMA)。
对Stop方式(R/S=0)流式操作,当:1)由DCR1和DCR2规定的数据量被传送完时;或2)内部地址发生器企图流越HSSR:LS[3∶0]所定义的空间时,XCO信号被认定。
(2.3.20)偏移地址寄存器#2(OAR2)
仅用于二维阵列寻址,偏移地址寄存器#2(OAR2)98,和OAR1寄存器一起,控制在主机方式(R/S=0)流存取期间写入式读出的第一行的位置。该寄存器的复位值是$0,这意味着,如果在流操作出现之前该寄存器不被改变,对CMA的流存取将从第一行(#0行)开始。该寄存器的最大值为63($3F),归因于这个事实即CMA是最大(并且是唯一)的二维阵列,因而在y方向只有64个位置。任何写进该寄存器的大于$3F的值将产生一个模64的值。
OAR2由OAR2的一个内部版本作为影子。这个影子寄存器允许在OAR2中的规定的初始值保持不改变,而与此同时该OAR2影子寄存器的值正在修改以将数据放入联合机之中。每次把数据装入联合机时OAR2影子寄存器的内容就被增加。图2-35中较详细地说明了OAR2。
在下述条件下OAR2影子寄存器被从OAR2加载:
1.当被加载时;
2.当联合机选择为流存取时;
3.当RESET信号被触发时(1→0→1)。
请记住OARx和DCRx只是Stop方式寄存器,它们不用于Run方式操作中。
(2.3.21)深度控制寄存器#2(DCR2)
仅用于二维阵列,深度控制寄存器#2(DCR2)99,和DCR一起,在把控制传给链中的下一个联合机之前,控制流式操作期间能被写入和读出的二维阵列中位置的数量。该寄存器的复位值的$3F,或63,这意味着如果在对CMA的流传送发生前该寄存器不被改变,CMA所有的64行(在单个列里)都将被访问。通过认定XCO信号将控制传给联合机链中的下一个联合机。注意DCR2的偏移为1,这样DCR2=0将访问CMA的一行。图2-36中较详细地说明了DCR2。
对Stop方式(R/S=0)流式操作,当:1)由DCR1和DCR2规定的数据量被传送完时;或2)内部地址发生器企图流越HSSR:LS[3∶0]所定义的空间时,XCO信号被认定。
在Stop方式(R/S=0)中,在流式传送的起点(当联合机的ROW和COL被选中时),OAR1、DCR1、OAR2和DCR2被传送给影子寄存器。这些影子寄存器中所含有的值被使用直到联合机不再被选中为止。换言之,如果在流操作中OAR或DCR寄存器被修改,在当前的传送尚未终止的新的流操作尚未启动之前这个改变不会被反映来。
DCR2由DCR2的一个内部版本作为影子。这个影子寄存器允许在DCR2中的规定初始值保持不改变,而与此同时DCR2影子寄存器的值正在改变以把数据装入联合机之中。每次数据装入联合机时DCR2影子寄存器的内容都被减小。
在下述条件下DCR2影子寄存器从DCR2被加载:
1.当它被加载时;
2.当联合机被选择为流存取时;
3.当RESET信号被触发时(1→0→1)。
请记住OARx和DCRx只是Stop方式寄存器,它们不用于Run方式操作期间。
关于OAR1、DCR1、OAR2和DCR2如何用于流式存取方式的描述,请见第3.5.1.2节“主机流式存取方式”。
(2.3.22)中断状态寄存器#1(ISR1)
中断状态寄存器#1(ISR1)342可被主机用来确定由联合机产生的与流相关的中断的起因。ISR1的位和中断屏蔽寄存器#1(IMR1)中的位具有一一对应的关系。ISR1的位的设置与对应的(IMR1)位无关。这允许主机对条件进行轮询,而不是使这些条件生成外部中断。当ISR1被主机读过后,所有的位被清零。以这种方式,ISR1含有从最近的一次读后算起的任何状态变化。在图2-37中较详细说明了ISR1,其中,位0-SVI为标量溢出中断;位1-VVI为矢量溢出中断;位2-SDI为标量被零除中断;位3-VDI为矢量被零除中断;位4-PCI为越界中断;位5-IOI为非法操作码中断,位6-PEI为端口错误中断;位7-ICI为基于指令的IDR争用中断。表2-19给出有关ISR1的更多信息。
如果SVI位被设置,则标量机中微代码算术运算已引起溢出。
如果VVI位被置位,则矢量机中微代码算术运算已引起溢出。
如果SDI位被置位,则标量机中的微代码除法运算已引起被零除。
如果VDI位被置位,则矢量机中微代码除法运算已引起被零除。
如果PCI位被置位,说明程序计数器(PC)已超出它的界限而微定序器开始在数据空间里执行。这中机制类似于微处理机存储管理部件的页面异常。
如果IOI位被置位,说明在指令流中检测到一个非法操作码。
如果PEI位被置位,说明一个在端口操作期间错误被查出。为确定端口错误的原因,联合机端口监视寄存器(APMR)应被读出。
如果ICI位被置位,则出现了基于指令的IDR争用。这种条件出现于在执行vstore、vwritel或writel指令的同时外部流写试图加载IDR的时候。
该寄存器所包含的位的值和联合机中断屏蔽寄存器#1(IMR1)所含有的位的值一起将最终确定何时和是否要生成一个外部中断。
(2.3.23)中断屏蔽寄存器#1(IMR1)
中断屏蔽寄存器#1(IMR1)344和中断状态寄存器#1(ISR1)一起工作以开启或禁止外部中断。如果一个内部条件使将ISR1中一个位被置位,而且IMR1中对应的位(或多个位)是被设定的,则一个外部中断将生成。图2-38中较详细地说明IMR1,其中,位0-SVIM为标量溢出中断屏蔽;位1-VVIM为矢量溢出中断屏蔽;位2-SDIM为标量被零除中断屏蔽;位3-VDIM为矢量被零除中断屏蔽;位4-PCIM为PC越界中断屏蔽;位5-IOIM为非法操作码中断屏蔽;位6-PEIM为端口错误中断屏蔽;位7-ICIM为基于指令的IDR争用中断屏蔽。表2.20给出有关IMR1的更多信息。
如果SVIM被置位,标量溢出将不产生外部中断。
如果VVIM被置位,矢量机溢出将不产生外部中断。
如果SDIM被置位,标量机被零除将不产生外部中断。
如果VDIM被置位,矢量机被零除将不产生外部中断。
如果PCIM位被置位,PC越界将不产生外部中断。相反,如果PCM位被置位,PC越界将产生一个外部中断。
如果IOIM位被置位,对非法操作码的执行将不产生外部中断。
如果PEIM位被置位,一个端口错误将不产生外部中断。如果PEIM位不被置位,任何与端口有关的错误都将产生外部中断。PEIM位的缺省设置为0。对可能引起外部中断的端口条件的列表请见表3.6。
如果ICIM位被置位,基于指令的IDR争用将不生成外部中断。如果ICIM被清零,基于指令的IDR争用将产生一个外部中断,这种条件出现于当在执行vstore、vwritel或writel指令的同时外部流写试图加载IDR的时候。
(2.3.24)中断状态寄存器#2(ISR2)
中断状态寄存器#2(ISR2)346可被主机用来确定是否标量或矢量机的算术运算引起中断条件。该寄存器和中断屏蔽寄存器#2(IMR2)一起将最终确定是否要产生一个外部中断。图2-39中较详细地说明ISR2,其中位0-HLTI:停止指令中断;位1-SIO:软件中断,#1位;位2-SI1:软件中断;#2位;位3-SI2:软件中断,#2位。表2.21和2.22提供有关ISR2的更多信息。
尽管该寄存器的各个位和联合机的特定并常条件相对应,但应记住中断条件是和异常条件相正交的。
如果HLTI位被置位,表明一条halt指令已被执行。
当一条intr#n指令被执行时,SI[2∶0]位被置位。一条intr#6软件中断将设置SI[2∶0]=110。
(2.3.25)中断屏蔽寄存器#2(IMR2)
联合机中断屏蔽寄存器#2(IMR2)348允许主机屏蔽矢量和标量算术中断。如果IMR2中的一个位被置位,对应的中断条件将不造成外部中断的产生。类似地,当IMR2的各个位清零,对应条件将产生一外部中断。图2-40中较详细说明IMR2,其中位0-HLTM表示停止指令中断屏蔽;位1-SIM0表示软件中断屏蔽,#0位;位2-SIM1表示软件中断屏蔽,#1位;位3-SIM2表示软件中断屏蔽,#2位。表2.23和2.24提供有关IMR2的更多信息。
如果HLTM位被置位,对halt指令的执行将不产生外部中断。相反,如果HLM位不被置位,对halt指令的执行将产生一个外部中断。
SIM[2∶0]位允许一批软件中断被屏蔽掉,最高优先级软件中断是软件中断#7,它是由intr#7指令所生成的。最低优先级软件中断是软件中断#1,它是由intr#1指令所产生的。
(2.3.26)微定序器控制寄存器(MCR)
微定序器控制寄存器(MCR)188控制指令如何和何时由微代码定序器发出。图2-41较详细说明MCR,其中位0-SS表示单步;位1-RSA表示复位SIMD阵列;位2-STKF表示找标记;位3-FLSF表示一级找标记;位4-RELF表示Repeate循环标记;位5-RPLF表示Repeat循环标记;位6-IL表示指令锁定。表2.25和2.26提供有关MCR的更多信息。
SS位允许由微定序器执行单条指令。在各条指令的启动点SS位的状态被查询。如果在一条指令的执行期间SS的状态改变,在下一条指令启动之前它的作用不再发生。在每条指令执行之后,PC递增,并且BUSY信号设置为有效。在R/S信号从1→0→1被触发之前下一条指令将不被执行。
RSA位可被主机用来把联合机复位到一个已知的状态。该位的设置不会清除系数存储器(CMA),也不会影响指令高速缓冲存储器(IC)。可将这个位的设置与再起动指令的操作进行比较(这是不同的)。
STKF位指示CMA中栈的状态。如果栈是空的,则该位具有的值为1。如果CMA栈至少含有一个有效返回地址,STKF具有为零的值。
FLSF位表示FLS寄存器是否当前地含有一个有效的返回地址。如果有,FLSF位将为1,否则的话将为零。
RELF位表示是否一个repeate循环已被启动和被认为是有效的。如果是,RELF位将为1,否则的话它将为零。
RPLF位表示是否一个repeat循环已被启动。如果是,RPLF位为1,否则的话它将为零。
ILF位控制微定序器中指令的执行。当该位被置位时,该微定序器实际上被禁止,而且对R/S信号的触发将不会使PC先行。如果在单步模式期间done或halt指令被执行,ILF位可被联合机置位。这允许带有不同代码长度的多个联合机达到同步,即使是在单步前进时也一样。在该位被置位时,联合机仍能够接收进入IDR的数据也能够通过端口传送数据。为了允许其它指令可被执行,ILF必须被清零。
从图2-42所示的例子可更清楚FLS和栈随着FLSF位和STKF位的操作情况。
当代码块#1正在被执行时,FLS被认为是空的(因为FLSF位为0)而栈不包含返回地址。
当bsrC2被执行时,$0042(紧随bsrC2指令的地址)被放入FLS,PC被设置到标号为C2的地址。
当bsrC3被执行时,$0082被放入栈上。STKF位取用栈上返回地址的最低有效位单元,这样在栈上的实际值为$0083。PC被置到标号为C3的地址。
当bsrC4被执行时,$00A2被放入栈。STKF位取用栈上返回地址的最低有效位单元,其中栈上的实际值为$00A2。PC被置到标号为C4的地址。
当代码块#4里的return被执行时,SP第一次增量,返回地址从栈中拉出。从栈中拉出值的最低有效位是STKF的新值。回想STKF=0意味着CMA仍然含有另一个返回地址,所以下一个return指令可从栈得到返回地址。
当代码块#3的return被执行时,SP再次增量,从栈内拉出返回地址。从栈拉出的值的最低位为1,它是STKF的新值。当STKF=1时,下一条return指令将从FLS得到返回地址。
当代码块#2的return被执行时,返回地址被从FLS(因为FLSF:STKF=1∶0)拉出。然后FLSF被清零,这意味着FLS的内容是无效的。
如果当FLSF为0时一个return被执行,FLS内含有的值被装入PC,即使该FLS值是无效的。
(2.3.27)微定序器状态寄存器(MSR)
微定序器状态寄存器(MSR)350反映联合机微定序器的当前运行状态。图2-43较详细地说明MSR,图中,位0-未使用,位1-R-微定序器运行;位2-EXE0-内部执行状态#0位;位3-EXE1-内部执行状态#1位;位4-EXE2-内部执行状态#2位。表2.27和2.28提供MSR的更多信息。
R位表示当联合机处于Stop方式(R/S=0)中时微定序器是否停止在一条指令正在执行期间。如果一条指令正在执行之中,R位将被置为1。否则的话它将被清零。
EXE[2∶0]位反映联合机的PSTAT信号引脚的当前状态。这允许主机确定当联合机从Run方式(R/S=1)转变为Stop方式(R/S=0)时正在进行那类操作。
(2.3.28)标量进程控制寄存器(SPCR)
标量进程控制寄存器(SPCR)208控制多字节算术和逻辑运算流程,还可用于指示最近的算术运算的状态。图2-44中较详细地说明SPCR,其中位0-SX0为标量执行#0位;位1-SX1为标量执行#1位;位2-SV为标量溢出位;位3-SD为标量溢出方向位。表2.29给出有关SPCR的更多信息。
标量扩充位(SX[1∶0]用来扩充某些算术指令的精度。关于这些位如何设置和它们如何被使用的描述,请见第2.5.19节“对多字节运算的描述”。
标量溢出位(SV)和标量溢出方向位(SD)用来指示在先前的算术运算中溢出的出现,以及若溢出出现,指出溢出发生的方向。
(2.3.29)指令寄存器(IR)
指令寄存器(IR)352是一个16位寄存器,用来保持当前正在执行的指令。当RESET施加到联合机时该寄存器不被改变。图2-45较详细地说明IR。
(2.3.30)指令高速缓冲存储器线路有效寄存器(ICVR)
指令高速缓冲存储器线路有效寄存器(ICVR)354指示指令高速缓冲存储器(IC)的状态和指令高速缓冲存储器标记(ICT0至ICT3)的状态。图2-46较详细地说明ICVR。表2.30提供有关ICVR的更多信息。
如果ICV0被置位,高速缓冲存储器线路#0含有有效的指令。如果该位被清零,高速缓冲存储器#0的内容是不定的。
如果ICV1被置位,高速缓冲存储器线路#1含有有效的指令。如果该位被清零,高速缓冲存储器#1的内容是不定的。
如果ICV2被置位,高速缓冲存储器线路#2含有有效的指令。如果该位被清零,高速缓冲存储器#2的内容是不定的。
如果ICV3被置位,高速缓冲存储器线路#3含有有效的指令。如果该位被清零,高速缓冲存储器#3的内容是不定的。
(2.3.31)程序计数器(PC)
程序计数器(PC)186是一个16位寄存器,它指示当前正在执行的指令在微代码存储器阵列(MMA)中的单元。脱离复位时,在异常指针程序计数器(EPPC)里包含的16位地址被装入PC。图2-47较详细地说明PC。
关于PC如何和指令高速缓冲存储器标记(ICT0-ICT3)一起使用的描述,请见第3.3.4节。关于更详细的有关MMA如何通过CMA规定的描述请见第3.3.2节“CMA和MMA映象”。关于异常指针表的更多信息,请见第2.3.44节“异常指针表”。
(2.3.32)程序计数器界限寄存器(PBR)
PC界限寄存器(PBR)356是一个16位寄存器,其中最低有效位是不被使用的,它包含第一个非指令地址相关的地址。每条指令预取期间,PC对照PBR进行校核。如果PC大于PBR,则存在PC越界条件。如果EMR的PCEM位被置为1(缺省值),则ESR记录该条件,但是不产生异常。如果PCEM=1,该条件记录在ESR中,并且EPOB被装入PC,产生PC越界异常。如果PC小于PBR,PC所指向的指令被装入微定序器以供执行。图2-48较详细地说明PBR。
在调试算法期间PBR是有用的,可把PC限制于特定的最大值。不加RESET,该寄存器以$FFFE的值被初始化,该值表明对PC所有可能值都是有效的(从而实际上禁止PC界限检查)。
(2.3.33)指令高速缓冲存储器标记#0(ICT0)
指令高速缓冲存储器标记#0(ICT0)358用来确定CMA的那一列当前被装入指令高速缓冲存储器(IC)的线路#0。图2-49较详细地说明ICT0。
为了确定高速缓冲存储器的命中或缺失,在执行各条指令之前将ICI0和PC的最高有效字节进行比较。如果PC的最高有效字节不和任何标记寄存器相匹配,那么含有下一条指令(由PC指向)的一条新线路必须装入指令高速缓冲存储器。
如果PC的位7和位6等于00,那么在存在一个缺失时指令的新线路将被装入指令高速缓冲存储器线路#0。ICT0将被装入PC的最高有效字节,而且指令高速缓冲存储器有效寄存器(ICVR)里的高速缓冲存储器线路#0(ICV0)有效位(ICV0)将被设置。
(2.3.34)指令高速缓冲存储器标记#1(ICT1)
指令高速缓冲存储器标记#1(ICT1)360用来确定CMA的那一列目前被装入指令高速缓冲存储器(IC)的线路#1。图2-50里较详细地说明ICT1。
为了确定高速缓冲存储器的命中或缺失,在执行各条指令之前将ICT1和PC的最高有效位字节进行比较。如果PC的最高有效字节不和任何标记寄存器相匹配,那么含有下一条指令(由PC指向的)的一条新线中必须被装入指令高速缓冲存储器。
如果PC的位7和位6等于01,那么当存在一个缺失时指令的新线路将被装入指令高速缓冲存储器线路#1之中。ICT1将用PC的最高有效字节加载,而且指令高速缓冲存储器有效寄存器(ICVR)中用于高速缓冲存储器线路#1的有效位(ICV1)将被设置。
(2.3.35)指令高速缓冲存储器标记#2(ICT2)
指令高速缓冲存储器标记#2(ICT2)362用来从CMA中确定那一列当前被装入指令高速缓冲存储器(IC)的线路#2。图2-51里较详细地说明ICT2。
为了确定高速缓冲存储器的命中或缺失,在执行各条指令之前将ICT2和PC的最高有效位字节进行比较。如果PC的最高有效字节不和任何标记寄存器相匹配,那么含有下一条指令(由PC指向)的一条新线路必须被装入指令高速缓冲存储器之中。
如果PC的位7和位6等于10,那么在存在一个缺失时,指令的新线路将被装入指令高速缓冲存储器线路#2。将把PC的最高有效字节装入到ICT2,而且指令高速缓冲存储器有效寄存器(ICVR)中用于高K倩撼宕娲!飨呗7#2的有效位(ICV2)将被设置。
(2.3.36)指令高速缓冲存储器标记#3(ICT3)
指令高速缓冲存储器标记#3(ICT3)364用来从CMA中确定那一列当前被装入指令高速缓冲存储器(IC)的线路#3。图2-52里较详细地说明ICT3。
为了确定高速缓冲存储器的命中或缺失,在执行各条指令之前将ICT3和PC的最高有效字节进行比较。如果PC的最高有效字节不和任何标记寄存器相匹配,那么含有下一条指令(由PC指向)的一条新线路必须被装入指令高速缓冲存储器之中。
如果PC的位7和位6等于11,那么在存在一个缺失时,指令的新线路将被装入指令高速缓冲存储器线路#3。将把PC的最高有效字节装入到ICT3,而且指令高速缓冲存储器有效寄存器(ICVR)中用于高速缓冲存储器线路#3的有效位(ICV3)将被设置。
(2.3.37)栈指针(SP)
栈指针(SP)366是一个16位寄存器,它指定系数存储器阵列(CMA)中保存子例程返回地址的单元,和指规定使用load/store指令存放子例程局部数据的单元。图2-53中较详细地说明SP。
在RESET时,栈指针以异常指针栈指针(EPSP)的内容被加载,EPSP是位于异常指针表中的寄存器中的一个。关于异常指针表的更多信息请见第2.3.44节“异常指针表”。
(2.3.38)一级栈(FLS)
一级栈(FLS)368允许迅速执行单级子例程调用。当一条子例程转移指令(jsr)被执行时,FLS中含有的值通常将被放置在栈顶。为了消除栈操作所需的时间(在调用期间和返回时),返回地址被放在一级栈寄存器中。图2-54较详细地说明FLS。
如果做出两条不带有插入return指令的bsr指令,第二个jsr被强迫把它的返回地址存入栈上(通过SP引用)。
(2.3.39)重复开始寄存器(RBR)
重复开始寄存器(RBR)180被repeat和repeate指令用来允许快速执行程序的内部循环。图2-55中较详细地说明RBR。当repeat或repeate指令被执行时,PC的值+2被装入RBR。循环结束处(当重复结束寄存器(RER)的值笔当前正在执行的指令地址相匹配时),把RBR的内容装入程序计数器(PC)。
请参阅第2.5.16节“标量机程序流程控制操作”中的repeat和repeate指令。
(2.3.40)重复结束寄存器(RER)
重复结束寄存器(RER)182被repeat和repeate指令使用以允许迅速执行程序的内部循环。图2-56中较详细地说明RER。当repeat或repeate指令被执行时,指令中那个指示循环中最后一条指令的地址被装入RER寄存器,然后将该寄存器中的值和当前正在执地中的指令的地址进行比较。如果比较产生匹配,重复计数寄存器(RCR)的内容递减,若RCR等于零,退出重复循环,若RCR不等于零,RBR的内容被装入程序计数器(PC)并且循环履行另一次重复。
请参阅第2.5.16节“标量机程序流程控制操作”中的repeat和repeate指令。
(2.3.41)重复计数寄存器(RCR)
重复计数寄存器(RCR)184被repeat和repeate指令使用以允许迅速执行程序的内部循环。图2-57中较详细地说明RCR。当repeat(e)指令被执行时,将计数值从该指令(G[0]-G[7])内规定的G寄存器中装入到RCR寄存器之中。RCR控制repeat(e)循环要被执行多少次。每次重复指针寄存器(RBR)和当前执行指令的地址相匹配时,RCR的内容减1。当RCR等于零时,退出该循环。
请参阅第2.5.16节“标量机程序流程控制操作”中的repeat和repeate指令。
(2.3.42)全局数据寄存器(G[0]-G[7])
位于标量机内的全局数据寄存器(G[0]-G[7])302是一组通用数据寄存器。这些寄存器的用途是可互换的,这意味着这些寄存器除被联合机有于通用数据外不被用作任何其它用途。
全局数据寄存器实际上被3个空单元所填充,如图2-58所示。这种填充允许将来的发展而无须改变存储器映象。对这些单元的写被认为是合法操作,两当它们被读时,这些单元给出$00。
(2.3.43)全局指针寄存器(P[0]-P[7])
位于标量处理机中的全局指针寄存器(P[0]-P[7])300是多用途的。它们可用作为数据寄存器,在这种情况下它们完全和全局数据寄存器一样操作。它们还可被用作采用间接形式数据存取的指令中的间接间指针。
全局指针寄存器实际上被3个空单元所填充,如图2-59所示。这种填充允许将来的发展而无须改变存储器映象。对这些单元的写被认为是合法操作,而它们被读时,这些单元给出$00。
(2.3.44)异常指针表
图2-60所示的异常指针表370的寄存器允许主机确定异常事件中联合机的实际反应。
异常指针表被放入主机可访问寄存器映象中,从而小程序(它们足够小以至于适合全部装入指令高速缓冲存储器中)可把全部系数存储器阵列(CMA)分配用于数据存储。
EPPC-(复位初始程序计数器)-当联合机脱离复位时该16位寄存器中含有的值被装入程序计数器(PC)。
EPSP-(复位初始栈指针)-当联合机脱离复位时该16位寄存器中含有的值被装入栈指针(SP)。
EPSV-(标量溢出异常指针)-如果在标量机里出现一个算术溢出,而且如果异常屏蔽寄存器(EMR)中的标量溢出异常屏蔽位(SVEM)是清零的,那么EPSV的内容在下一个时钟脉冲上装入PC。
EPVV-(矢量溢出异常指针)-如果在矢量机里出现一个算术溢出,而且如果异常屏蔽寄存器(EMR)里的矢量溢出异常屏蔽位(VVEM)为零,那么EPVV的内容在下一个时钟脉冲上装入PC。
EPSZ-(标量被零除异常指针)-如果在标量机里出现被零除,并且如果异常屏蔽寄存器(EMR)中的标量被零除异常屏蔽位(SDEM)为零,则EPSZ的内容在下一个时钟脉冲上装入PC。
EPVZ-(矢量被零除异常指针)-如果在矢量机里出现被零除,并且如果异常屏蔽寄存器(EMR)中的矢量被零除异常屏蔽位(VDEM)是清零的,则EPVZ的内容在下一个时钟脉冲上装入PC。
EPOB-(PC越界异常指针)-如果程序计数器(PC)超出PC界限寄存器(PBR)中含有的值,而且如果异常屏蔽寄丰器(EMR)的PC越界异常屏蔽位(PCEM)是清零的,则EPOB所含的值将在下一个时钟脉冲装入PC。
EPIO-(非法操作码异常指针)-如果一个不能由当前版本的联合机实现的操作码被解码,而且如果异常屏蔽寄存器(EMR)的非法操作码异常屏蔽位(IOEM)是清零的,则EPIO的内容在下一个时钟脉冲上装入PC。
EPPE-(端口错误异常指针)-如果出现表3.6中列举的任何一种端口错误异常,而且如果异常屏蔽寄存器(EMR)的端错误异常屏蔽位(PEEM)是清零的,则EPPE所含的值将在下一个时钟脉冲装入PC。
关于开启和禁止异常的更多信息请参见第2.3.4节“异常屏蔽寄存器”。
所有其它异常按图2-61所示的流程图处理。当检测出一种异常时,微定序器把程序计数器(PC)的当前值推进栈。从异常指针表中读出和该异常对应的地址并装入PC。然后,由异常指针指向的异常例程被执行。异常例程通常用rte指令来结束,该指令将使微定序器检索入栈的PC值并回到异常条件之前的位置。
如果在第一个异常被完全处理完之前出现第二个异常,联合机将进入空闲状态,有效地执行nop指令直到联合机被复位。
(2.3.45)输入数据寄存器(IDR)
输入数据寄存器(IDR)18是一个64单元的阵列它保持Run方式的输入数据值。图2-62较详细地说明IDR。在Run方式期间IDR是唯一的外部可写单元。如果端口控制寄存器(PCR)中的抽头位被设置为某一特定端口,并且数据被写进该端口,则该数据将被装入IDR。IDR的各个单元实际为9位宽:8位用来保持实际数据,而第9位为一有效位。
IDR[0]的有效输入数据位(VID位)包含在PE[0]:VPCR中,IDR[1]的VID位包含在PE[1]:VPCR中。当每个数据被写进一个IDR单元时,对应的有效位被设置。有效位用来控制微代码指令的执行。如果IDR中的一个单元被一条微代码指令所存取(读),而对应的有效位没有被设置,那么SIMD控制块将进行拖延直到数据由通过一外部源被写进IDR单位为止。
在Stop方式(R/S=0)期间,可使用随机或流式存取方式中的一种对IDR加载。在Run方式(R/S=1)期间,数据采用流式存取传送,而IDR可使用输入变址或输入标记两种中的一种来加载。端口控制寄存器(PCR)中的FM位被用来确定采取那一种方法(变址或标记)。
关于如何加载IDR的详细说明,请参见第3.5.2节“联合机传送方式”和第3.5.1节“主机传送方式”。有关对VPCR多个位的描述请参见第2.3.47节“矢量进程控制寄存器(VPCR)。
(2.3.46)矢量数据寄存器(V[0]至V[7])
矢量机中各个处理部件含有一组8个矢量数据寄存器(V[0]-V[7])128。在图2-63中较详细地说明这些寄存器。在计算过程中这些寄存器可被用作暂时的或结果的存储器。这些寄存器的使用是可互换的,这意味关这些寄存器除了被联合机用于通用数据外不被用于其它任何用途。
(2.3.47)矢量进程控制寄存器(VPCR)
矢量机的每个处理部件包括一个矢量进程控制寄存器(VPCR)102,它控制多字节的算术和逻辑运算流程。VPCR还可被用来表示最新的算术运算的状态。图2-64对VPCR进行了详细说明,其中位0-VX0为矢量扩充#0位;位1-VX1为矢量扩充#1位;位2-VV为矢量溢出;位3-VD为矢量溢出方向;位4-VT为矢量条件真位;位5-VH为矢量条件史位;位6-VID为输入数据有效位。有关VPCR的更多信息由表2.31提供。
矢量扩充位(VX[1∶0])用来扩充某些算术运算指令的精度。关于怎样设置这些位及怎样用微代码指令使用它们,请参见第2.5节“联合机微代码指令集概述”中的表2.64和第2.5.20节“进程计算控制”。
矢量溢出位(VV)与矢量溢出方向位(VD)用来表示前一算术运算中溢出的发生以及若有溢出发生时所取的溢出方向。对于那些为饱和提供保护的指令,VV则指明饱和是否出现,而VD则表示饱和在哪个方向出现。关于VV与VD位的设置与应用的更完整的说明,请参见第2.5节“联合机微代码指令集概述”中的表2.64。
矢量条件位(VT和VH)允许vif-velse-vif-vendif条件指令在所有处理部件中正常地(并独立地)操作。当处理部件的VT位未被置位(即VT=0)时,整个层(shelf)(处理部件和其64个CMA单元)被认为是不活动的。若一指令的目的地是矢量寄存器(V[0]-V[7])中或CMA中的一个,则该目的地将不被更新。VH位允许条件结构中的velse-vif部分正常操作。这表明了在执行了最后的vendif指令以来,处理部件是否已经拥有if条件语句。
有效输入数据位(VID)表示输入数据寄存器(IDR)中的对应单元是否有效。例如,如果IDR[13]被写,那么在处理部件#13中的VID将被置位(PE[13]:VID=1)。
关于饱和的说明,请参见第2.5.9节“饱和与非饱和运算比较”。要查阅设置VPCR的位的指令,请参见表2.64。
(2.3.48)输入标记寄存器(ITR)
在Run方式下(R/S=1),当数据被写入输入数据寄存器时,输入标记寄存器(ITR)138为其提供一种控制机制。图2-65对ITR作了更详尽的说明。由端口控制寄存器(PCR)中的FM位来控制ITR的应用。当FM位被清零时,使用IDR初始偏移寄存器(IOR),当FM位被置“1”时,使用ITR。
在Run方式数据广播期间,当FM被清零时,输入数据寄存器(IDR)将从数据流中接收升序的、连续的字节,直到控制被传递到下一个联合机。当使用ITR时,IDR可从输入数据流中接收升序、非连续的字节。ITR中所含的值指定了应从该输入采样流中捕捉的采样数量。
使用ITR的注意事项如下:
1.只有在Run方式下(R/S=1)传输数据时,ITR中的内容才被使用。
2.ITR的内容只影响对IDR的传输(即在Run方式期间,IDR为芯片到芯片传输的蕴含目的地)。
3.ITR中应包含升序的值,即标记#2中所含的值应大于标记#1中所含的值,标记#1中所含值应大于标记#0中所含的值。
标记值的最大数目是64(等于IDR的存储单元数)。
这组寄存器并未设计成能支持广义的芯片到芯片的传输,但被设计成能支持非全连网络以及应用接收域概念的网络。
要使用输入标记方式,IPR寄存器必须首先用$0加载,ICR寄存器用$40加载(即有多少个要被写入的标记),然后将标记值流式送入ITR。一旦标记被加载到ITR之中,PCR的FM位可被置位,且该装置将在整个Run方式广播期间便用ITR。
更详尽的说明请参见第3.5.2.1节“输入变址”和第3.5.2.3节“输入标记”。
(2.3.49)指令高速缓冲存储器(IC)
指令高速缓冲存储器(IC)20由4条高速缓存线路组成,其中每条线路分别有32个指令字,图2-65-1对IC作了更详尽的说明。每条指令高速缓存线路拥有其自己的标记和有效位。每条高速缓存线路作为一个矢量从MMA加载,从而在一个单独的时钟周期中都能加载32个指令字。(注意:当系统存储器阵列(CMA)的空间被用来保持指令时,该空间通常叫作微代码存储器阵列,即MMA)。
有关MMA与指令高速缓冲存储器的更多的信息,请参见3.3.1节“指令高速缓存”。
(2.3.50)系数存储器阵列(CMA)
系数存储器阵列(CMA)14是可以包含网络系数、微代码指令和临时数值的64×64阵列。图2-66对CMA作了更详尽的说明。根据主机如何对CMA进行存取,CMA可被视为两维阵列或者为一个线性阵列。以下说明仅适合于联合机处于Stop方式(R/S=0)的情况。关于CMA在Run方式下(R/S=1)是怎样被存取的说明,请参见第3.3.2节“CMA和MMA映象”中关于CMA的说明。
当采用随机存取访问CMA时,CMA表现为一个线性阵列,其地址沿各层的单列向下升序。即,CMA的第一列包含前64个单元,其第二列包含第二64个单元,等等。
当采用流式存取访问CMA时,诸存储单元可被视为二维阵列也可被视为一线性阵列。如果HSSR:LS[3∶0]=0001,这表示CMA作为将被存取的逻辑空间,那么CMA作为一个二维阵列被存取,在这种情况下,OAR1用来表示一特定层中的偏移,OAR2用来表示存取开始于哪一层,DCR1用来表示每层上有多少CMA单元将被存取,DCR2用来表示有多少层被存取。
如果HSSR:LS[3∶0]=1111,表示整个随机存取空间将被存取,则CMA被当作有4096个单元的线性阵列。
包含在CMA中的数据被用来将输入数据转换为输出数据。当进行学习时,它也是CMA中所包含的受到改变的数据。每单元为8位宽,每层与64个单元相关联。
(2.4)联合机可用微代码存取的寄存器
本节所叙述的寄存器是那些在执行SIMD指令集期间可被存取的,因而它们形成了可由主机从外部存取的寄存器子集的寄存器。关于可由主机存取的寄存器的完整说明,请参看第2.3节“联合机的主机可存取寄存器”。
可由SIMD指令集存取及修改的寄存器的数目分成5组:2.4.1节中的输入数据寄存器(IDR)、2.4.2节中的矢量机,寄存器、2.4.3节中的微定序器控制寄存器、2.4.4节中的标量机寄存器及2.4.5节中的联合机控制寄存器。各寄存器组之间的关系示于图2-67。
(2.4.1)输入数据寄存器(IDR)
IDR本身构成一个类型,因为它可用来作为一个矢量源(同时向处理部件提供64个数据),或者作为一个标量源(允许所有处理部件同时存取一个IDR单元)。
IDR包含用于该联合机的输入矢量。这一寄存器可以通过使用寄存器间接寻址方式的微代码指令来存取。即,这些间接指令使用指针寄存器(P[0]-P[7])之一的内容存取IDR中的适当值。
有可能(通过使用微代码指令序列)用两种不同方法之一去存取IDR。存取IDR的一种方法是允许IDR中的单一入口被所有SIMD矢量机的处理部件同时看见,这是IDR的一种标量存取。另一种IDR存取方法是与将IDR看作是与处理部件垂直对准的,从而作为一个矢量来存取它。换句话说,IDR[0]与处理部件#0相关联,IDR[1]将与处理部件#1相关联,等等。用这种方法,必须在任何计算开始前将整个IDR填充,而一旦IDR被填充,整个IDR可被同时处理。VPCR的各VID位包含IDR中的每个存储单元的有效状态。
(2.4.2)矢量机寄存器
下面论述的每个寄存器都可以在矢量机的64个处理部件的每个中找到。图2-68与图2-68-1说明了矢量机寄存器。
(2.4.2.1)系数存储器阵列(CMA)
每个处理部件都可以存取一组64个(8位)CMA存储单元,这些单元用来为每个处理单元存储映象系数。CMA可通过利用全局指针寄存器(P[0]-P[7])间接存取。这类间接寻址的语句可在第2.5.3节“微代码指令格式”中找到。应该注意,使用寄存器间接寻址方式将引起所有处理部件索引同一个CMA列。关于CMA的更多的信息,请参见第2.3.50节。
(2.4.2.2)矢量数据寄存器(V[0]-V[7])
每个处理部件都包括一组在计算进程中可使用的8个(8位)通用寄存器,有关矢量数据寄存器的更多的信息,请参见第2.3.46节。
(2.4.2.3)矢量进程控制寄存器(VPCR)
VTCR包含来自前次矢量ALU运算的条件/处理位,以及控制矢量机中目的寄存器的加载的位。有关这些位的列表请参见表2.32。有关VPCR的更多的信息请参看第2.3.47节。
(2.4.3)微定序器控制寄存器
图2-69说明微定序器寄存器。
(2.4.3.1)指令寄存器(IR)
这个16位寄存器包含当前正在执行的微代码指令。当存取指令时用到它,但它不能用作为一条指令的一个操作数。
(2.4.3.2)程序计数器(PC)
这个16位寄存器保持正在执行的微代码指令的地址。该地址用来从指令高速缓冲存储器(IC)中获得一个新的微代码指令字,每次对CMA或IC的存取(使用PC)都被认为是一个字节的存取,因此PC总是以2递增,有关PC的更多信息请参见第2.3.31节。
(2.4.3.3)栈指针(SP)
栈指针用来完成进入CMA的数据进栈操作。在子例程的操作中该寄存器(与FLS一起)为子例程的调用与返回提供了一种机制。在load/store操作中,它用来作为存取数据操作数的基地址指针。注意:栈操作被认为是数据传送操作,因此是被存储在CMA中而不是在指令高速缓冲存储器中的。SP总是指向第一个自由存储单元。在完成一条POP指令(上托指令)时,SP被增加,然后完成数据存取。在完成push指令(推入指令)时,数据首先被放在栈中,然后SP被减小。
(2.4.3.4)一级栈(FLS)
FLS保持用于子例程调用的一级返回PC。该寄存器的使用为只有一级深度的子例程提供较快的调用与返回访问。对于嵌套子例程的调用,第一次调用的返回地址存储在FLS中,且所有随后的调用将使它们各自的返回地址推入栈中(它是由SP寄存器所指向的)。有关FLS的更多的信息请参看第2.3.38节。
(2.4.3.5)重复开始寄存器(RBR)
当执行repeat(e)指令时用到RBR,它保持跟在repeat(e)之后的指令地址。当repeat(e)指令执行时,该寄存器被自动加载,当到达repeat(e)循环的底部(PC==RER)时,该寄存器的内容被装入程序计数器(PC)之中。有关RBR的更多的信息,请参见第2.3.39部分。
(2.4.3.6)重复结束寄存器(RER)
在执行repeat(e)指令时用到RER。RER包含repeat(e)循环中最后一条指令的地址。如果重复计数寄存器(RCR)不等于零,每次PC==RER时,RCR都被减小,且包含在RBR中的值被装入PC。有关RER的更多的信息,请参见2.3.40节。
(2.4.3.7)重复计数寄存器(RCR)
在执行repeat(e)指令时用到RCR。该寄存器包含被执行的repeat(e)循环的次数,当该寄存器装入0时,repeat(e)指令与RER所指定的地址之间的指令被越过,有关RCR的更多的信息,请参见第2.3.41节。
(2.4.4)标量机寄存器
SIMD标量机寄存器是那些能够被标量机存取和修改的寄存器。图2-70对标量机寄存器作了更详尽的说明。在这些寄存器中包含的值对所有SIMD单元的操作起作用。因为对于SIMD矢量机中的所有64个处理部件有一个单一的SIMD标量机,所以只有每个SIMD标量机寄存器的一个单一的一套。
(2.4.4.1)全局指针寄存器(P[0]-P[7])
这组8个(8位)寄存器可包含用来选择IDR或CMA中的寄存器的地址。这些寄存器也可以用作标量算术运算的通用数据寄存器。
(2.4.4.2)全局数据寄存器(G[0]-G[7])
一组8个(8位)通用数据寄存器,它们可保持全局计算值,或可保持SIMD矢量机的特定处理部件专用的数据。
(2.4.4.3)标量进程控制寄存器(SPCR)
SPCR控制标量机中的多字节算术运算流程,有关该寄存器中各位的说明,请参见表2.33。
(2.4.5)联合机控制寄存器
下面叙述的寄存器是那些使用movci、movtc、movfc指令可读(R)或可读写(R/W)的寄存器。用来存取这些寄存器的地址等价于表2.5中出现的寄存器的随机存取地址。图2-71对标量机寄存器作了更详尽的说明。
(2.4.5.1)联合机标识寄存器((AIR)
AIR是包含装置标识号的只读寄存器,联合机程序可确定装置类型(因此可确定装置特定的配置)。当使用movfc指令时,该寄存器的地址是$0。有关AIR的更多的信息请参见第2.3.1节。
(2.4.5.2)算术运算控制寄存器(ACR)
ACR用于控制矢量及标量机中的算术运算。VSGN与SSGN位控制矢量与标量机是否执行带符号的或不带符号的算术运算。在使用movci、movtc与movfc时,这一寄存器的地址为$1。有关ACR的更多信息,见2.3.2节。
(2.4.5.3)异常状态寄存器(ESR)
异常状态寄存器的各位记录所有未决异常的发生,联合机异常模型是平直的(同时只处理一个异常)且是分优先级的(优先级较高的异常先于优先级较低的异常得到处理)。当PEE位被置“1”时,则表示发生了端口错误异常。当IOE位被置“1”时,则表示发生了非法操作码异常。当PCE位被置“1”时,则表示发生了PC越界异常。当VDE和SDE位被置“1”时,则分别表示在矢量与标量机中发生了被零除异常。当VVE与SVE位被置“1”时,则分别表示在矢量和标量机中发生了溢出异常。当使用movfc时该寄存器地址是$2。有关ESR的更多的信息,请参见第2.3.3节。
当执行rte指令时,如果EMR中的对应屏蔽位被清零,对应于正在处理的异常的位被清零。也就是说,对ESR中一位清零的唯一途径是执行一个rte指令(有望来自异常处理例程的内部)。进入异常处理例程的唯一方法是用于:1)发生一个异常,2)EMR中的对应屏蔽位被清零。这种功能允许异常被“堆叠”(其中多个异常可为待决的,而在任何一次都只处理一个异常)。这种机制还允许那些被忽略的异常的状态能够得以保持。
(2.4.5.4)异常屏蔽寄存器(EMR)
异常屏蔽寄存器允许微代码指定哪些异常要被处理,哪些异常要被忽略。当PEEM位被置“1”时表示端口错误将不产生异常;IOEM位被置“1”时表示非法操作码将不产生异常;PCEM位被置“1”时表示PC越界将不产生异常;VDEM和SDEM位被置“1”时分别表示在矢量与标量机中被零除将不产生异常;而VVEM与SVEM位被置“1”时分别表示在矢量与标量机中的溢出将不产生异常。当使用movci、movtc、movfc指令时该寄存器的地址是$3。有关EMR的更多的信息请参见2.3.4节。
(2.4.5.5)处理部件选择寄存器(PESR)
PESR控制参与drotmov指令或者dsrot指令的最后处理部件。当使用movci、movtc和movfc指令时该寄存器的地址是$4。有关PESR的更多的信息请参见2.3.5节。
(2.4.5.6)端口控制寄存器(PCR)
PCR控制联合机的四个端口上开关与抽头位置的设定。当在Run方式中数据进行芯片到芯片的传输时,该寄存器还允许微代码确定怎样填充TDR。当使用movci、movtc和movfc指令时该寄存器的地址是$5。有关PCR的更多的信息请参见第2.3.6节。
(2.4.5.7)联合机端口监视寄存器(APMR)
APMR使微代码能够确定端口错误原因。该寄存器通常只在异常处理过程中使用。当使用movci、movtc和movfc指令时该寄存器地址为$6。有关APMR的更多的信息请参见2.3.7节。
(2.4.5.8)通用端口寄存器(GPPR)
GPPR是一个控制PA[1∶0]信号引脚的状态的两位寄存器。当使用movci、movtc和movfc指令时它的地址是$7。有关GPPR的更多信息请参见2.3.8节。
(2.4.5.9)通用方向寄存器(GPDR)
GPDR控制PA[1∶0]信号引脚的方向,当使用movci、movtc和movfc指令时它的地址为$8。有关GPDR的更多信息请参见第2.3.9节。
(2.4.5.10)IDR指针寄存器(IPR)
IPR在数据广播期间控制数据被放在IDR中的什么地方。该寄存器的复位值是$00,它表示如果该寄存器被改变之前数据被广播,该数据将从IDR[0]单元开始送入IDR。当使用movci、movtc和movfc指令时,该寄存器的地址是$9。有关IPR的更多的信息请参见第2.3.10节。
(2.4.5.11)IDR计数寄存器(ICR)
ICR规定在数据广播期间将由这一部分接收的数据的最大数量。当使用movci、movtc和movfc指令时该寄存器的地址为$A。有关ICR的更多的信息请参见第2.3.11节。
(2.4.5.12)IDR单元屏蔽寄存器(ILMR)
ILMR与IPR一起使用来确定哪些IPR地址位是“不必关心”的,这使广播期间数据能在IDR中被复制。当使用movci、movtc和movfc指令时该寄存器的地址为$C。有关ILMR的更多信息请参见第2.3.12节。
(2.4.5.13)IDR初始偏移寄存器(IOR)
IOR允许数据在广播开始时被忽略。它的复位值是$0000,这意味着在广播开始时IDR被加载而不忽略任何数据。一旦所规定的字节数被越过,装入IDR的字节将代表一个来自广播的相连数据流,该寄存器仅在Run方式流写入操作期间被使用。更具体地说,它仅在输入变址方式时才使用(PCR:FM=0)。请将此与第2.3.12节中叙述的输入标记(PCR:FM=1)的情况加以比较。由于它是一个16位寄存器,因此必须分两部分寻址。当使用movci、movtc和movfc指令时,该寄存器的MSB(最高有效位)地址为$E,LSB(最低有效位)地址为$F。有关IOR的更多信息请参见第2.3.13节。
(2.5)联合机微代码指令集概述
本节叙述可用来为联合机的操作编程的命令。在第2.4节“联合机可用微代码可存取的寄存器”中,叙述了联合机微代码程序员可利用的寄存器。本节将叙述利用这些寄存器可完成的实际操作。
(2.5.1)指令类型
指令构成一套完成各种各样操作的工具。表2.34给出了指令和指令类型的一览表。
(2.5.2)使用的记号
表2.35中所示的记号在本节中自始至终使用。
(2.5.3)微代码指令格式
本节叙述用来为联合机建立微代码指令的字段。对于所有一元指令(单操作数指令,如bcnt sregD)来说,所指定的寄存器既作为该指令的源寄存器的作为目的寄存器。对于所有二元指令(双操作数指令,如add sregS,sregD),所指定的第一寄存器作为该操作的一个源,而所指定的第二寄存器则既作为该操作的源寄存器又作为该操作的目的寄存器。
(2.5.3.1)数据格式
矢量与标量机的基本数据量为一个字节。以速度损失为代价提供了将数据大小扩充为多字节算术运算的能力。对于其他格式(如浮点格式),则要求使用者使用部分CMA作为暂存存储器。
(2.5.3.2)寄存器选择
vreg1、vreg2和sreg字段定义微代码操作中所使用的矢量与标量机中的寄存器组。各名称vreg1、vreg2和sreg不含有源信息或目的地信息,它们简单地意味着表达矢量与标量机中的寄存器组。由vreg1表达的一组寄存器在表2.36中给出,由vreg2表达的一组寄存器在表2.37中给出,由sreg表达的一组寄存器在表2.38中给出。
(2.5.4)栈指针的约定
联合机将一个栈指针(SP)寄存器用于子例程调用和异常处理。以下给出被用于SP寄存器的约定。当数据放到栈上时,SP寄存器被减小;而当数据从栈中取出时,SP寄存器增大(即分别为bsr与return)。栈指针的当前值指向第一个能够用来进行栈操作的存储单元(即SP指向一个空单元)。
(2.5.5)存取IDR
IDR可用两种不同方式寻址。它即可以作为64个单字节标量实体来寻址(标量存取),这意味着IDR中的单个字节被广播到所有处理部件中;它也可以作为单个的64字节的矢量实体来寻址(矢量存取),这意味着IDR的#0字节由#0处理部件所存取,IDR的#1字节由#1处理部件所存取,……而IDR的#63字节被#63处理部件所存取。
当对IDR进行标量存取(即单个字节广播到所有PE)时,指令记号使用一间接地址指针,对IDR(IDR[P0]或IDR[P0++],即vmov IDR[P0],V[0])进行变址。这是通过使用联合机内部的广播总线来完成的。IDR的一个单元中的内容可被放到该总线上并同时被所有处理部件所接收。
当对IDR进行矢量(即作为一个64字节的矢量)存取时,指令记号不使用间接指针寄存器(IDR或IDRC,即vmov IDR,V[0]),广播总线被全部绕过,IDR的每一单元被同时传送到各自对应的处理部件中。
这种灵活性使不同算法的实现变得容易起来。图2-72示出IDR的概念性实现。
IDR还具有与每个IDR单元相关的有效位。这保证了联合机的程序不在无效数据上操作。当IDR单元被写时,该有效位被置“1”。当对IDR进行标量存取时,特定IDR单元的有效位用来确定其数据的有效性。当对IDR进行矢量存取时,每个有效位与处理屏蔽(VT位)进行比较,从而确定该IDR单元是否有效。要确定IDR本身是否有效,要将所有有效的IDR单元结合在一起。于是,如果处理屏蔽被置位,那么该有效位与其他有效的PE/IDR单元一起被用来作为整个矢量的有效性的检验。在以上两种情况中,联合机程序部将被拖延,直到所需的IDR单元变为有效时为止。
(2.5.6)矢量进程控制寄存器
每个SIMD处理部件中的矢量处理控制寄存器(VPCR)包含有关指令结果的信息。有些指令修改VPCR的某些位或所有位,而另一些指令只是检测VPCR的位的状态或位的组合。有关VPCR的说明参见表2.39。
(2.5.7)标量进程控制寄存器
标量机中的标量进程控制寄存器(SPCR)包含有关指令结果的信息。一些指令修改SPCR中的某些位或所有位,而另一些指令只是测试SPCR的位的状态或位的组合,对SPCR每位的说明,参见表2.40。
(2.5.8)带符号与不带符运算比较
算术控制寄存器(ACR)的SSGN位与VSGN位控制某些指令操作并控制如何产生进程信息(SPCR和VPCR)。对于乘法和除法,xSGN位直接控制是进行带符号(=进制补码)运算还是进行不带符号运算。此外,对于加法、减法和乘法,xSGN位还控制如何产生溢出信息。对于带符号运算,溢出位(加法和减法)被定义为运算的最高有效位位置上进位输入与进位输出的异或,对于不带符号运算,溢出被定义为运算结果的最高有效位位置上的进位输出。
(2.5.9)饱和与非饱和运算比较
对于那些引起它们的结果饱和的指令,其结果饱和的数值取决于算术控制寄存器(ACR)中的符号位(SSGN和VSGN)。对于不带符号运算,最大的正饱和结果为$FF(255),最小数为$00(0)。对于带符号运算,最大的正饱和数为$7F(127),最小数是$80(-128),请注意饱和指令sat和vsat不导致溢出(其他引起操作数饱和的指令的情况也一样)。
(2.5.10)联合机系统控制操作
本节描述全局级上控制联合机的指令,关于标量数据微代码的指令的说明参见表2.41。
(2.5.11)矢量机数据传送
本节描述完成基本矢量机的数据传送的指令。关于矢量机数据传送微代码指令的说明参见表2.41。
(2.5.11.1)对drotmov指令的说明
如前所述,drotmov指令转动一个V寄存器,然后在结果上进行矢量移动。图2-73说明了有限几个处理单元执行前后的情况。在图2-73中该例有四个处理部件PE。PESR包含数值2。它选择#2PE作为将向#0PE提供数据的环绕部件。箭头指示了数据的移动情况。
(2.5.11.2)对dsrot指令的说明
联合机包括一个叫做dsrot的向下移位指令。该指令提供合理的有效的递归倍增式算法以及其他可能的聚集运算。这一指令完成稀疏的多位置向下循环移位。指令dsrot#N,vreg2的功能如下:
每个PE复制从上邻一个PE传递到一局部寄存器的值。处理屏蔽(VT位)用来以正常方式抑制存储在任何PE中的结果。
如果一个PE在其PE号的最低有效N位元全部为“1”,它将把来自vreg2寄存器存的值传到下邻的一个PE。否则,它将其从上邻的PE所接收到的值向前传播。如果N=0,那么每个PE将把vreg2存的值传到下面一个PE。处理屏蔽(VT位)对一个PE将哪个值传递给它下面的一个相邻PE不起作用。最后一个PE将以循环方式把值返回给第一个PE(0号PE)。在该链中哪个PE将起最后PE的作用将由PESR寄存器中的值来决定。
作为例子,表2.43说明了几个dsrot指令的执行中得出的几种结果,本例中假设PESR寄存器含有值15。表2.43叙述了这些例子。
(2.5.12)矢量机数据运算
本节叙述操作矢量寄存器的指令。应注意VSGN位控制关于带符号运算与不带符号运算的结果。有关带符号/不带符号和饱和运算的更多信息请参考2.5.8节“带符号和不带符号运算比较”和2.5.9节“饱和和非饱和运算比较”。有关矢量数据微代码指令,参考表2.44。
(2.5.12.1)循环右移与左移指令概述
表2.45提供了联合机程序员能用的循环右移与左移指令的快速一览表。
(2.5.12.2)向下移位操作的说明
指令dadd、daddp、dmin、dminp、dminp、dmax和dmaxp将向下移位与计算相结合,从而简化了对于聚集运算的递归倍增式计算的完成,而聚集运算预期在目标应用中是最为常用。“p”代表前级式指令,其中无“p”的指令形式是结束指令。有关前级和非前级式指令形式的更多信息,参考第2.5.18节扩充位与多字节运算的执行。
这些指令将稀疏多位置向下循环移位与算术运算结合起来。指令dadd#N,vreg2的功能如下:
*加法只是在半数的PE中发生,即在那些在它们各自的PE号的位置N上有“1”比特的PE中发生(最低有效位被计作位置0)。每个这种形式的PE将上邻一个PE传过来的值加在其局部vreg2寄存器中。不是这种形式的PE则保持它们的vreg2寄存器值不变。处理屏蔽(VT位)可按正常的方式用来抑制在任一PE中存储结果,否则这些PE将修改它们的vreg2寄存器。
*如果PE中PE号的最低有效N位元全部是“1”,它将它的vreg2寄存器存的值传到下邻一个PE。否则,它将它从上邻一个PE所接到的值向前传播。如果N=0,每个PE都将其vreg2寄存器存的值传给下邻一个PE。处理屏蔽(VT位)对PE将哪个值传递给它下面的一个相邻PE不起作用。注意由于无论什么样的#N值被指定,从上一PE中传到第一PE的值从不被使用,因此最后一个PE是否将值传回给第一PE是无关紧要的。
作为一个例子,下面的表说明了由几个dadd指令的执行而得到的几种结果。该例假设有16个PE。表2.43叙述了这些例子,表2.46提供了dadd指令的几个例子。
(2.5.12.3)vmin/vmax指令的说明
vmin和vmax指令被用来将2个矢量共同组合成一个矢量。如图2-74所示,vmin指令的结果是一个组合矢量,它包含该指令中所规定的两个矢量中的最小元素。同样,也如图2-74所示,vmax指令结果是一个组合矢量,它包含指令中所规定的两个矢量中的最大元素。
记住,与所有其他矢量运算的情况相同,当,且只当,处理单元的VT位被置位时,结果才被存储。
(2.5.13)矢量机条件操作
本节叙述完成条件操作的指令。条件操作利用VPCR的VT与VH位控制每个处理部件中后续指令的执行。当vif指令被判定为“真”(TRUE)或当venif指令被执行时,VPCR的VT位被置位。如果任何前面的vif(自最近一个vendif之后)被判定为真(TRUE),VT位被velse指令清0。当TV位清0时,它防止指令更新矢量目的寄存器或矢量进程控制寄存器。
VPCR的VH位包含vif-velseif或vif-velseif-velseif-vendif序列的VT位历史。(注:velseif指令并不存在于微代码级内,但它是velse和vif两个指令的简单链接)。如果前-vif指令被判定为“真”(TRUE),VH位则被velse的执行置“1”。VH位被vendif指令的执行清零。
有关VH与VT位对各指令的执行所具有的作用的全面说明,参考第2.5.21节VPCR的VH位和VT位对PE处理的作用。有关说明SIMD矢量机中的指令的条件执行情况的实例代码字段,参见第3.6.5.4节“条件执行”。表2.47给出现有的条件微代码,指令的简要说明。
(2.5.13.1)条件指令对VT和VH位的作用
为阐明VT和VH位的功能,表2.48与图2-75分别示出了VT与VH位的下一状态变化表和状态变化图。应记住,只有当VT位置“1”时vif指令才被执行;而velse和vendif指令的执行不依赖VT位。复位即初始条件为VT=1;VH=0。
(2.5.13.2)循环右移与左移指令概述
表2.49提供了联合机程序员可用的循环右移与左移指令的快速一览表。
(2.5.14)标量机数据移动
本节叙述实现基本标量机数据移动的指令。有关标量机数据移动微代码指令的说明,参见表2.50。
(2.5.15)标量机数据运算
本节叙述在标量机上操作的指令。应当注意,算术控制寄存器(ACR)的位SSGN与VSGN控制与带符号值和不带符号值相关的指令的执行结果。有关带符号/不带符号与饱和运算的更多的信息,请参见第2.5.8节“带符号与不带符号运算比较”以及第2.5.9节“饱和与非饱和运算比较”。有关标量数据微代码指令的说明,请参见表2.51。
(2.5.16)标量机程序流程控制操作
本节叙述了在SIMD标量机中实现程序控制的指令。对于那些必须保存PC的指令(bsr,jsrmi和jsrri),提供了一个单级硬件栈(FLS)。如果需要一个单级以上的栈,就必须为栈分配CMA的空间,而下一个可用的栈单元将由SP所指出。有关程序控制的微代码指令的说明,参见表2.52。
(2.5.17)repeat和repeate指令的说明
当某些指令形式出现在循环终点时(当微定序器正在计算是否应该另循环一次,或者是否应该执行紧跟在循环之后的指令时),repeat和repeate指令能够得出边界条件,明显的交互作用涉及流程变化指令(bra、bsr、jmpri、jmpmi、jsrri、jsrri和jsrmi)。不大明显的交互作用涉及到矢量条件指令(vif、velse和vendif)。下面将对这些交互作用一一解释。
(2.5.17.1)repeat循环终点处的流程变化
发生在repeat循环终点处的流程变化是相当直观的。显式流程变化(bra/jmpri/jmpmi或bsr/jsrri/jsrmi)将总是比repeat循环的隐式流程变化更受欢迎一些。在图2-76与图2-77示出的两个例子中,repeat可用repeate代替。换句话说,repeat循环的形式对这两个例子并不是至关重要的。
(2.5.17.2)repeat循环终点处的矢量条件
一个repeat循环终点处的矢量条件指令的交互作用不如上述流程变化的例子那么明显。有关的交互作用为,当VT与VH位明显变化时(由出现在repeate循环终点的指令引起),将干扰VT与VH位的隐式变化(由repeate循环终点的隐式vendif指令引起)。
在图2-79与图2-80中,矢量条件(那些影响VT与VH位的指令)被用作下列指令的位置保持器:locmin、locmax、colmin、colmax、rowmin、rowmax、dskipe、vifxx、velse、vendif、vlshfth、vlshftt、vrotrh和vrotrv。
如表2.52中所说明的,repeate循环与带有终结的vendif的repeat循环是等同的。该等同性在图2-78中示出(注意右手侧的循环是-repeate循环)。
如果一个矢量条件指令在repeat循环的终点出现,则该条件指令将像预料的那样影响VT和VH(它的工作情况正像一个在循环内部的矢量条件那样)。图2-79中示出这一点。
如果一个矢量条件指令在repeate循环的终点出现,则repeate循环中蕴含的vendif将起支配作用,就好像该矢量条件指令从未被执行一样,图2-80示出了这种情况。
(2.5.18)扩充位与多字节运算的执行
联合机被设计为能支持单字节与多字节的运算,它的作法是保存所完成的上一个运算的扩充信息。每个给定运算都具有两种基本形式的指令:初始指令与结束指令。根据所进行的运算,可以首先或最后运算最高有效字节。应当注意,对于可能发生溢出的计算最后的运算将饱和。
对于单字节运算,联合机程序员可以根据应用选择饱和指令(结束形式)或非饱和指令(初始形式)。当在单字节运算中使用初始指令时应当特别小心,以免初始指令所产生的扩充信息无意中对后面的指令起作用。
考虑到扩充位,联合机指令可分为三种。在第一种中,扩充位不用于运算,而总是作为运算结果被清零,第二种指令是将扩充位用于运算(例如进位输入),对扩充位进行设置以反映运算结果(例如进位输出);第三种运算指令是将扩充位用于运算,但总是将扩充位作为运算结果而清零(例如饱和加,将从不产生进位输出)。于是,对于加法、减法和移位的情况,扩充信息总是用于运算。在多字节序列的第一个运算开始时确保扩充位清零是非常重要的,否则将会产生错误结果。
(2.5.19)多字节运算的说明
以下几节中所述的扩充位适用于标量与矢量进程控制寄存器。这里所说的运算指加法、减法、最大值、最小值、左移、右移和求反。下面各例还假设两个24位数量在运算(V0、V1、V2与V3、V4、V5;V2和V5是最低有效字节)。在所选实例中有8位操作数与24位操作数一起应用的情况。
另外,在表2.53至表2.63中术语xX0与xX1用作为标量机中SX0与SX1位或矢量机中VX0与VX1位的简写。
(2.5.19.1)多字节加法
在多字节加法情况下,运算从最低有效字节开始,然后向高字节进行。例如(不要忘记开始时扩充位应为00):
vaddp V2,V5
vaddp V1,V4
vadd V0,V3
vadd指令(它可以饱和)将永远不产生进位输出,因此在vadd指令结束时扩充位将被清零。而由vaddp指令产生的扩充信息用来保存进位与符号信号,扩充位xX1用来保存sreg操作数的符号信息(这被用来支持符号扩充加法,后面将要论及),扩充位xX0用来保存加法的进位信息,表2.53详细说明了扩充位可能出现的一些状态。
若用户关心最高字节vadd饱和,可以根据保持在处理控制寄存器中的最后溢出和饱和方向的信息,用vsat指令改变多字节结果的最低有效位字节。指令:
vsat V4
vsat V5
将跟在vadd指令之后,使目的寄存器的两个较低有效字节都饱和(如果饱和发生在最高有效位add中)。
对于长度不同的操作数情况(如一个字节与24位的流水和(running total)相加)可采用带符号扩充加法。例如(假设V0与V3、V4、V5相加):
vaddp V0、V5
vaddsxp V4
vaddsx V3
应记住,扩充位含有关于上一个运算的源操作数的信息,xX1位专门被vaddsxp指令用来确定前次运算是怎样被符号扩充的,若xX1被置“1”,vaddsxp指令将加上任何进位信息,并将数值$FF作为另一变元用于加法。这将对V0值产生符号扩充的效果。与vadd指令一样,vaddsx指令将使结果饱和(如果溢出位被置位的话),并将扩充位清零。表2.54表示vaddsxp指令对扩充位的作用。
对于前一例的情况,如果最高有效位运算饱和,就应使用vsat指令来使结果中的其余各字节饱和。
(2.5.19.2)多字节减法
在多字节减法情况下,运算从最低有效位字节开始然后向高字节进行。例如(记住开始时扩充位应为00):
vsubp V2,V5
vsubp V1,V4
vsub V0,V3
vsub指令(会饱和)从不产生借位输出,因此;在vsub指令结束时扩充位将被清零,但由vsubp指令产生的扩充信息却被用来保持借位和符号信息。扩充位xX1被用来保持源操作数的符号信息(这被用来支持符号扩充减法,它将在下面论及)。扩充位xX0用来保持减法的借位信息。表2.55详细说明了扩充位可能出现的状态。
如果使用者关心最高有效字节减法的饱和,那么可以根据保持在处理控制器中的最终溢出和饱和方法的信息,使用vsat指令改变多字节结果的最低有效字节。指令:
vsat V4
vsat V5
将跟在vsub指令之后使目的寄存器的两个较低有效位字节都饱和(若饱和发生在最高有效字节减法中的话)。
在操作数长度不同的情况下(如从24位的流水差中减去一个字节),可使用带符号扩充减法。例如(假设从V3、V4、V5中减去V0):
vsubp V0,V5
vsubsxp V4
vsubsx V3
请记住,扩充位中包含着有关最后操作的源操作数的信息,xX1位专门由vsubsxp指令用来确定前一操作是怎样被符号扩充的。如果xX1位被置位,那么vsubsxp指令将减去任何错位信息并将$FF值作为另一变元用于减法。这会产生将V0值进行符号扩充的作用。与vsub指令一样,vsubx指令将使结果饱和(如果溢出位被置“1”的话),且将扩展位清零。表2.56指出了vsubsxp指令时扩充位的影响。
对于上例的情况,如果最高有效字节运算饱和,应使用vsat指令使结果中的其余字节都饱和。
(2.5.19.3)多字节比较
在多字节比较情况下,运算从最高有效字节开始,然后向低字节进行。在大多数情况下,矢量比较的期望结果是设置处理屏蔽(VT位),标量比较最可能发生程序流程变化。在任何一种情况下,比较都在最低有效字节以vif或skip形式的指令结束,例如(记住扩充位开始时为00):
vcompp V0,V3
vcompp V1,V4
vifeq V2,V5
vcompp指令使用扩充位的方式与add和subtract指令不同,扩充位用来确定最后操作的结果是什么,并确定是否需要进一步比较。表2.57详细列出了vcompp指令之前和之后扩充位的定义。
在最后vcompp指令结束时,条件指令vif(或skip)被执行。vif指令将取出扩充信息并将它与所期望的比较相结合(例如是否相等)从而使处理屏蔽(VT位)相应地被置位或被清零(或执行某些流程改变)。
(2.5.19.4)“VIF”对xX0和xX1的依赖
再次重复说明vif和skip指令与X0与X1位状态有直接关系是非常必要的(SX0:SX1对标量机而言;VX0:VX1对矢量机而言),要方便多字节比较需要这种依从关系。由于这一原因,大多数指令将X0与X1位清零,请对那些当使用vif与skip指令时确实影响X0与X1位的指令加以特别注意。
(2.5.19.5)多字节最大值
在多字节最大值的情况下,操作由最高有效字节开始向低字节进行。多字节最大值的操作与多字节中比较非常相似,但操作结果不同,sreg寄存器将存放两个操作数中的最大者,例如(记住扩充位开始为00):
vmaxp V0、V3
vmaxp V1、V4
vmax V2、V5
vmaxp指令使用扩充位的方式与add指令、subtract指令不同。扩充值用来向vmaxp指令指示应采取什么行动。最终的最大值操作(最低有效W纸Z)应使用vmax操作去保证扩充位放回到它们的空状态(00),且数据的最后字节被移动(根据比较)。表2.58详细列出vmaxp指令之前和之后的扩充位定义。
(2.5.19.6)多字节最小值
在多字节最小值情况下,操作从最高有效字节开始并向低字节进行。多字节最小值的操作与多字节最大值的操作非常相似,但操作结果不同,sreg寄存器中将是两操作数中的最小值。例如(记住扩充位开始为00):
vminp V0,V3
vminp V1,V4
vmin V2,V5
vimp指令使用扩充位的方式与add、subtract指令不同。扩充位用来向vmipp指令指示应采取什么行动。最后的最小值操作(最低有效位字节)应用vmin操作去保证扩充位放回到空状态(00),且数据的最后字节被移动(根据比较)。表2.59详细列出扩充位在vimp指令执行之前和之后的定义。
(2.5.19.7)多字节左移
在多字节左移的情况,操作从最低有效字节开始,向高字节进行。在左移操作情况中无专门的左移前级指令,而用前级add完成此功能,例如(记住,扩充位开始时为00):
vaddp V2,V2
vaddp V1,V1
vlshft V0
前两步操作将V2与V1寄存器左移一比特位置,且将进位结果保存在扩充位xX0中。在这种情况下扩充位xX1不必关心,最后指令vlshft取出该扩充信息并将它移位到最后一字节(最高有效位)之中,然后将这些扩充位清为空状态(00)。
(2.5.19.8)多字节右移
在多字节右移情况下,操作从最高有效字节开始向低字节进行。与以前各种情况一样,前级右移指令用于最高有效字节,正常右移指令被用于最后(最低有效位)字节。例如(记住,扩充位开始为00):
vrshftp V2
vrshftp V1
vrshft V0
前两步操作将V2与V1寄存器移位一比特的位置,并将最低有效位结果保存在扩充位xX0中。xX1扩充位用来向指令指示可能的符号扩充是需要的(见表2.60)。最后的指令vrshfft取出扩充信息并将它移位到最后(最低有效)字节之中,然后将扩充位清为空状态(00)。于是对于最后一步操作来说,最低有效位被丢弃。
(2.5.19.9)多字节求反
在多字节求反情况下,操作从最低有效字节开始向高字节进行。对于较低字节,使用前级求反指令,对于最后(最高有效)字节使用正常求反指令。应注意,求反绝对值最大的负数(-128)产生溢出条件(127),扩充位xX0用来保存来自求反的借位信息,而xX1位不必关心,例如(记住,扩充位开始时为00):
vnegp V2
vnegp V1
vneg V0
vneg指令(它可以饱和)永远不会产生借位输出,因此在该vneg指令结束时扩充位将被清零。表2.61详细列出扩充位的一些可能状态。
(2.5.19.10)多字节指针增量
在多字节指针增量的情况,操作从最低有效字节开始,向高字节进行。例如(记住,扩充位开始时为00):
incp #3,P6
inc #0,P7
inc指令将永远不产生进位输出,于是在流inc指令结束时扩充位将被清零。但是由incp指令产生的扩充信息用来保持进位与符号信息。扩充位SX1用来保持sreg操作数的符号信息(这被用来支持符号扩充加法)。虽然源操作数是该指令中的常数域,但SX1位仍被清零以保持与其他联合机指令相一致。SX1位不用作inc或incp指令的输入。扩充位SX0用来保持加法的进位信息。表2.53详细列出了扩充位的一些可能状态。表2.62提供了前级指令增量(incp)的扩充位说明。
(2.5.19.11)多字节指针减量
在多字节指针的减量的情况下,操作从最低有效字节开始,向高字节进行,例如(记住,扩充位开始时为00):
decp #3,P6
dec #0,P7
dec指令将永远不产生借位输出,于是在该dec指令结束时扩充位将被清零。但由decp产生的扩充信息被用来保持借位与符号信息。扩充位SX1用来保持sreg操作数的符号信息(这被用来支持符号扩充加法)。虽然源操作数是本指令中的常数域,但SX1位仍被置“1”以保持与其他联合机指令相一致。SX1不用作dec或decp指令的输入。扩充位SX0用来保持减法的借位信息。表2.55详细列出了扩充位可能出现的状态。表2.63提供初始减量(decp)的扩充位说明。
(2.5.20)进程计算控制
本节叙述VPCR/SPCR各位怎样受到各指令的影响。大多数操作使用源操作数与目的操作数,完成操作并将结果存在目的操作数之中。单操作数运算只使用目的操作数,并在目的操作数上完成操作,且将结果存在目的操作数中。表2.64列出了每个指令,并列出它是怎样影响进程代码的。注意VX[1∶0]、VT、VV、VD和VH位在每个处理部件中,而SX[1∶0]SV和SD位是在标量机处理机控制寄存器中。
(2.5.21)VPCR的VH位和VT位对PE处理的作用
若VT位被置位,允许当前指令更新目的寄存器;但是如果VT位被清零,目的寄存器则不能更新。该闭锁功能也用来更新VPCR寄存器位。VH位的功能是保存VT位的历史状态,并控制何时能修改VPCR的VT位。于是,通过VT与VH位的结合,在SIMD矢量机内指令执行中存在着控制分级结构。表2.65示出了VH、VT位对联合机的指令执行的作用。
(2.5.22)指令执行次数
本节给出每个指令的执行周期数,有可能对导致多位置或多位操作的这些指令次数进行调整。表2.66列出了每条指令以及它们的周期数如何从最小变到最大的情况。
(2.5.23)联合机缺失指令
在联合机中有几种能完成两种功能的指令,这些指令在表2.67中说明。
(第3节)
联合机的操作原理
本节给出联合机操作的更详细说明,联合机的主要功能是取得输入数据并完成用户定义的传输功能。
联合机功能性的主要方面分成一些逻辑部分。
第3.1节“信息流程和结构”,叙述了通过典型前馈网络的信息流程,并提供了网络到联合机/联合机′体系结构上的映象。第3.2节指令流线,叙述了怎样获取和执行指令的基本机制。第3.3节“指令和数据存储器”,叙述如何设置联合机的主存储器以保持微代码,矢量数据和标量数据。第3.4节“联合机初始化”,叙述与联合机的建立和初始化有关的问题。讨论了诸如最小配置和初始化这类的问题。第3.5节“端口操作”,叙述端口操作方式以及联合机的用户能够如何控制从主机侧出入联合机的数据传输。另外,还给出为支持不同方式的数据传输的主存储器映象的说明。第3.6节“联合机操作”,叙述SIMD处理部件与计算功能的控制,讨论中包括矢量与标量机的宏观与微观。还给出了若干微代码程序结构的说明。第3.7节“微代码启动的端口写操作”,叙述在微代码控制下将计算数据从联合机传输到支持联合机′装置的操作方式,还讨论二维与一维的联合机的配置。第3.8节“联合机总线布置”,示出了如何设置多个联合机以解决问题以及在阵列结构中使用联合机时监视哪些错误情况。
(3.1)信息流程与结构
用高层次的方法,神经网络体系结构可被映射到一组联合机块上来完成所需功能。信息流程也可被认为是映象函数。图3-1示出了典型的全连前馈神经网络。为支持许多不同形式的神经网络算法,另一个可被称为联合机′的联合机(具有不同微代码),可被用来从联合机中取出部分神经腱值并将它们聚集形成总神经细胞输出。
在该网络中,输入层(i)仅完成分配功能,有119条输入通到该网络。隐层(h)取出这些输入,并利用诸如乘积之和:∑(i*Cih)这样的传播函数来作用网络系数Cih,在描述互连系数时,第一下标(i)代表输入下标,即“自”神经细胞,第二下标(h)表示所“至”神经细胞。隐层在乘积和上执行输出函数,并产生来自隐层的输出,在该例中隐层有80个神经细胞。输出层(0)接收来自隐层的输出,并利用一传播函数∑(h*Who)来作用网络系数Who。与在隐层中相似输出层在乘积和上执行输出函数,产生网络输出。在该例中的输出层有20个神经细胞。对于64输入和64输出的联合机体系结构,该例的映象将需要若干个联合机。图3-2示出了图3-1中隐层的一种可能映象。在图3-2中,联合机0、联合机1、联合机2′形成簇0,而联合机3、联合机4、联合机5′形成簇(bank)1。类似地,联合机0和联合机3形成片(slice)0,联合机1和联合机4形成片1,联合机2′和联合机5′形成片2。在图3-1所示的网络映象中应注意输入层与隐层都被映射到图3-2上。这是因为输入层只作为分配层起作用。
联合机组合的信息流程流动如下:前63个输入样值被加载到片0的IDR之中,其余样值被加载到片1的IDR之中,在片1正被加载的同时,片0可开始计算它的输入采样值的乘积和。
片0完成计算之后,它将部分神经腱结果(代表矢量部分和)传输到联合机′中,当片1也传输了它的部分和之后,联合机′片(片2)可执行输出函数,并开始将隐层数据传输给输出层。一个联合机′可支持许多同簇的联合机。
在图3-2中,片2示出联合机可被用作不同的功能块(具有不同微代码),它还示出CMA可用于不同用途。串列矢量被加载到CMA之中作为T0-T79。S矢量(S0-S79)是在片0与片1中联合机的被求和的部分神经腱值。联合机2′和联合机5′中示出的COF值被用来在神经腱总和上执行压缩功能从而产生网络的输出。
图3-3示出了联合机/联合机′单元的逻辑图。注意联合机装置利用互连系数负责来自前层输出的传播,而联合机′装置则完成聚集与输出功能。
应当指出,用3-2与图3-3中所示的映象仅代表图3-1所示网络的一种可能的映象,如在第2.1节“联合机系统概述”中描述的,片2可被整个地移走,部分结果可被累加到片1之中。
(3.2)指令流线
联合机以三阶段流线来实现指令定序器。这意味着每个指令必须通过三个不同功能单元来完成。图3-4对此作了图示,更详细的情况在表3.1中作了说明。
当流线被填充时,忽略指令通过第一和第二阶段所花费的时间是可能的。在图3-5中,认为流水线在t3和t3到t7之间被填充,每个时钟执行一条新指令,换句话说,每条指令需花费至少3个时钟周期来完成,但若使用这种特定的流水线,每条指令就具有一个时钟的实际执行时间。
多周期指令定时与图3-5所示的单周期指令定时没有很大的不同。但是,由于每条指令都负责预取下一条即将执行的指令,所以多周期指令一直要到它们距完成只有一个周期时才开始进行预取。多周期执行定时在图3-6中说明。
(3.2.1)指令流线中的拖延
流线拖延由两种不同情况引起:高速缓存缺失和源冲突。
在流线阶段1中的拖延完全是由高速缓存缺失引起的(在有效高速缓存线上未能找到PC中地址的情况)。每个由高速缓存缺失引起的注入流线的拖延将另一个时钟周期注入流线中当前指令的执行时间之内。
阶段2中的拖延,如图3-7所示,是由数据的连贯性引起的。
间接寻址方式(诸如图3-7中所见的(MA[P1])是在流线阶段2内被处理的。图3-7所示两条指令都是单周期指令,当在流线阶段3中正在执行add g0,V0时,(MA[P1])的数据预取正在阶段2中进行。这正是出现问题之处。正在流线阶段2中使用的指针同时在流线阶段3中被更新。因此,在使用指针之前,要拖延流线一个时钟,直到指针的更新(在阶段3)结束时为止。
在阶段3的拖延直接与IDR有效位(VID)有关。如果一条诸如Vadd IDR[P1],V0这样的指令指向尚未被填充的IDR单元,那么阶段3的拖延将在流水线中引发,直到引用的IDR单元被填充(且VID位指示该IDR单元有效)时为止。由于阶段3的拖延依赖于外部源,因此它并不持续一个指定的时钟数,于是如果外部数据源未能向联合机提供期望数量的数据,联合机就有可能无限期拖延(ICR规定联合机在Run方式下要求的数据量为多少)。正是由于这个缘故,阶段3拖延在PSTA引脚上是外部可见的(PSTA[2∶0]=000指示出阶段3流线的拖延)。该指示同样在微定序器状态寄存器的EXE编码中是可见的(MSR∶EXE[2∶0]=000指示出阶段3拖延)。
(3.2.2)指令流线中的拖延优先级
如果同时出现一个以上的拖延,表3.2确定解决拖延的次序。
(3.3)指令和数据存储器
每个联合机中的CMA用来保持程序指令和程序数据。由此,术语CMA与MMA都指的是同一个称作CMA的实体RAM。当联合机在这一存储器中存取数据时,它被称作CMA;当联合机在这一存储器中存取指令时,它被称作MMA。主要区别是进行MMA存取时的特定寻址方式。
在图3-2的联合机0、联合机1、联合机3和联合机4的情况中,有两列CMA,它们被分配给程序存储器(MMA)。根据应用,也许有更多的CMA用作为MMA存储器。根据应用的需要,折衷选择数据空间和指令空间则是程序员的任务了。
(3.3.1)指令高速缓存储
每个联合机为快速指令存取设有128个字的指令高速缓冲存储器,该高速指令缓存器组成为四条32字直接映射的高速缓存线(每个指令字16位宽)。
为确定缓存命中或缓存缺失,在每条指令执行之前,用指令标记(ICT0-ICT3)与PC的位8-15进行比较。如果确定PC与任一标记寄存器都不相配,则必须将含有下一条指令(由PC指向的指令)的新线装写入指令高速缓冲存储器之中。
PC的位7与6位确定指令将被装入哪条缓存线,由于指令缓存是直接映射的,因此这两位明确确定了要被装入的缓存线,若PC的位7和6是00,缓存线#0将被加载;同样,若位7和6是01,那么缓存线#1被加载。与被加载的缓存线相对应的高速缓存标记寄存器(ICT0-ICT3)将用PC的最高有效字节来加载。另外,指令高速缓存有效寄存器(ICVR)中的对应高速缓存线有效位将被置“1”。
高速缓存线从CMA的加载,引起指令的执行中一个时钟的延迟。一旦指令高速缓存器已被写加载,就不会因为从CMA中同时存取指令和数据而再受到时间损失,除非高速缓存器缺失。若应用能够全部装入高速缓存器,那么整个CMA都可用作数据存储器。应用必须保证高速缓存器不缺失。
(3.3.2)CMA与MMA映象
与较早规定的联合机版本相比,CMA空间与MMA空间之间的映射已被简化。由于只有4K字节的实际存储器,因此指令与数据的存取可看见整个4K空间。分配与管理4K空间中的每个区域(指令或数据)则是程序员的责任。图3-8示出了作为指令或数据空间来看的4K空间中的前70个字节。
(3.3.3)对CMA的直接和反向存取
CMA装备有允许其被直接存取和反向存取的机制,图3-9示出了CMA直接存取与反向存取的图示说明。在直接存取CMA之间,PE#0使用来自CMA行#0的数据,PE#1使用来自CMA行#1的数据,等等;在反向存取CMA期间,PE#0使用来自CMA行#63的数据,PE#1使用来自CMA行#62的数据,等等。
所有进入CMA的存取或是使用指针间接寻址(CMA[Pn]),或是使用指针间接后增量(CMA[Pn++])。在以上两种寻址方式中都使用指针寄存器Pn去指定CMA中的一列。由于CMA中有64列,所以仅需要指针寄存器中的6个位(位5-位0)去直接存取每个列,直接存取CMA时,指针寄存器的位6是0,对CMA的反向存取是将位6设置为数值1而实现的。指针寄存器位7不使用。
这一机制有容许处理部件存取128个字节数据的优点。它还允许矢量在一个时钟中被“倒装”,进行合理的上移,上移可由以下代码字段来实现:
;被倒装的矢量是在CMA(基数0)的第5列
movi#$44,P0;#$44是64+4(即设置p0的位6和存取;
;列5(基数0)等
vmov CMA[P0],V0;将“倒装”的列4移入v0
drotmov v0,V0;下移V0一个PE
vstore V0,CMA[P0];倒装V0,并将其放回CMA的列4之中
这个机制对所有CMA数据存取(读和写存取)都是有效的,但对进入CMA的指令存取不起作用。
(3.3.4)分配CMA空间
CMA是一组存储器单元,由程序员按需要分配,本节示出几种可以如何配置CMA的例子,以便为程序员提供最大的灵活性。
在第2.3节和2.4节中已经加以说明,CMA可以或者作为1024个连续的存储器单元出现,或者作为每个处理部件64个8位的存储器单元出现。这两种观点都是正确的,但若不去看在执行指令期间联合机是怎样使用CMA的就不完全了。
在下面各例中,例1是最简单的,它也将是我们讨论的起点。从这里开始,每个接下来的例子都将逐渐变得复杂一些,并且依赖包含在前面各例中的信息,因此在前进以前认真学习每个例子是明智的。
(3.3.4.1)例1:仅用于数据存储的CMA
如图3-10所示,第一例是所有配置中最简单的。该例假设:1)所有计算数据被保持在CMA中;2)整个程序存留在指令高速缓存器内部(因此程序不占任何CMA空间);3)不使用push、pop、bsr、jsrri和jsrmi指令,且异常被判断(因此CMA不需包含一个栈区);4)jsrmi与jmpmi都不被使用(于是CMA不需包含跳转表)。
注意初始程序计数器(EPPC)设置为$0000,这将使联合机从IC开始执行程序(假设ICT0-ICT4=$00,ICVR=$0F,PBP=$00)。栈指针的初始值(EPSP)不怕关心,因为本例不使用栈。
(3.3.4.2)例2:指令高速缓存器、PC和CMA页面
指令高速缓存器(IC)是一直接映象缓存器,它用CMA作为其主存储器。IC由4条线组成,每条线相当于CMA中的一个单列。CMA中的列可以以4个为一组地组合在一起,且每4列的一组被称为一个页面(如图3-11中所示)。每一页面中的第一列对应于高速缓存线#0,第二列对应于高速缓存线#1,第三列对应于高速缓存线#2,第四列对应于高速缓存线#3。
当来自CMA的一个列加载到IC的一条线中时,该列的页面号被装入与高速缓存线的相关联高速缓存标记寄存器(ICT0-ICT3)中。另外,与该线相关联的高速缓存标记有效位(ICV0-ICV3)在ICVR中被置位。
如图3-12中所示,程序计数器(PC)从逻辑上分成三部分:PC的最高有效8位反映当前指令的页面;PC的位7和6对应当前指令的线;PC的位5到0对应于该线中的当前指令。
当一个指令预取发生时,PC的高8位与PC位7和6所指示的线的IC标记(ICT0-ICT3)相比较。如果适当的高速缓存标记不等于PC的位15-8,或者如果适当线的高速缓存有效位未被置位(ICVR的ICV0-ICV3),则存在一次高速缓存缺失,且包含当前PC的CMA列被加载到由PC位7和6指示的IC之中,PC的位15-8被放入由PC的位7和6所规定的高速缓存线标记。
(3.3.4.3)例3:用于程序和数据的CMA
本例考查程序刚好成指令高速缓存器(IC)稍大一些的情况,在这种情况下,部分程序必须被保持在CMA中,而大部分程序可位于IC中,所有前面例子中的其他假设仍适用于这一例子。
对图3-13(就IC而论)旨在解释以下几点:
1)程序包含129与160条指令之间(相当于5条高速缓存线;
2)联合机只有4条高速缓存线,因此某些来自程序的“外溢”不得不被存入CMA中。
由于联合机使用直接映象缓存器,因此事先能知道哪个CMA的列将被换入和换出孔。在本例中,列00与列04都需要使用高速缓存线#0,而高速缓存线#1、#2与#3将不会被重写(因此能被直接地放入IC),于是在CMA中无需为它们保留空间。
(3.3.4.4)例4:程序移位
作为上例的转折,程序被向前移动128个字节。这意味着程序将从$80开始,而不是从$00开始(记住,联合机中的程序不必非从$0000单元开始不可)。因此程序计数器(EPPC)的初始值将是$0080。这也有着将程序在CMA中移动了两列的效果。
重要的是要注意,在图3-14中,高速缓存线#2现在是将被替换的高速缓存线(代替了上例中的替换缓存线#0)。这意味着高速缓存线#0、#1与#3将被替换。栈指针(EPSP)的初始值仍旧不必关心,因为尚没有启动栈和异常的指令出现。
(3.3.4.5)例5:对例4增加跳转表
对于间接存储器指令,例如jsrmi和jmpmi,必须在CMA的前128个字节中建立一个跳转表,本例中的跳转表由8个间接的、16位地址组成,图3-15对其作了说明。
由于包含在跳转表中的信息被认为是数据而不是指令,因此每执行一次jsrmi与jmpmi指令,都将从CMA中,而不是从指令高速缓存器中取出间接地址(为了使指令高速缓存器中出现一个“命中”,所以微定序器必须完成一次指令存取)。该跳转表可动态更新,但是,如果使用了jsrmi与jmpmi指令,它就将在CMA中占据至少一线。
(3.3.4.6)例6:对例4增加CMA栈
需要一级以上的栈的应用必须在CMA中分配栈空间。第一级栈(FLS)提供一个单一的栈单元,若有更多的栈就必须使用CMA了。如在图3-16的顶部看到的那样,栈指针(EPSP)的初始值是$003F。这意味着当联合机由复位产生时,第一个可用的栈单元将是$3F。
图3-16试图表示程序执行期间某一时刻CMA栈的状态。几个项已被压入CMA栈(用黑色阴影表示的区域),还有一些栈项尚未被使用(十字线阴影区域)。
(3.3.4.7)例7:对例4增加矢量和标量存储
当应用中需要多于16字节的标量存储(G0-G7,P0-P7),或者需要多于8字节的矢量存储(V0-V7)时,CMA可用来为这两种形式的数据提供临时存储,见图3-17。
列01被用于标量存储,列$3E与$3F被用于矢量存储。
(3.3.4.8)例8:把所有部分汇集到一起
作为最后一个例子,以上所有各例中的要求都被组合在一起,包括有跳转表、CMA栈、128字节的矢量存储空间(2列)、64字节的标量存储空间、2列空间的程序代码和58个64字节的矢量。见图3-18。
(3.4)联合机初始化
在任何运算数据输入联合机前,该装置的大部分区域必须被初始化。在RESET信号被认定并且被否定后,所有联合机的内部寄存器缺省为第2.3节“联合机主机可存取寄存器”中所规定的状态,需要被主机初始化的内部单元是系数存储器阵列(CMA)、微代码存储器阵列(MMA)和其他所期望的控制功能。(如果联合机程序包含的指令少于128个,则指令高速缓存器、标记寄存器和有效位而不是MMA将需要被初始化)。必须注意保证控制寄存器的复位状态能提供一个在网络处理前建立需求最小的状态。在内部,微代码指令组提供使初始化区段与循环区段在一起的能力。更详细内容看第3.6.3节“联合机指令流程的微观”。
最小初始化需求包括微代码存储器阵列和一些控制端口的信息流传输的信号标记控制寄存器。
(3.5)端口操作
在联合机上引入有4个端口,以便于控制主机和例如联合机′的其他系统部件的信息流的高效并行传输,端口标有N、S、E和W分别为北、南、东和西。联合机的设计是利用这些端口将多个联合机连接在一起从而协调一致地工作。联合机的设计还使其在一维和二维阵列中都是规模可变的。以下叙述假设联合机系统建立在两维阵列中。
所有配置,状态,输入和输出值都可以通过这些端口由主机存取。联合机被设计成以两种方式之一操作,方式选择通过R/S输入完成,该输入确定联合机是在Run方式下(R/S为VDD电平)还是在Stop方式下(R/S为GND电平)工作。联合机端口的不同运行情况取决于操作方式。有关具体的时间图信息参见第4节“联合机总线操作”。有关联合机的各种信号的说明参见第2.2节“联合机信号说明”。
Run方式用来允许执行联合机的微程序,Stop方式(也叫作Host方式)用来允许为初始化和调试而进行的系统主机对联合机内部资源的访问。端口可在Run方式下用作为神经网络层间通信的、或作为联合机装置之间的层内通信的连接总线。
(3.5.1)主机传送方式
在Stop方式中,联合机支持两种不同形式的传送方式。它们是随机存取和流式存取。在随机存取方式下,主机提供地址和数据信息进行读、写。在流方式下,主机提供数据,而联合机内部地产生被访问的单元的地址。有关联合机总线端口操作的详细定时图参见第4.1节“联合机端口定时图”。
在联合机阵列中有两个信号用来作为芯片选择。这两个信号(ROW和COL)提供了从联合机阵列中选出一个单独装置的机制。
随机存取操作中,ROW和COL信号用来选择一个联合机以便存取。地址信息呈现于西端口和北端口,地址信息以向东和向南的方向流动直到汇集在被选中的装置上(即ROW与COL都被认定)。另一方面,数据从所选定的装置中沿向北(写操作)或向南(读操作)的方向传输。对只有ROW或COL之一信号(不是同时具有两者)的装置,地址和数据根据ROW或COL的认定,在垂直方向或水平方向传输。
在流式操作中(地址内部地产生),数据流向和流自阵列的南边缘或东边缘(而不是两者同时)。流操作基本上是填充或是排空阵列中一个列或一个行。利用ROW和COL线,还能选择某些子区段而只在阵列的一个部分上操作。
对于下面有关联合机存取方式的说明,参见图3-19所示有关联合机阵列的配置。
(3.5.1.1)随机存取方式
端口操作方式的说明在联合机的引脚叙述,而不是从主机方面考虑。
随机存取方式的设计允许存取联合机中的单独寄存器,为了利用随机存取方式存取数据,主要装入地址(WD、ND)、数据(SD)和启动特定端口上的随机存取方式的控制信号(OP、NCI、WCI、R/W、EN)。这些地址和控制信号被内部锁存和解码,以选择一给定的寄存器。在下一个时钟周期,被存取的数据将被传输。在一个写周期,数据将在CLK信号的上升沿被锁存。对于读,数据则将在时钟周期下降时被驱送出引脚。可以以随机方式被存取的寄存器表参见表2.5。
(3.5.1.2)主机流式存取方式
流式存取方式允许主机将大量数据输入一组排列在一条链中的联合机,而不需访问内部寄存器。流式存取方式能用来初始化联合机,或用来保存联合机状态。为了用流式存取方式存取一个区域,对于东端口的流式读出,主机激活控制信号ROW、COL、EN、S/W和WCI并接收ED输出的数据;对于南端口的流式读出,激活控制信号ROW、COL、EN、R/W和NCI并接收ED输出的数据;对于东端口的流式写入,激活控制信号ROW、COL、EN、S/W和ECI并将数据放入ED;或对于南端口的流式写入,激活控制信号ROW、COL、EN、R/W和SCI并将数据放入SD。控制信号被内部地锁存和解码以选择一给定区域。在下一个时钟周期上,被存取的数据开始传输。在一写周期,数据将在CLK信号的上升沿被锁存。在读时,数据将在时钟周期的下降沿驱送出引脚。
在流式操作时,主机流选择寄存器(HSSR)控制流到哪个联合机的区域去。在流式存取方式下,内部地址为用户产生。这由OAR1和OAR2寄存器来完成,传输的持续期间由DCR1和DCR2寄存器控制。另外在流式写入时,主机流偏移寄存器(HSOR)控制数据流的偏移,即何时开始填充。
在流填充操作开始时,HSOR被装入一个计数器,该计数器使流中数据的每个字节递减。当计数器到达零时,联合机开始从将流中数据复制到它的存储器之中。该机制允许在一个流式写入操作中联合机加载不同的、重叠的或相同的数据。
在流式读操作中,不使用HSOR,而使用xCI和xCO引脚,向行或列中的下一个联合机发出信号开始送出数据。流式读出由认定最西或最北的联合机的xCI信号开始,使这些联合机开始向东或南送出数据。当一个联合机结束时,向线上的下一个联合机发出信号,如此依序增加数据直到流结束。
在这种体系结构中的包括OAR与DCR寄存器的主机动机是允许一个单一神经细胞(一个能够跨过多个联合机的神经细胞)的系数的流式读出或写入。这种机制也能用来流式读出或流写入按照单个输入的联合机中的所有系数。是否使用DCR2和OAR2寄存器取决于被存取的逻辑空间(HSSR)。对于一维寄存器,如IDR或V0,只需使用DCR1与OAR1。图3-20示出DCR1与OAR1寄存器是怎样作为一维矢量寄存器工作的。
在一维流式存取方式中,OAR1寄存器中的值被用作为起始地址(联合机内部)。一个内部计数器(起始值为零)对于从流中复制或被写入流的每个字节都增加,当计数器等于DCR1寄存器中的值时,联合机从填充状态转换为充满状态。
在流方式下,总是有一个联合机在链中为第一个。线上的第一个联合机将往往使xCI输入激活,给它以控制总线上的数据的权力。在流方式下应考虑的另一件事情是将主机地址解码为联合机地址的接口逻辑。接口逻辑需要能够认定到的所有联合机上的所有控制线,这些联合机在流式操作中形成一个链。典型地,流式操作将从主机侧通过一个单一的主机地址来存取数据,该地址控制联合机侧的流式操作。更多的信息参见图3-24。
对于二维流式操作(CMA),采用一个第二寄存器组来控制流式存取。这两个寄存器是OAR2和DCR2控制寄存器。这两个寄存器与OAR1与DCR1寄存器的相同之处是,它们提供始地址(联合机内部)和一计数值。就像DCR1一样,也有一个独立的为DCR2设立的内部计数器。图3-21详细说明了四个流寄存器的工作情况以及怎样用它们控制CMA存取。
(3.5.2)联合机传送方式
在Run方式中联合机可以从四个端口的任何一个完成写操作。这是在write指令控制下进行的。写操作的目的地(取决于端口开关和抽头)将是延着写方向上装置的IDR寄存器。例如,如果联合机从北端口写出,共享同一列的(上方的)装置有可能接收该数据。由write指令完成的传送方式正像主机流式存取方式一样。由于IDR是该操作的目的地,因此,另一组控制寄存器决定何时和在何地数据被写入IDR寄存器。该IDR可由输入变址或输入标记来加载。
采用输入变址,被捕获的输入数据是一串相连的输入样值。采用输入标记,输入流包含一蕴含样值计数(计数从零开始,每输入一个样值就被T黾S)。在标记捕获机制中,有一个与IDR中每个单元有关的内部标记。这两种机制之间的基本差异在于IDR地址寄存器增加的条件。有关这种捕获机制的详细说明参见第3.5.2.1节“输入变址”,和第3.5.2.3节“输入标记”。比较起来,下面的说明将描述第一捕获机制(输入变址),因为它与流式存取方式有关。
(3.5.2.1)输入变址
利用数据向IDR加载的基本方法是输入变址方法。使用这种填充方法,IDR在某个循环计数开始被连续的字节加载。IDR寄存器包含一个循环计数,该计数表示何时数据应从数据流中装入IDR、IPR和ILMR寄存器决定输入样值将被放入IDR中的何处。ICR寄存器决定有多少样值被装入IDR之中。
当1)IPR与ICR寄存器被加载时;2)执行done指令时;3)使用IDRC寻址方式时;4)RESET信号被触发(1→0→1)时,IPR与ICR寄存器将生成影子。
IPR寄存器用来作为对IDR的一个变址去决定下个数据样值的存储单元。ILMR寄存器用来屏蔽(或不关心)IPR中的位位置。这为IDR提供了重制字节的灵活性。例如,如果IPR包含$00,ILMR包含$03,那么装入IDR的第一个字节将被放入单元$00、$01、$02和#03。下一个字节将被放入单元$04、$05、$06和$07,等等。对每个样值IDR将增加4,以便IPR指向IDR中下一个自由点。
有两个概念可能帮助我们理解怎样使用IDR和ILMP:主寻址与副寻址的概念。在输入变址方式期间,当产生一用于存取IDR的内部地址时,IPR负责保存“主地址”,该主地址指向IDR的一个单一单元。当IPR的内容与ILMR的内容相结合时,便产生一组“副地址”。在下面的例2(ILMR=$3)和例3(ILMR=$4)中,其图解中有两种不同级别的阴影,深灰色阴影代表用“主地址”(只用IPR)放入IDR中的数据。浅灰色阴影代表用“副地址”(使用IPR与ILMR)放入IDR中的数据。
(3.5.2.2)使用ILMR的例子
这里再重复Run方式下使用ILMR装入IDR的规则:
·ILMR的各位在内部产生的地址中的作用为“不必关心”。意思是数据被装入到那些在地址“不必关心”时所选中的IDR单元之中,例如,ILMR值为00110000,“不nt”IDR地址的位4和5,意思为同样的数据被送入IDR单元00000000、00010000、00100000和00110000。
·IPR的增加与ILMR中的最低有效“0”的单元成比例。即,如果最低有效“0”在位单元0,那么每次数据被放入IDR时,IPR都将增加20,即1。如果最低有效“0”是在位单元3,那么IDR每次将增加8。
在以下三个例子中,流入联合机的数据由图3-22所规定。每个框表示一个8位数据。
例1:ILMR=0
如果ILMR=$00(即由复位产生的情况)且IPR=0(指向IDR[0]),那么每个被装入IDR的新数据被放入下一个可能的IDR单元。表3.3为该数据流程的表格式说明。
例2:ILMR=$3
若ILMR=$3(00000011)且IPR=0(指向IDR[0]),那么装入IDR的第一个数据将进入IDR[0]、IDR[1]、IDR[2]和IDR[3],且IPR将增加22(4),以使新的IPR单元是IDR(4)。将被写入IDR的第二个数据将被装入IDR[4]、IDR[5]、IDR[6]和IDR[7],且IPR又增加4。一旦已接收到16个数据,IDR就被完全装满在表3.4中,主地址用深色阴影代表,副地址用浅色阴影代表。该数据流程的表格说明在表3.4中。
例3:ILMR=$4
若ILMR=$4(00000100)且IPR=0,那么被装入IDR的第一个数据将走到IDR[0]和IDR[4]且IPR增加20到单元IDR[1]。被装入IDR的第二个数据将装入IDR(1)、IDR[5],且IPR增加到IDR[2]。表3.5中,主地址用深色阴影表示,副地址用浅色阴影表示。该数据流程的表格式表格说明在表3.5中。
在表3.5中假设IDR从$00开始,每次一个新数据放入IDR就增加1。(这个数据由表中的深阴影项表示)。ILMR的作用就像IDR的“地址屏蔽”,在此例中,ILMR中的值是$4,这使位2(从位0数起)为“不必关心”的。IDR地址的“不必关心”使浅阴影的数据值地装入IDR。
插在t3与t4之间、以及t7与t8之间的数据的奇怪转变正是直接由“不必关心”造成的。t0和t4时刻,有效IDR地址是00000x00(IPR值00000000与ILMR值00000100相结合),因此单元00000000与00000100都被同一个数据(10)写入。同样,在时刻t1和t5,有效的IDR地址是00000x01,因此单元00000001与000000101都被同一个数据(23)写入。
(3.5.2.3)输入标记
为提供更多的灵活性,设置了输入标记捕获制。这种机制可能代替输入变址进行装入IDR的操作。这种捕获机制由在端口控制寄存器(PCR)中的填充方式(FM)位来启动。允许这种捕获机制用于计算操作中的IDR装入,该计算操作需要特殊神经网络连接。
这种捕获机制允许联合机以随机增长的次序从输入流中有选择地抓住输入样值。为了利用这种机制存取IDR,主机首先将待使用的标记装入ITR,然后主机将设置PCR中的FM位的值,从而启动ITR进行IDR填充。主机将数据和控制信息装入一个端口,该端口是向联合机链送出数据的诸端口之一。控制信号被内部地锁存和解码,当数据通过联合机时,一个内部计数器被增量。当计数值与当前的输入标记相符且xCI输入被开启时,输入样值被装入IDR之中。该过程连续进行,直到所有输入样值被装入IDR之中、或者达到ICR计数、或者达到一个不再上升的标记值时为止。
使用输入标记捕获机制的例子在图3-23中给出,该例示出整个有6个样值的输入帧(其中某些未被使用),以及一个三个神经细胞的输出层(其中并非所有连接部被使用)。为说明清楚起见,此例中只示出了CMA、ITR和IDR寄存器。为实现这个例子,输入标记机制只用来装入那些所需要的输入样值(注意ITR中的值作为将被捕获的输入样值的计数值)。为保证输出神经细胞只使用所需的系数,CMA中保持了一个位压缩屏蔽,该屏蔽被用来装入矢量机处理屏蔽位(VT),用它加载VT位,从而指示哪些系数参与矢量机中的传播函数,vlshftt微代码指令用来取出该位压缩屏蔽位并把它们移入VT位。
输入标记捕获机制与矢量机处理屏蔽位(VT)一起提供了实现非全连神经网络的有效方法,即提供一个使用接收域概念的示例。
(3.5.3)对联合机的主机存储器映象
为了使主机能够访问联合机的内部单元,必须有某种形式的接口电路对主机总线信号进行解码并将它们转变成适合于联合机的控制信号。虽然接口逻辑取决于特定的主机,但对主机来说存储器映象却有些类似。图3-24给出了一个可能的存储器映象。
图3-24详细说明了图3-19中的总线的存储器映象。在该例中有四个联合机装置。图3-24中有四个8K字节的区域,每个区域为一个联合机的随机变换。在这个32K字节的区域下面是流单元。从主机侧看,流式操作就像将数据传输到一个单独的单元。
接口设计者可选择,将流单元映射到任何需要的地址范围。这允许在接口逻辑与主机地址空间之间进行折衷选择。
(3.6)联合机操作
联合机基本为一个8位并行处理阵列,它取入一个8位输入样值,并对该输入进行并行操作。各种事件根据定入MMA的微代码而发生。本节将叙述在有效输入数据存入IDR后所发生的宏操作与微操作。为便于讨论,图3-25给出了联合机内部结构方框图。该方框图示出CMA由矢量机存取并可对IDR寄存器中的单元并行存取。
(3.6.1)联合机的宏观
联合机可以是空闲、输入、执行和输出四种状态之一。有关的转换流程参见图3-26。
输入状态功能已在第3.5节“端口操作”中讨论了。在这一讨论中,假设输入状态与执行状态不同(有一种联合机配置允许同时进行数据输入和矢量机执行。这将在后面更详细地讨论)。当所有样值都装入IDR之后,联合机转换到执行状态。
在执行状态,联合机将通过微代码例程运算输入数据和系数数据。可以有许多如用户需要的不同微代码例程(直到MMA被充满)。标量机所提供的循环结构允许联合机根据系统配置和所实现的范例完成固定次数的微代码执行。去选择执行哪个例程要根据联合机是在前馈信息流中还是在反向的信息流中(在后面将详细讨论)。
在循环的终点,联合机能进入输出状态。这一点上,联合机可开始在端口将数据传输给联合机′。由于执行write微代码指令,联合机成为总线主控者时,就产生输出状态。因此,严格地说,输出状态是执行状态的一个子集。这里对联合机装置间的传输数据的讨论作了说明。在全部数据被传输之后,联合机进入空闲状态,这时主机可能收到一中断信号,表明联合机(子系统)已为另一个输入矢量作好准备。然后,主机存取联合机状态寄存器,从而清掉联合机已完成的输出阶段的状态。主机提供下一个输入矢量并重复以上过程。
联合机可以根据联合机′的命令进入输入/执行状态,这取决于联合机′中的微代码。这种情况出现在当联合机′已确定一个神经细胞(或所有神经)的系数需要调整以便学习的情况下,当联合机处于空闲状态,联合机′通过端口向联合机发出命令指示某个动作。该动作可以是调整神经细胞的系数,或是向系统中加入一个新神经细胞。这一命令功能可以几种方式来实现。联合机′可反过来向联合机发出一个信号,告诉它将完成什么动作。
在联合机′向联合机传输回数据的情况下,将出现向输入状态、然后向执行状态的转变,回送数据可有两种形式。第一种,它可以是矢量效用的数据(如反向传播的错误矢量)。第二种,它可以是指挥联合机去执行某个例程的信号。于是从空闲状态转换为输入状态或是执行状态是可能的。在这里,可执行一个微代码例程(非前馈)去进行某些有关神经系数的学习算法。
(3.6.2)主机和联合机交互作用的详细说明
本节给出主机、联合机与联合机′之间的作用流程的说明,这些说明将示出几种只描述主机和联合机交互作用的情况,以及一种有联合机′参与的情况。
从主机向联合机输入数据有两种基本方法,第一种是先填充后计算,另一种是边计算边填充,两种填充方法中主机所完成的动作十分相似,但完成动作的次序不同。这种分类方法允许用户确定IDR加载与微代码计算之间的并行量。
(3.6.2.1)输入有效位
IDR寄存器包含矢量机用于传播函数的输入数据,每个IDR中寄存器单元包括一位有效位。
当IDR单元被写入时,这些有效位被置“1”,它们可通过这样三种不同机制之一清零:1)RESET信号;2)clearv指令;3)restart指令。在Run方式下,联合机开始执行指令。当被引用的IDR单元为无效时,矢量机将等待有效输入数据。当矢量机查到有效输入数据时,它就执行包含在MMA中的操作。矢量机用P[0]-P[7]寄存器选择被使用的当前输入样值。P[0]-P[7]指针还选择有效位,以便使矢量机可以确定输入样值是否有效,正是IDR的有效位形成了控制用于有效数据的矢量机动作的操作的逻辑,图3-27从逻辑上示出IDR有效位是怎样建立的,IDR有效位实体地位于每个处理部件的矢量进程控制寄存器(VPCR)中。
如前所述,P寄存器用来选择一个单独IDR单元进行操作。然而,IDR寄存器也可用来作一个矢量源。在这种情况下,采用一种更复杂的规则来确定什么时候IDR寄存器有效。这时所有有效位都被使用而不是仅仅检查一个有效位。为了确定IDR寄存器是否有效,在有效位以及与该IDR单元对应的有关的PE的VT位之间进行检查。如果VT位清零(PE未激活),那么有效位的状态为“不必关心”的状态。如果是另一种情况,VT位被置“1”(PE激活),那么有效位的状态被用来确定IDR寄存器的有效性。联合机将一直等待到所有有效单元(一组VT位和一组有效位)为真,才被允许进行处理。
在以下叙述中,流程图中每个方框中的号码都与图3-26中的状态号码相对应。在以下的流程图中,只描述有关的动作。假设主机,联合机与联合机′都被初始化为所需状态,因此在流程图中也只描述了相关的信息。以下图解参见图2-6中给出的总线互连结构。
(3.6.2.2)先填充后计算
在这种情况下,主机填充IDR,然后指令矢量机执行传播函数,一个独立的联合机系统的基本流程示于图3-28。
在该流程中,联合机从复位状态开始,下一步骤由主机完成。主机然后将数据加载到IDR寄存器上(记住被主机写入的单元自动地将本单元的有效位置“1”),主机加载最后一个IDR单元以释放联合机微代码(记住联合机等待有效数据)。联合机中的第一个move指令用来延迟联合机,直到整个IDR被加载。这时,联合机开始计算装入IDR的数据。在计算终点是done/clearv指令。这时,联合机清零有效位并待待主机,主机利用轮询例程或中断例程去了解联合机结束的通知。这时主机将用新输入数据写入IDR,流程如前面一样继续进行。
如果应用中需要联合机多次运算输入数据(搜索输入矢量中的窗口),那么将消除clearv指令。
(3.6.2.3)边计算边填充
这种情况下,主机与联合机之间的并行性比先填充后计算时的情况大得多。一个独立的联合机系统的基本流程在图3-29给出。
这个流程中联合机从复位状态开始。由于IDR包含无效数据(有效位在复位状态被清零、且还未被主机加载),所以矢量机正等待数据。这时主机开始向IDR装入数据。一旦主机开始向IDR之中装入数据,矢量机就开始计算传播函数。因此,与前一流程中输入与执行状态有区别的情况不同,这一流程(边计算边填充)使输入状态与执行状态明显重叠。计算结束时,done/clearv指令被执行(该指令将使IDR有效位清零)。这时,联合机待等主机。主机将利用一轮询或中断例程去查看联合机结束的通知。
(3.6.2.4)联合机和联合机′的交互作用
本节中讨论联合机与联合机′之间的交互作用。不要忘记联合机′被用来聚集从几个联合机中产生的部分神经键结果,并执行在结果的总和上的输出函数。这需要联合机在某种程序控制下将该输出“送到”联合机′。另外,联合机′可将信息返回联合机(如调整一层上的系数,或所有系数)。基本流程在图3-30中给出。
这个流程中,联合机在复位状态开始,由于IDR包含无效数据(有效位在复位状态被清零目还未由主机加载),所以矢量机等待数据。这时主机开始向IDR之中装入数据。一旦主机开始向IDR装入数据,矢量机就可以开始计算传播函数。待前馈计算阶段结束时,在联合机中执行一条write指令,该指令将V[0]寄存器中的值送入联合机′。在联合机′中有一IDR引用。该引用使联合机′等待,直到IDR中出现有效数据为止。
在联合机′中,例程结束时产生一write G0指令,送回联合机,通知其去完成某些动作。在联合机中,该指令循环等待联合机′。此时,可选择另一例程在联合机中开始执行。该例程大概能够调整一个或所有联合机中系数。另外还应记住,联合机′向联合机的传输是广播式的,以致所有联合机都接收由联合机′传输的内容。在这一计算结束时,有done/clearv指令。此时联合机对有效位清零并等待主机。主机可利用轮询或中断例程去查看联合机结束的通知。
(3.6.3)联合机指令流程的微观
联合机在执行状态时,标量机正在向矢量机发出指令。这些指令(见第2.5节“联合机微代码指令集概述”)允许构成许多不同的传播与聚集算法。还有在模糊逻辑的应用中实现模糊化的灵活性。本节还将叙述标量机的微操作。
标量机微代码指令流程在图3-31中用图解表示。halt、done和dskip指令在图3-31示出。
在微定序器中有一个微代码程序计数器PC。复位后,PC值由包含在EPPC寄存器中的地址加载。SP寄存器由包含在EPSP寄存器中的地址加载装入。SP寄存器被加载之后,预取第一条指令。当联合机开始执行微代码时(当指示的IDR单元为空,且输入开始被装入时),MMA中的微代码指令被存取和执行。如果例程序请求输入还未到达的数据(一个IDR单元还未被标准明为有效)时,微定序器一直被拖延,直到数据被放入IDR。在接近前馈例程结束时,有一个dskip指令,该指令关闭循环。执行dskip指令时,PC寄存器由包含在dskip指令中的PC值加载,且被选定的G寄存器减一。该流程一直继续直到G寄存器被减至零为止。这时联合机可以(通过使用done指令)退出执行状态,并进入如前所述的输出状态。
选择另一个微代码例程,装入MMA,是由联合机′送回的可能的命令决定的,在前馈计算与向联合机′传输部分神经键结果的结束之外,联合机′可指示联合机应采取什么动作。在联合机/联合机′命令结构中,联合机′可指出执行哪个例程,这些例程的流程与前馈例程的流程相同。在该例程结束时,联合机准备好开始进行另一个前馈循环。
(3.6.4)联合机的异常模型
有几种形式的异常可能在联合机中出现。其中某些是与标量指令有关,某些是与矢量指令有关。另外一些与多个联合机的交互作用有关。本节将叙述各种可能出现的异常,以及联合机如何响应。
联合机将只在指令边界上响应异常,该规则的例外是端口错误异常。该异常中,只要检测到异常,指令(最可能出现的是写形式指令)立即结束。
当一个异常被检测出来,联合机将完成三项任务。首先,除复位异常之外,联合机把当前PC值装到栈上,PC值将是下一个可执行指令的地址。然后,联合机将从异常指针表中的矢量表中获取异常矢量(见第2.3.44节)。最后,联合机将在对应的异常处理程序中起动异常处理。
(3.6.4.1)复位异常
当两个事件被检测到时,将发生复位异常处理。RESET线必须经过认定然后被否定,而R/S线必须在Run方式下。这两个事件发生后,联合机将开始复位异常处理。联合机首先标出FLS寄存器为空,表示没有被存储的栈指针值。然后联合机将从EPPC和EPSP中分别取出PC与SP的初始值,并从由PC访问的第一条指令开始执行。
(3.6.4.2)标量异常
有两种可能的标量异常:1)标量被零除,2)算术溢出。两种形式的标量异常均可用EMR(异常屏蔽寄存器)中的SDEM和SVEM位屏蔽,即,异常处理可被允许或禁止。对于标量异常,不使用FLS寄存器(即便它是空的)。根据检测,PC值被装到栈上,合适的异常矢量被取出,且异常处理程序被执行,异常例程序完成一条rte指令将使联合机返回到正常指令流中。
(3.6.4.3)矢量异常
有两种可能的矢量异常:1)矢量被零除,2)算术溢出。两种形式的矢量异常都可用EMR(异常屏蔽寄存器)中的VDEM和VVEM位屏蔽。即异常处理可被允许或禁止。矢量异常与标量异常有些不同,其中任何一个PE都可能引起异常。确认引起异常的PE(或几个PE)正是异常处理程序的责任。矢量异常时,不使用ELS寄存器(即便它是空的)。根据检测,PC值被装到栈上,合适的异常矢量被取出,且异常处理程序被执行。在异常例程序时完成一条rte指令将使联合机返回到正常指令流中。
(3.6.4.4)端口错误异常
端口错误异常可由指令或抽头与开关配置引起。有四种类型的端口错误异常,即IDR争用、端口冲突、端口交错与开关异常,对所有访问都调用端口错误异常处理程序。确定端口错误是由以上四种异常中的哪一种引起的责任由端口错误异常处理程序来承担。该处理程序可通过询问APMR和PCR寄存器来确定异常的类型。
交错与冲突异常是具有外部数据移位的内部写指令的结果,因此装入栈中的PC值,将指向下一个可执行指令。在争用的情况下,联合机可以也可以不正在执行指令。它也许正停在done或halt指令上。记住,争用是在Run方式下同时向联合机写入的结果,因此PC值可以是也可以不是有效的,无论在争用异常时联合机的状态如何,异常处理程序都被调用。遇到一条rte指令,先前的状态被恢复(即在done与halt下等待)。
(3.6.4.5)多个端口错误异常的解释
表3.6示出了所有可能的奇异端口错误异常。如果PCR与APMR中出现任何其他的位组合,则是由多个端口错误异常引起的,在下面讨论中叙述了多端口错误异常的5个例子。
当多端口错误出现时,PCR将与APMR结合在一起使用,来确定错误原因,端口错误产生内部异常状态,该状态使PC和SP值压入栈中,且端口异常矢量将从EPPE寄存器取出。端口异常仅仅在Run方式操作期间发生。
重要的是要注意PCR是一个控制寄存器(反映当前抽头与开关设置),APMR是一个状态寄存器(反映当前的通过联合机的数据移位)。只利用APMR本身不足于确定端口异常的原因。
观察表3.6的另一个方法是示出APMR中的哪些位被PCR中的位所关注。由于端口冲突异常与PCR的位设置无关,因此这张表并不完全,表3.7提供了有关APMR的更多信息。
例1:N-W  IDR争用
第一例涉及单一错误情况,可从表3.8中的PCR设置看出,北端口与西端口的抽头位被闭合(完成连接),数据同时在北、西端口被写入。这造成IDR资源争用(它们都正试图同时向IDR写入),而联合机进入异常状态,图3-32说明了例1中的数据移位。
例2:N-W  IDR争用/E端口交错
该例涉及两种不同的错误情况,在图3-33中作了说明,表3.9中示出了例2中激活的位,像上例一样北和西抽头位被置“1”,且东-西开关也被置“1”。向北和西端口的外部写入引起一个N-WIDR争用异常。由于E-W开关闭合,与微代码启动的至东端口写同时进行的对西端口外部写入将引起E(东)端口交错异常。
例3:N-WIDR争用/E开关冲突
本例中(见图3-34和表3.10)北和西抽头位被置“1”,且东-西开关被置“1”。数据同时写入西北和东端口。与前例一样,当北和西抽头位被置“1”时,同时向北和西端口的写入将引起IDR争用异常。由于东-西开关闭合,同时向东和西端口的写入将引起东-西开关争用。
例4:E端口交错/E端口冲突E-W开关争用
本例中(见图3-35和表3.11)东-西开关被置“1”。外部数据正进入东、西端口,同时还有微代码启动的向东端口的数据写出。由于开关闭合,则外部西端口写出与内部东端口写出相结合而引起一个东端口交错异常。内部东端口写出与外部东端口写入相结合就产生一个东端口冲突异常。最后,由于东-西开关闭合,(外部)东端口与西端口的写入引起一个东-西开关争用异常。
例5:N-W  IDR争用/E端口交错/E端口冲突/E-W开关争用
在这最后一个例子中(见图3-36和表3.12),东-西开关置“1”,北和西抽头位也置为“1”。由于内部产生写,数据正向东端口写出,同时,数据还正被写出北、东和西端口。由于开关闭合,内部东端口写出与外部西端口写引起交错异常。内部东端口写入与外部东端口写出引起东端口冲突。同时的外部东和西端口写与东-西开关置“1”,引起东西开关的冲突异常。北和西端口同时外部写入,与北和西抽头位置“1”,将引起N-W  IDR冲突异常。
(3.6.5)微代码程序结构
本节将给出几个微代码程序段的结构。第一段程序将示出内部寄存器的初始化,然后示出转变到循环区段之中以便为联合机块中的所有神经与神经键计算神经键函数。第二段例程将示出一个由联合机提供的内部循环能力的例子。第三程序段示出并说明了在两联合机之间传递信号的机制。第四程序段示出并说明了矢量机中条件执行机制。最后一例是代码字段,说明了减小的浮点例程是怎样构成的。
(3.6.5.1)初始化和循环
第一段例程实例是一个简单的积之和函数,用于求装入IDR的输入与装入CMA阵列中的系数的乘积之和。参考图3-37。当例程开始时,用指令来初始化P[0]和P[1]指针,并加载G[0]寄存器。注意,这些指令只执行一次,这是因为repeat指令只是用循环起始PC、结束PC与计数值(PBR,RER和RCR值)来初始化循环。该机制向微代码例程提供初始化区段和循环区段。
该循环包含用来执行积之和函数的指令。第一个指令将当前选中的系数从CMA中移入VD寄存器,下一步完成当前输入值与V0值的相乘(记住,P指针选择使用哪些值,++记号使该指针寄存器的内容在指令结束时增加)。下一条指令将积的最低有效字节(V1中)加至V3寄存器中。再下一条指令将V0寄存器中的最高有效字节及来自上一次相加的进位加入V2寄存器中。当最后的加指令结束时,PC等于RER寄存器中的内容。根据这一条件,RCR寄存器减少并被检测是否为零,如果结果是非零值,RBR寄存器的内容传递给PC,且循环继续。最后RCR计数器为零,执行将下行至done指令。此时,联合机从执行状态转变为输出状态。
(3.6.5.2)多重循环
第二个例程示出了说明由G寄存器给出的内部循环能力的指令段。图3-38示出了一个说明双重循环的代码实段的程序。在该代码字段的开始,一个一般的操作码被执行(只是为了填充本例)。在这一点上,要执行的是外循环,一个新的循环计数被装入G0寄存器。内循环一直到G1计数器达到零才被执行,此时内部寄存器(RBR、RER、RCR)用来确定何时内循环结束。以外循环dskip指令继续执行循环直到外循环计数达到零并且done指令被执行为止。dskip指令减小所选择的G寄存器,然后检测G寄存器是否为零值。这种类型可被用来形成多重循环。记住,repeat指令只可以有一级(因为只有一套RBR、RER和RCR寄存器)。
(3.6.5.3)两个联合机之间的信号传送
本节提供的代码字段说明了在两个(或更多)联合机之间信号的使用。基本机制是利用IDR中的有效位拖延指令执行到正确的时刻。在这种情况下,被传递的数据是将被执行的另一个例程的地址。这时联合机需要来自另一个装置的信号,要被执行的代码应将IDR寄存器中的有效位清零。然后微代码存取将被写入的IDR单元。当另一个联合机对IDR寄存器完成write微代码指令时,等待的联合机采取某种行动。图3-39列举了一个这样的例程段。
(3.6.5.4)条件执行
条件指令后面的基本思想是清零(或设置)处理屏蔽位VT。正是这个VT位控制处理部件(PE)中的微代码指令的操作。在此例中八个矢量寄存器中的四个被检测,在这些检测的基础上某些处理部件执行指令而另一些不执行。表3.13中的状态信息参见图2-75的状态号码。本例假设所有PE都以VT=1、VH=0开始。前两个操作码(操作码1、操作码2)由全体PE执行。vifeqV0,V4指令命名PE2、PE3、PE4中的VT位被清零,这使得操作码3只由PE1来执行。下一个velse指令允许由PE2、PE3、PE4来执行操作码4,vifeq V1,V4指令使PE2的VT位保持为“1”,而PE3和PE4的VT位清零。请记住,PE1已从可能执行指令的PE表中落榜,该动作使操作码5在PE2中执行,接下来的velse指令允许PE3与PE4执行操作码6,vifeq  V2,V4指令使PE3中VT位置“1”,使PE4中的VT位清零,这使操作码7只能在PE3中执行。velse指令允许PE4执行操作码8指令。最后的vendif指令使所有PE复位为它们的pre-vif状态,于是PE1、PE2、PE3和PE4都执行操作码9。这就是执行vif-velse-vif-velse-vendif形式的指令的基本机制。表3.14提供了处理部件寄存器的内容。
(3.7)微代码启动的端口写操作
当联合机在Run方式中时,有四个相同端口,它们可便于控制主机和其他系统部件,如联合机′,的高效并行的信息传输。联合机的设计能使其利用各端口将多个联合机连接在一起去协调一致地工作,将多个联合机连接在一起,不需要外部逻辑。有关例子参见第3.8节“联合机总线布置”。
端口的设计能使其为联合机提供一个简单机制,该机制能使联合机向联合机′传输部分神经键结果去求总和。该传输是固有地流式的,数据量是可由联合机程序员来控制的。记住,在Run方式下,所有传输都是来自主机的同样的流传输,所传输的数据量或是由指令(按字节的标量写传输)控制,或是由标量寄存器的内容控制(例如从PE(0)开始和以PE(n)结束的矢量写)。
数据传输方向总是写操作,并且由write微代码指令控制。在E/W总线上的信息流程走向如下。当标量机退出计算状态,每个装置都要将数据送往联合机4′装置。在联合机0中write指令无条件地执行。另一方面,联合机1装置需等待联合机0(联合机2与联合机3也如此)。该机制使几个成一行的联合机之间的数据移动与一个联合机′装置相协调。这种监视机制与第3.6.5.3节“两个联合机之间的信号传送”所述的信号传送的例子非常相似。应注意,数据传送不限于东西传输,在Run方式下数据可以沿四个方向中任何一个传输。
在具有未用神经细胞的系统(一个被部分使用的联合机)中,用户需要去管理那些未用单元中的值,以免它们与该神经网络中的正常操作发生冲突。
当链中的最后一个联合机结束向联合机′传输数据时(它必须知道有多少个支持联合机),联合机的输出阶段就完成了。这时联合机′能够指出任何应采取的行动。联合机/联合机′系统应当具有通讯协议,在需要的时候它能使联合机′将命令和数据信息反向传送给联合机。
(3.8)联合机总线布置
本节将叙述总线端口开关与抽头结构基本的思想,它使联合机能在许多不同总线布置中使用。本节还将叙述几种对于联合机端口的能力是可行的总线布置。
(3.8.1)联合机端口开关与抽头
联合机包含灵活的端口开关与抽头机制,它能使出现在一个端口的数据向前传送到另一个端口(具有一个时钟周期的延时),端口开关由联合机端口控制寄存器(PCR)中的NSS与EWS位控制。抽头位也由该寄存器控制。这种抽头控制功能允许出现在一个端口的数据被装入芯片中的IDR寄存器。这使联合机有能力仅向前传输数据,或在向前传递数据的同时窥视或捕获它。必须注意,在Run方式下的加载机制被用来加载IDR。有关更多信息参见第2.3.6节“端口控制寄存器”,图3-40示出该功能的象征性表示。
(3.8.2)总线端口冲突与出错
一般可能出现三种类型的情况。这三种情况中的某些被认为是致命的,并将使标量与矢量机执行异常处理。有关表示这些情况的状态参见第2.3.7节“联合机端口监视寄存器(APMR)”,有关更详细的端口错误的异常处理的说明参见第3.6.4.4节“端口错误异常”。
(3.8.2.1)联合机碰撞条件
当一外部操作(其向联合机写入)与一内部写操作相冲突时,发生碰撞情况,由于控制线xCI与xCO)的定时,使得在电损害发生之前有足够的时间检测该条件。
(3.8.2.2)联合机争用条件
由于在特定联合机内部的开关与抽头的设置,引起争用,当对联合机进行两个外部存取时,发生争用。记住,在Run方式下,所有操作目的地都是IDR,因此两个外部写操作会争用IDR。
(3.8.2.3)联合机交错
当传输中的数据(通过闭合开关)与来自-write指令的数据发生交错时,就出现交错条件。当多个联合机失去与数据传输相关的同步时,也出现这种条件。
(3.8.2.4)联合机开关争用
当相对的两个端口被同时写入,且连接开关闭合时,发生开关争用。
(3.8.3)联合机环形结构
在环形结构中,两个端口被用来连接环形配置中的联合机。详细情况在图3-41中示出。
在环形结构中,端口开关可被用来隔离环的不同部分,提高系统的并行性。记住,开关与抽头控制既可由主机又可由微代码程序来更改。环形结构提供重新配置的能力,在环形结构中,可使用一种方式来构成微代码与主机使得网络能随时间变化。动态重新配置能力是该结构的主要特性。到达环的数据可由北端口或南端口提供。
图3-42提出了一种可能的环形配置,该列中有6个联合机装置在前馈网络中连接起来。联合机0到联合机2为第一层,联合机3到联合机5为第二层。如在本例中可以看到的,在对于数据计算与传输存在着可观的并行能力的可能性。在进程的计算与聚集阶段,第一层可以正在处理n+1时刻的输入样值,而第二层(联合机3到联合机5)可以正在计算n时刻的结果。同样,对于数据传输,联合机5可以正在输出n时刻的结果,而联合机2则正在传输n+1时刻的数据,主机正在输入一个n+2时刻的新输入帧。在图3-42示出的例子中,开关和抽头的设置可使各层隔开,抽头设置还示出开关中的数据如何流动(即哪一装置正在接收数据)。
(3.8.4)二维联合机结构
联合机被设计为二维互连的。联合机利用四个端口与其相邻的联合机的互连与前面描述的环形结构相类似。它提供行和列的重新配置能力,这取决于对阵列的应用,图3-43示出了一个小的联合机二维阵列。
(第4节)联合机总线操作
本节描述联合机的北、东、南和西端口的定时关系,并分成三个部分进行讨论。第一部分涉及联合机主机存取特有的定时(即随机存取定时和流存取定时)。本节的第二部分涉及作为响应write指令的主机装置的联合机特有的定时(注意这些write的目的地总是接收装置的IDR寄存器)。第三部分涉及其它定时,诸如done(及BUSY)、R/S、INTR、RESET及1149.1检测端口定时。表4.1提供了定时图的快速检索。
(4.1)联合机端口定时
联合机端口构成了主机与联合机子系统之间的主要接口。所有的初始化信息和数据正是通过这些端口传送的。联合机端口是完全同步的,并利用CLK信号来为联合机和主机系统之间的传送计时。这些端口的行为取决于R/S控制线。正是此线决定了联合机所进行的存取的类型(主机或联合机主控器)。当R/S处于逻辑1时,联合机处于“Run”方式,当R/S信号为逻辑0时,联合机处于“Stop”方式。“Run”方式是用于联合机的微程序执行的,而“Stop”方式是用于主机存取的。各联合机端口是8位宽的,它支持操作的随机存取和流式存取方式。对于某些操作,多个端口参与联合机的存入/取出。
端口信号与CLK信号间的一般关系,是至端口的所有输入及双向输入信号均被内部地锁存在CLK信号的上升沿。相反,所有输出及双向输出均在CLK信号的下降沿被启动。
联合机与主机之间的数据传送涉及下列信号:
*数据总线xD[7∶0]
*控制信号(xCI,xCO,R/W,OP,EN,COL,ROW)
当联合机处于“stop”方式时,所有控制信号都是单向的,而数据xD[7∶0]信号是双向的。主机通过发出利用简单握手协议的控制信号以确保数据的正确移动,来使数据进出联合机。R/W和OP线控制所进行的操作的种类,而EN、ROW及COL信号起装置选择和数据由控制的作用。xCI和xCO线在被激活时,表示有效的数据是在数据线上。
当联合机处于“Run”方式时,控制信号EN、OP及R/W是“不必关心”的。xCO及xCI线执行与它们在“Stop”方式下所执行的相同的功能。信号ROW及COL现在是双向的,并参与最大值及最小值指令。只有写操作(数据流出联合机主控器)是被充许的。数据传送受write指令的控制。在微程序的控制下,发出一个write指令,它把数据传出一个联合机端口并送到相邻的联合机器件的IDR。根据抽头及开关设置,被写的数据将流经和/或被存入相邻的装置。
该联合机装置被设计为在两维阵列中工作的。以下描述参见图4-1。对于随机方式的存取,地址信息从陈列的北和西侧流到ROW和COL信号两者都激活的装置。有激活的ROW或COL之一(但不是二者同时)的装置参与地址/数据移动,但本身不提供数据。存取的数据流向/自南边并流到选定的装置(ROW和COL均是激活的)。
对于流式存取,数据可流自南或东边之一(但不是二者)。在此情况下一列或行被选出,以供流向/自。鉴于对流式操作不要求地址(它是内部地产生的),故数据流向/自选定的装置并流向陈列的南或东侧。
以下段落描述对主机及联合机总线周期两者的随机及流式操作方式的总线周期。对在以下段落中所用的符号的描述,请参见1.3节的约定。
(4.1.1)主机随机存取
图4-2显示了主机随机存取方式的读和写操作的定时。回想到对随机存取,地址信息从北和西端口流入联合机且数据流入或流出南端口。以下流程描述了发生的操作的序列(OP==1)。
时钟周期2
R/W、ROW、COL、OP及EN信号被认定,以表明要发生随机存取读。WCI及NCI信号被认定,以表明地址信息将出现在下一时钟周期中。
时钟周期3
在此周期的开始,前述控制信号被内部地锁存和解码,以启动对被驱动到北和西端口的地址信息的锁存。另外SCO也被驱动出,以表明在下一时钟周期中将启动数据。
时钟周期4
在此时钟周期的开始,地址被内部地锁存且存储单元被存取,以使读取的数据能被在CLK信号的下降沿上被驱动出。另外,在CLK信号的下降沿上,SCO信号被否定。
时钟周期5
在CLK信号的下降沿上,驱动出SD信号的数据是三态的。
时钟周期6
端口不活动。
时钟周期7
R/W、ROW、COL、OP及EN信号被认定,以表明要发生主机随机存取写。WCI和NCI信号被认定,以表明在下一时钟周期将提供地址信息。
时钟周期8
在此周期的开始,前述控制信号被内部地锁存和解码,以启动对驱动到北和西端口上的地址信息的锁存。另外,SCI被认定,表明在下一时钟周期中数据将是有效的。
时钟周期9
在该时钟周期的开始,地址及SCI信息被内部锁存,且存储单元被存取,从而使写入的数据可在CLK信号的下降沿上被锁存。
时钟周期10
在CLK信号的下降沿,在SD信号上被驱动进来的信号是三态的。
(4.1.2)主机随机地址传送西至东
图4-3显示了主机随机存取方式地址传送的定时。这种传送发生在被存取的装置与所选的装置共用同一行时。前面提到,对于随机存取,地址信息从北和西端口流入联合机,且数据流入或流出南端口。下面的流程描述了所发生的操作序列(OP==1)。
时钟周期3
ROW、OP及EN信号被认定,以表明要发生随机存取方式传送。对于这一装置COL信号是不活动的。地址A1被驱动到WD线上,使之能在CLK信号的下一个上升沿上被锁存。该地址的源可以是另一联合机装置(在阵列的内部)或是主机驱动地址信息至联合机边缘装置。WCI信号被认定,以表明地址信息将在下一时钟周期中被提供。
时钟周期4
在周期的开始,前述控制信号被内部地锁存和解码,以启动对被驱动到西端口上的地址信息的锁存。另外,ECO被驱动出,以表明将在下一时钟周期中启动数据。
时钟周期5
将在该周期的开始被锁存的地址信息,在CLK信号的下降沿上驱动到ED信号上。
时钟周期6
将在该周期的开始时被锁存的地址信息,在CLK信号的下降沿上驱动出。WCI输入被否定,以表明在WD上的地址信息不再有效。
时钟周期7
控制信号ROW、EN及地址信息WD被否定,表明下一周期是传送的最后一个周期。控制信号ECO响应在前一周期中否定的WCI信号而否定。
时钟周期8
在CLK信与的下降沿,被驱动出ED信号的数据是三态的。
(4.1.3)主机随机地址和数据传送北和南
图4-4显示了主机随机存取方式的两种情况的定时。第一种情况(时钟周期2至6)是该装置与选定的装置共用同一列的情况。在此情况下,地址信息从北端口向下流至南端口。在第二种情况(时钟周期7至11),该装置仍共用同一列,但数据被向上或向下传送。在考虑联合机装置的情况下,传送的信息的种类(地址或数据)及方向完全由NCI或SCI信号决定。以下流程描述了所发生的操作序列(OP==1)。
时钟周期2
COL、OP和EN信号被认定,以表明将发生随机存取方式传送。对于这一装置,ROW信号是不活动的。地址A0被驱动到NO线上,从而使之能在CLK信号的下一个上升沿上被锁存。该地址的源可以是另一联合机装置(在阵列内部的)或者是主机驱动地址信息至联合机边缘装置。NCI信号被认定,以表明将在下一时钟周期中提供地址信息。
时钟周期3
在本周期的开始,前述控制信号被内部锁存和解码,以启动对驱动到北端口上的地址信息的锁存。另外,SCO被驱动出,表明将在下一时钟周期中启动数据。
时钟周期4
将在该周期开始时被锁存的地址信息,在CLK信号的下降沿上,驱动到SD信号上。NCI输入被否定,表明ND上的地址信息不再有效。
时钟周期5
控制信号ROW、EN及地址信息ND被否定,表明下一周期是最后一个传送周期。控制信号SCO响应于在前一周期中否定的NCI信号而否定。
时钟周期6
在CLK信号的下降沿边,被驱动出SD信号的数据是三态的。
在以下描述中,数据被描述为向上流动的(写操作)。对于读取操作,读取的数据的定时看上去就象刚在时钟周期2至6中描述过的地址定时。
时钟周期7
COL、OP及EN信号被认定,以表明将发生随机存取方式的传送。对于这一装置,ROW信号是不活动的。数据D1被驱动到SD线上,以使之能在CLK信号的下一个上升沿上被锁存。此数据的源可以是另一联合机装置(在阵列的内部),或者是主机驱动数据信息至联合机边缘装置。SCI信号被认定,以表明将在下一时钟周期中提供数据信息。
时钟周期8
在该周期的开始,前述控制信号被内部锁存和解码,以启动对被驱动到南端口上的数据信息的锁存。另外,NCO被驱动出,表明数据将在下一时钟周期被启动。
时钟周期9
将在该周期开始时被锁存的数据信息,在CLK信号的下降沿上驱动到ND信号上。SCI输入被否定,表明在SD上的数据信息不再有效。
时钟周期10
控制信号ROW、EN及SD上的数据信息被否定,表明下一周期是传送中的最后一个周期。控制信号NCO响应于在前一周期中否定的SCI信号而否定。
时钟周期11
在CLK信号的下降边,被驱动出ND信号的数据是三态的。
(4.1.4)带有早期终止的主机随机地址/数据传送北/南
图4-5显示了在第4.1.3节“主机随机地址和数据传送北和南”中描述的两种情况的定时。这里不同的是EN信号被用来提早终止传送,而前一情况有较长的EN时间。这一不同之处的原因,是由于对于一个联合机阵列来说,地址和数据这两个分量汇合在选定设备上(认定的ROW和COL)所需的时间会很长。根据外部控制硬件的复杂性,插板可通过给EN驱动器逻辑增加更多的功能性,来节省(进入阵列的)存取时间。简单的情况是所有的存取都按最坏情况时间计时。该时间应是存取联合机阵列中最右上方处的装置的时间。以下描述图4-4和图4-5的区别。
时钟周期4
在CLK信号的下降沿,在该周期开始时被锁存的地址信息被驱动到SD信号上。NCI输入被否定,表明ND上的地址信息不再有效。控制信号ROW、EN及地址信息ND被否定,表明下一周期是传送的最后一个周期。
时钟周期5
控制信号SCO响应于在前一周期中否定的NCI信号而否定。在CLK信号的下降沿,被驱动出SD信号的数据是三态的。
时钟周期9
在该周期开始时被锁存的数据信息,在CLK信号的下降沿,被驱动到ND信号上。SCI输入被否定,表明SD上的数据信息不再有效。控制信号ROW、EN被否定,表明下一周期是传送的最后一个周期。
时钟周期10
在SD上的数据信息及控制信号NCO响应于在前一周期中否定的SCI信号而否定。在CLK信号的下降沿,被驱动出ND信号的数据是三态的。
(4.1.5)主机数据流读取
图4-6显示了主机数据流式存取方式读的定时。流式读取传送从具有被认定的ROW和COL信号的一串装置取得数据。在下述情况中,两个装置共用同一ROW信号。假定“端”装置处于联合机阵列边缘。为了起动数据流式存取,当EN信号被认定时,要求边缘处的装置(装置#1)使西端口数据流控制输入WCI被认定。这一标志告诉该特定联合机它是用于数据流式传送的线路中的第一个。
联合机装置有内部控制寄存位HSSR:HSP[1∶0],以控制数据流的方向。数据流传送可经过南(HSP[1∶0]=01)或东(HSP[1∶0]=10)端口(但不是二者)发生。下述流程假定,两个联合机装置中的每一个将流出两字节的信息(即DCR1=02)。为了简化讨论,此部分描述中的信号被标以上标。这是为了表明与信号相关联的装置。例如,\X\TO(WCI1)是与装置#1相联系的WCI输入。以下的流程描述了所发生的操作的序列(OP==0)。
时钟周期2
R/W、ROW、COL、OP及EN信号被认定,表明要发生数据流存取读。WCI1信号被认定,以表明联合机#1是用于数据流传送的链中的第一个。
时钟周期3
在该周期的开始,前述控制信号被内部地锁存和解码,以启动要被驱动到东端口上的数据。另外,ECO1(WCI2)被驱动出,以表明将在下一时钟周期启动数据。
时钟周期4
在该时钟周期的开始,WCI2信息被内部地锁存,以准备下一时钟周期中的数据。联合机#2,响应于被锁存的WCI2,在CLK信号的下降沿认定\X\TO(ECO2)信号。在CLK信号的下降沿,联合机#1装置把数据驱动到ED1上。
时钟周期5
在该周期的开始,联合机#2锁存来自联合机#1的数据,并将其传送到东端口,在那里其数据在CLK信号的下降沿被驱动出。联合机#1否定ECO1信号,以向联合机#2表明联合机#1已经完成其数据流传送(联合机#1是空的)。在CLK信号的下降沿,联合机#1在ED1信号线上驱动最后一块数据。
时钟周期6
在该周期的开始,联合机#2锁存来自联合机#1的下一块数据,并在CLK信号的下降沿将其驱动到ED2信号上。另外,在该周期的开始,联合机#2锁存并解码WCI2输入,以确定联合机#2当前是数据流中的数据的提供者。现在联合机#2使ECO2保持被认定(现在是表明联合机#2正在提供数据)。
时钟周期7
在CLK信号的下降沿,联合机#2把其第一个数据提供给数据流传送。
时钟周期8
在CLK信号的下降沿,联合机#2把其第二个数据提供给数据流传送。另外,在CLK信号的下降沿,ECO2线被否定,以表明下一时钟周期将是来自联合机#2的数据的最后一个周期。ROW、COL、EN信号也在此周期中被否定,以表明下一时钟周期是最后一个。
时钟周期9
在CLK信号的下降沿,在ED2上被驱动进来的数据是三态的。
根据控制联合机陈列的逻辑的复杂性,可以两种方式处理数据流传送的终结。第一种要求控制逻辑知道数据流的持续时间,从而能在正确的时间否定EN、ROW、COL等控制信号。第二种利用在陈列的右(或底)边的ECO(或SCO)信号作为数据流可被终止的指示。
(4.1.6)主机数据流存取
图4-7显示了用于主机数据流写入存取定时的定时图。注意数据流写操作可提供要在各联合机装置中复制的数据(取决于HSOR寄存器的状态)。其主要目的是向各联合机提供独特的数据。数据流写传送向其使ROW和COL信号均被认定的一串装置发送数据。在下述情况下,两个装置共用同一ROW信号。在流写传送的情况下,数据流是单向的。在流写的情况下,直到ECI信号被认定(表明有效数据在ED信号上),数据才被写入。因此,在流写的情况下,涉及到ECI和WCO(对北南传送为SCI、NCO)流控制信号,而不是ECO和WCI(SCO、NCI)信号。
联合机装置有控制流传送方向的内部控制寄存器位HSSR:HSP[1∶0]。流写可通过南(HSP[1∶0]=01)或东(HSP[1∶0]=10)端口发生,但不是通过两者。下述流程假定,两个联合机装置中的每一个将接收两字节的信息。第一装置(联合机#2)中的HSOR寄存器包含值0x0000,而第二装置(联合机#1)中的HSOR包含值0x0002。根据OAR/DCR寄存器及主机流选择寄存器的内部设定,特定的联合机可以仅装入一部分传送的数据。为简化讨论,在本描述中的信号被标以上标,以表明与该信号相关联的装置。例如,WCI1是与装置#1相关联的WCI输入。下列流程描述了发生的操作序列(OP==1)。
时钟周期2
R/W、ROW、COL、OP及EN信号被认定,以表明将发生流写存取。另外,ECI2被认定,以表明被写的数据将在下一时钟周期中有效。
时钟周期3
在该周期的开始,前述控制信号被内部地锁存和解码。要被驱动到东端口ED2上的数据被提供给联合机#2。另外,在CLK信号的下降沿,WCO2响应于在前一时钟周期中被认定的ECI2而被认定。装置联合机#2HSOR现在与一直在计数有效数据(对此装置来说其值为零)的内部计数器相匹配。联合机#2现在已准备好接收数据,直至DCR计数达到零为止。
时钟周期4和5
联合机#2把数据驱动到至联合机#1的WD2线上。下一块数据在ED2线上驱动。
时钟周期6
在该周期的开始,联合机#2锁存下一块数据。另外,控制信号ECI2被否定,表明在下一时钟周期中最后一块数据将出现在ED2线上。装置联合机#1HSOR,现在与一直计数有效数据的内部计数器相匹配。联合机#1现在已准备好接收数据,直至DCR计数达到零为止。
时钟周期7
在该周期的开始,联合机#2锁存下一块数据。另外,控制信号ROW、COL、EN、R/W及WCO2被否定,表明流写将在下一时钟周期终止。
时钟周期8
在该时钟周期的开始,最后一块数据被联合机#2锁存和内部存储。
(4.2)联合机主控机操作
在联合机微代码的控制下,联合机可从四个端口中的任何一个向外写数据。这仅限于联合机的写操作(数据从一个联合机流入另一个)。这由write微代码指令集来控制。这些写周期是仅有的可能传送,且写操作的目的地总是IDR寄存器。
联合机仅能在“Run”方式中执行微代码写操作。这是由于写操作是由一条指令起动的。当联合机处于“Run”方式时,控制信号EN、OP及R/W是“不必关心”的。xCI和xCO线执行与他们在前面例子中所执行的相同的功能。信号ROW及COL现在是双向的;并参与最大值和最小值矢量指令。只有write操作(数据从主控机流出)被允许。数据传送受write型指令的控制。
为避免因猛烈的微程序操作或定时失配而造成的电气损坏,联合机将总是在驱动数据之前一个时钟周期驱动出xCO线。这保证了可在总线上出现任何电气争用之前检测到同时的写操作或失配的写操作。
根据表关和抽头的联合机内部设定,所提供的数据可以1)经闭合的开关传送,2)被断开的开关阻止传送,3)把数据放入带有闭合抽头的IDR寄存器,或4)因抽头断开而不影响IDR寄存器。
端口信号与CLK信号的一般关系,是到端口的所有输入和双向输入信号均在CLK信号的上升沿被内部锁存。相反,所有输入和双向输出均在CLK信号的下降沿被启动。
在联合机或主机与运行的联合机之间的端口上的数据传送,包括以下信号:
*数据总线xD[7∶0]
*控制信号xCI和xCO
(4.2.1)联合机写操作所有有效数据
图4-8显示了联合机#2和联合机#1之间的四字节传送的定时。write指令的长度由标量数据存器之一中的值控制。对于此例,包含在此标量数据寄存器中的值为4。被执行的实际指令可以是vwritew VO,GO。另外,联合机#1有闭合的东/西开关,从而使提供给东端口的数据被向前传到西端口。对联合机#1,东抽头是打开的,从而使提供给该装置的数据仅流经联合机#1,而不改变其内部IDR存储单元。
时钟周期2
联合机#2,在CLK信号的下降沿,响应于write指令的执行而认定WCO2输出。此动作表明在下一时钟周期数据将将被提供在WD2输出上。
时钟周期3
在CLK信号的下降沿,联合机#2把PE#0中的VO寄存器的值驱动到WD2线上。另外,在CLK信号的下降沿,联合机#1响应于在前一时钟周期中被锁存和解码的ECI1而认定WCO1
时钟周期4和5
在这些时钟周期中,数据在时钟周期的开始被锁存、通过、并在CLK信号的下降沿被驱动出。
时钟周期6
响应于write指令终止(在联合机#2中起动的write),WCO2线在CLK信号的下降沿被否定。另外,最后一块数据被驱动到联合机#2(WD2)的输出上。
时钟周期7
响应于ECI1信号,联合机#1在CLK信号的下降沿否定WCO1信号并驱动出最后一块数据。
(4.2.2)联合机写操作部分有效数据
图4-9显示了在联合机#2和联合机#1之间的两字节传送的定时。write指令的长度,由标量数据寄存器之一中的值控制。对于此例,包含在该标量数据寄存器中的值是4。所执行的实际指令可是vwritew V0,G0。之所以仅传送两个字节的原因,是因为四个PE中的两个清除了它们的VT位(表明由于无效数据它们将不提供数据)。另外,联合机#1的东/西开关断开,使提供给东端口的数据无法传到西端口。对联合机#1,东抽头闭合,从而使提供给该装置的数据仅写到联合机#1的IDR。注意,联合机#1的IDR的前两个存储单元将被此操作写入。来自源的写入过程中的间隔,具有在目的地处组装数据字节的作用。
时钟周期2
在CLK信号的下降沿,联合机#2,响应于write指令的执行,认定WCO2输出。此动作表明在下一时钟周期中数据将被提供在WD2输出上。
时钟周期3
联合机#2在CLK信号的下降沿把PE#0中的V0寄存器的值驱动到WD2线。另外,WCO2信号响应于内部状态而被否定,以使下一个PE清除其VT位。
时钟周期4
WD2在CLK信号的下降沿上是三态的。
时钟周期5
WCO2,在CLK信号的下降沿,响应于带有将在下一时钟周期被送出的数据的激活的PE,而被认定。
时钟周期6
响应于write指令终止(它在联合机#2中被起动),在CLK信号的下降沿WCO2线被否定。另外,最后一块数据被驱动到联合机#2的输出端(WD2)上。
(4.2.3)联合机写冲突定时
图4-10显示了在端口之一上的联合机冲突的定时。存在着两种可能类型的冲突。第一类型与同时执行写操作的两个联合机有关。在此情况下,xCI信号(它领先于数据一个时钟周期)均变成激活的。此状态(比如ECI和ECO均激活)表明已发生了端口冲突。第二类型发生在端口写操作正在进行且在同一端口执行一个write指令时。在此情况下,数据被驱动到端口上,但xCI信号再次被用来在发生任何电气损坏之前检测冲突。
当端口冲突被(两个联合机都)检测到时,由两个装置都执行异常处理(即使一个已被中止且数据刚刚通过)。冲突异常矢量被取出,冲突异常处理被起动并且适当的状态位被设定。
时钟周期2和3
这两个时钟周期表明同时的端口冲突。
时钟周期8至11
这些时钟周期表明正在进行中的写和另一个被执行的写。
(4.3)其它定时
联合机上的其余信号处理done、Run/Stop、中断、复位及用户测试功能。以下的图示提供了这些特征的定时。
done的指示(它认定BUSY信号)可来自两个来源中的一个。首先,done指令在被执行时否定BUSY信号并把联合机保持在当前的PC存储单元。这类似于中止(halt)指令,但它有否定BUSY输出的附加作用。其次,若联合机处于单步操作方式,BUSY信号将在当前指令结束时否定(见图4-11)。
R/S信号告诉联合机装置它处于什么状态,是“Run”方式(R/S=1)还是“Stop”方式(R/S=0)。在数据“正在转换”且R/S线转变到“Stop”状态的情况下,数据被保持在内部存储单元中,以使传送可以从其中止处重新开始。此外,若当R/S信号从“Run”方式转变到“Stop”方式(1→0)时当前正在执行一指令,则将保留足够的状态信息,以在联合机回到“Run”方式(R/S=1)时恢复执行。
联合机中断可通过任何数目的内部条件来产生,有关中断事件的更详细信息,请参见第2.3.22节“中断状态寄存器#1(ISR1)”及第2.3.24节“中断状态寄存器#2(ISR2)”。
联合机的复位序列需要4个时钟周期来执行内部初始化功能。
联合机还包括一用户可存取的测试端口,它允许多种插板测试性能。该测试端口是IEEE1149.1兼容的。对该测试端口的操作,用户可参看IEEE1149.1文件。
(4.3.1)联合机BUSY输出定时
图4-12显示了联合机BUSY信号的定时。第一种情况表示done指令。第二种情况表示指令的完成是单步方式。BUSY线被用作开路漏极输出端,从而当所有联合机均已执行了一条done指令时,外部上拉可使此输出端处于高电压。
时钟周期2
在CLK信号的下降沿,PSTAT线表示正在执行标量指令。
时钟周期3
在CLK信号的下降沿,BUSY响应于正在执行的done指令而被否定。
时钟周期4
某些外部装置把R/S线从“Run”转变到“Stop”。
时钟周期5
在该周期的开始,R/S输入被解码而成为激活的。这起到认定BUSY输出的作用。
时钟周期6
在该周期的开始,R/S线在“Run”状态下被解码。这起到在紧跟在done指令层的指令处再启动联合机的作用。
时钟周期7
在CLK信号的下降沿,PSTAT线表示正执行某些指令。
时钟周期8
在CLK信号的下降沿,BUSY信号被否定,表明当前指令已经完成。
时钟周期10和11
当R/S线从“Run”转变到“Stop”转变到“Run”时,联合机被重新启动。这使下一指令能被执行。
(4.3.2)带有“Run/Stop”干预的联合机同写定时
图4-13显示了联合机写操作的定时,其中联合机被停止在操作的中间。
时钟周期2
在CLK信号的下降沿,联合机#2响应于write指令的执行而认定WCO2输出。此动作表示在下一时钟周期中数据将出现在WD2输出端上。
时钟周期3
在CLK信号的下降沿,联合机#2把PE#0中的V0寄存器的值驱动到WD2线。另外,在CLK信号的下降沿,联合机#1响应于在前一时钟周期中被锁存和解码的ECI1而认定WCO1
时钟周期4
数据在此时钟周期的开始被锁存、通过、并在CLK信号的下降沿被驱动出。另外,一外部装置认定R/S信号,表示应进行“Stop”方式。
时钟周期5
在此周期的开始,R/S信号在被解码为被认定的。在CLK信号的下降沿,所有WCO输出均否定,且所有WD输出均是三态的。
时钟周期6
外部装置否定R/S输入。
时钟周期7
在此周期的开始,R/S输入在被解码成被否定的。在CLK信号的下降沿,WCO输出被认定,表明在下一时钟周期中将提供数据。
时钟周期8
联合机#1再次把来自PE#0(它在R/S进入“Stop”方式时被内部地保持)的V0提供到WD1上,而且在CLK信号的下降沿,联合机#2再次把来自PE#1的V0提供到WD2上。
时钟周期9
数据在该时钟周期的开始被锁存、通过、并在CLK信号的下降沿被驱动出。
时钟周期10
响应于写指令的结束(联合机#2),在CLK信号的下降沿WCO2线被否定。另外,最后一块数据被驱动到联合机#2的输出端(WD2)上。
时钟周期11
响应于ECI1信号,在CLK信号的下降沿联合机#1否定WCO1信号并驱动出最后一块数据。
(4.3.3)中断定时
图4-14显示了联合机中断生成的定时。下述流程描述了生成并使主机清除中断状态的事件序列。
时钟周期4
在CLK信号的下降沿,某些内部联合机条件变成真,它们将生成一个中断。这通常是AICR中的一个状态位的设定。更多的信息请参见第2.3.22节“中断状态寄存器#1(ISR1)'及第2.3.24节“中断状态寄存器#2(ISR2)”。
时钟周期5
在CLK信号的下降沿,INTR信号被认定,以向主机表明已出现了中断条件。有关屏蔽中断的更多信息,请参见第2.3.23节“中断屏蔽寄存器#1(IMR1)”及第2.3.25节“中断屏蔽寄存器#2(IMR2)”。
时钟周期7至8
此定时图假定主机需要两个周期来响应中断。
时钟周期9
在CLK信号的上升沿(在周期的前期),主机存取中断状态寄存器(ISR),以清除中断条件。这通常是用如图4-2所示的操作的随机存取方式进行的。
时钟周期10
在CLK信号的下降沿,INTR输出被否定,表明中断条件已被清除或禁止。
(4.3.4)复位定时
图4-15显示了联合机的复位序列的定时。该复位序列被联合机用于将其内部寄存器初始化到其缺省状态。下述流程描述复位序列中的事件。对热态复位,RESET信号需要被认定至少三个时钟周期。对冷态复位,要求RESET信号在电力稳定后被认定至少三个时钟周期。RESET信号输入端有高增益同步器,以在CLK信号的上升沿确定引脚的状态。
时钟周期2
在此时钟周期期间,RESET输入信号会上降。为了在时钟周期#3中使RESET信号的内部同步形式得到认定,RESET信号输入必须在CLK信号的上升沿之前的某个时刻被认定。
时钟周期3
若RESET输入满足对CLK信号上升沿的建立时间要求,则RESET输入的内部同步形式(rsync)将认定。此事件通过认定rst信号而起动系统复位序列。
时钟周期6
RESET输入在时钟周期#6中某时否定,并且必须被CLK信号的上升沿来否定,以使内部同步形式也否定。
时钟周期7
若RESET输入对CLK信号上升沿建立时间要求,则RESET输入的内部同步形式(rsync)将否定。注意此否定起动内部复位序列。
时钟周期10
在复位序列的结束,内部系统复位被否定,且联合机系统准备好开始用户初始化。
(4.3.5)IEEE  1149.1测试存取端口(TAP)定时
图4-16显示了用户可存取的测试端口的定时。此测试端口是基于IEEE 1149.1标准的。对有关控制1149.1接口的操作的内部状态和状态转换的详细描述,用户可参见IEEE 1149.1文件。这里所示的定时图描述了TAP和系统引脚之间的相对于TCK时钟信号的关系。
时钟信号4和8
所有TAP输入(TDI,TMS)及系统输入(和双向输入)在TCK信号的上升沿得到锁存。
时钟周期3、7和11
在TCK信号的下降沿,所有TAP输出(TDO)和系统输出(及双向输出)均被启动。
(第5节)对选定的专题的概述
当提到把信号、状态位、或类似的装置置于逻辑真或逻辑假状态时,分别使用术语“认定”和“否定”。若逻辑真状态是逻辑电平1,则逻辑假状态就是逻辑电平零。而若逻辑真状态是逻辑电平零,那么逻辑假状态就是逻辑电平1。
术语“总线”将被用来指多个信号,这些信号可被用来传送一种或多种信息,诸如数据、地址、控制、或状态。在一个数字之前的符号“$”或“0x”,表示该数字是用其十六进制形式即其数16形式表示的。类似地,在一个数字之后的符号“H”表示该数字是用其十六进制形式即,基数16形式表示的。在一个数字之前的符号“%”表示该数字是用其二进制即基数2形式表示的。
数据处理机10可存储一个指令,但一个或多个指令在其中的存储方式可以不同。比如,为存储指令,数据处理机10可以有一个指令缓冲高速存储器20(见图2-67),或者数据处理机10可以有任何形式的单板存储器(如CMA14),如随机存取存储器(RAM)或只读存储器(ROM)。或者,数据处理机10可从一外部源接收指令,并可把收到的指令短暂地存在缓冲器或锁存电路中,以使指令能被解码。这样,指令的存储可以是永久的、暂时的、或极短暂的。
在图中,同一图中的多个数据处理机10可用标号10.1、10.2、10.3等指示(例如,参见图2-6)。数据处理机10.1、10.2、10.3等可在硬件及软件上均相同,也可在硬件上相同但在软件上不同,或可在硬件及软件上均不同。术语10.x将被用来指数据处理机10.1、10.2、10.3等中的任一个。还应注意,“联合机”或“AE”被用来指数据处理机10.x。
同样,数据处理系统55的各种实施例将被标为55.1、55.2、55.3等等(比如,参见图2-6)。术语“55.x”将被用来指数据处理系统55.1、55.2、55.3等中的任何一个。数据处理系统57的各种实施例将被称为57.1、57.2、57.3等等。术语“57.x”将被用来指数据处理系统57.1、57.2、57.3等中的任何一个。
参见图2-6,注意数据处理系统57可以是数据处理系统55的一部分,或者数据处理系统57本身也可是一独立的完整的系统。这样,任何数据处理系统57也可是数据处理系统55的一部分。多数应用采用了外部的CPU54,但这不是必须的。CPU54可带有单板存储器(图中未显示),因而可不需要RAM56、ROM58、及盘60。另外,若CPU54能直接地与数据处理机10.x接口,则可以不需要接口逻辑62。导体61被用来耦合数据处理机10.x的各东和西端口。导体63被用来耦合数据处理机10.x的各北和南端口。
参见2.5节和表2.34,术语“微代码”、“指令”、及“微代码指令”,当指表2.34所到的指令时,在本说明书中可互换使用。表2.34中所列的指令,是软件程序员在汇编语言级用来编程数据处理机10的指令。
(.51)饱和保护
本发明中的某些指令是“饱和”指令。参见第2.5.9节、2.5.19.1节、及目录中对饱和的定义,其中讨论了术语“溢出”和“饱和”。“溢出”指这样一种情况,其中要存入寄存器中的值超过了寄存器所能存储的最大值(例如试图在一个8位寄存器中存储%100000001)。“饱和”或“饱和保护”指的是处理溢出状态的一种方法,其中寄存器中的值被用一上或下界值来代替,例如以$FF作为8位的不带符号的最大边界值。
参见图5-1-2,在所示的本发明实施例中,某些非初级标量指令也是饱和指令,即“add”、“addsx”、“sub”、“subsx”、“neg”及“abs”。同样,某些非初级矢量指令也是饱和指令,即“vadd”、“vaddsx”、“vsub”、“vsubsx”、“vneg”ey“vabs”。若有溢出(即,如果对标量饱和指令认定了SV位214以及如果对矢量饱和指令认定了VV位106,这些饱和指令总是饱和。SV位214位于标量处理控制寄存器(SPCR)208中(见图2-44)。VV位106位于矢量处理控制寄存器(VPCR)102中(见图2-64)。
对于一个饱和标量指令,当一溢出值即SV位214被认定时,算术运算的结果被一个上界或一个下界所代替。位于SPCR寄存器208中的一个对应的溢出方向位即SD位216,确定溢出是沿正还是负方向的。溢出的方向,决定着用哪个边界值-即上界或下界-来取代数据处理运算的结果。位于算术控制寄存器(ACR)172中的符号位即SSGN位174,表示该数是否带有符号。该数是否带符号,决定了上和下界的值。
对饱和的矢量指令,当溢出值即VV位106被认定时,算术运算的结果被上界或下界所取代。位于VPCR寄存器102中的相应溢出方向位即VD位108,确定溢出是沿正还是负方向的。溢出的方向决定了用哪个边界值(上界或下界)来取代数据处理运算的结果。位于算术控制寄存器(ACR)172中的符号位即VSGN位176,表示了该数是否带符号。该数是否带符号,决定了上和下界的值。
“sat”和“vsat”指令是专用饱和指令,它们除了执行饱和外无其它作用。“sat”和“vsat”指令对扩充长度的算术运算特别有用。通常,用跟有单个非前级指令的一个或多个前级指令来执行扩充长度的算术运算。如果该非前级指令是一饱和指令,那么若有溢出的话,由该非前级饱和指令产生的多字节结果的一个字节已得到调整。然而,如果结果已饱和,多字节结果的其余字节则包含一个不正确的值。“sat”及“vsat”指令为多字节算术运算提供了饱和保护。
图5-1-1显示了一个例子,其中“sat”指令可被用来执行对标量机26中的寄存器的饱和保护。“vsat”指令执行对矢量机9中的寄存器同样的饱和保护功能。图5-1-1所示的例子假定,指令的目的是把存储在寄存器组(GD,G1,G2)中的3字节数据值加到存储在寄存器组(G3,G4,G5)中的3字节数据值上,从而在出现溢出时使存储在寄存器(G3,G4,G5)中的3字节结果饱和。
adap G2,G5  ;把前级G2加到G5
;(非饱和加法运算)
addp G1,G4  ;把前级G1加到G4
;(非饱和加法运算)
add G0,G3  ;把非前级G0到加G3
;(饱和加法运算)
sat G4  ;在G4上执行饱和保护
;(根据溢出改正G4中的值)
sat G5  ;在G5上执行饱和保护
;(根据溢出改正G5中的值)
在执行“add G0,G3”指令结束时,寄存器组(G3,G4,G5)包含部分饱和的结果,且溢出值SV位2/4表示已有一个溢出。相应的溢出方向位,即SD位216,表示溢出是沿正方向。符号位,即SSGN位174,表示在此例中数是不带符号的。“sat G4”指令利用该溢出值、溢出方向位、及符号位,来确定饱和沿正方向发生且必须把上界值$FF存储在寄存器G4中以取代不正确的结果$34。“sat G5”指令利用该溢出值、溢出方向位、及符号位,以确定饱和沿正方向发生且必须把上界值$FF存储在寄存器G5中以取代不正确结果$32。
(5.2)数据处理机之间的通信:开关和抽头
参见图3-40和图2-67,开关42使数据流经数据处理机10,而抽头42使数据被数据处理机10所接收和锁存。参见图2-6,开关和抽头可被用为在采用数据处理机10的阵列的系统中提供可可缩放性。开关可使被传送的数据在不受数据处理机10的内部干预的情况下跨过一台数据处理机10。抽头使到达数据处理机10的端口的数据被复制到数据处理机10的输入数据寄存器(IDR)18之中。
为了使两个(或更多)数据处理机10通信(其中数据处理机10不是阵列中的相邻者),连接数据处理机10的开关必须闭合(即处于导通状态)。这样,开关可使一个数据处理机10把数据送到另一数据处理机10,而不涉及到两个通信的数据处理机10之间的数据处理机。在最佳实施例中,抽头使数据处理机10能捕获到达任一端口的数据。
应注意,端口(北、南、东、西)的数目、开关(42.1和42.2)的数目、及抽头(40.1、40.2、40.3及40.4)的数目,是相互独立的。本发明的不同实施例可有不同数目的端口、开关、及抽头。例如,一个数据处理机10可有少些或多些的端口,各端口不一定非要有抽头不可,且一端口可与多个开关相耦合。各开关可独立于抽头和其他开关操作,而各抽头的操作可独立于开关和其他抽头。
尽管在本实施例中所示的开关是双向的,也可采用单向开关。例如,可用两个单向开关代替一个双向开关。若采用单向开关,可加上能被用来确定数据流的方向的附加控制位。开关可用任何类型的模拟或数字电路(如组合或序列逻辑)来实现。实际构成开关和抽头所需的具体电路,是本领域的技术人员所熟知的。
在所示的实施例中,当开关处于导通状态(连接)时,数字数据被从开关的一端传到开关的另一端;这样,数据可从一个端口经开关而传到另一端口。当开关处于不导通状态(断开)时,数字数据不能从开关的一端传到开关的另一端;这样,数据不能经开关从一个端口传到另一端口。
参见图2-16、表2.10及图2-67,端口控制寄存器(PCR)52包含用于控制开关和抽头的控制位。PCR52的位0-6,通过系统复位、通过由数据处理机10执行的某些指令及以通过从外部处理机(如图2-6中的CPU54)的主机存取,而被改变。注意被传送的数字数据本身并不需要任何路由信息。因此,数字数据本身不必表明哪个(些)数据处理机10应接收和锁存数字数据。
注意,在数据处理机10执行指令时,软件程序可动态地修改PCR52的位0-6。软件程序可以是数据处理机10中的、位于指令高速缓冲存储器20中或位于单板存储器(图中未显示)中的内部程序,也可是位于CPU54、RAM56、ROM58、或盘60中的外部程序。注意数据处理机10不必为了在端口之间进行数据传送而执行任何指令或进行任何有效控制。
PCR52中的控制位,使得数据处理机10的通信结构能为不同系统配置而改变,并在数据处理机10执行指令时,能被动态地改变。这样,开关和抽头体系结构为用户提供了完全通过软来重组数据处理机10的阵列的能力,而不必改变单独的硬件连接或硬件连器。
参见图3-40,北端口引脚44可通过开关电路42.1有选择地与南端口引脚48相耦合,且西端口引脚50可通过开关电路42.2与东端口引脚相耦合,北端口引脚44可通过抽头电路40.1有选择地与输入数据寄存器(IDR)18相耦合,东端口引脚46可通过抽头电路40.2有选择地与输入数据寄存器(IDR)18相耦合,南端口引脚48可通过抽头电路40.3有选择地与输入数据寄存器(IDR)18相耦合,西端口引脚50可通过抽头电路40.4有选择地与输入数据寄存器(IDR)18相耦合。
(5.3)多端口数据处理机
参见图5-2-1、图5-2-2、图5-3、图5-4、图5-5、图5-6与图5-7,数据处理机10可处于两种操作方式中的一种:即“Stop”和“Run”方式中的一种。注意“Stop”方式也可称为“主机”方式。在发明所示的实施例中,操作方式由至数据处理机10的输入选择。R/S集成电路引脚80(见图2-8)上的逻辑电平,被用于确定数据处理机10是处于“Stop”方式还是处于“Run”方式。在“Stop”方式下,数据处理机10中的所有能被从外部存取的寄存器都可被从外部存取;且数据处理机10不执行指令。在“Run”方式下,数据处理机10中所有能被从外部存取的寄存器都不可以被从外部存取,仅IDR寄存器18除外(见图2-67);并且数据处理机10能够提取、解码和执行指令。
所示实施例中的北、南、东和西端口,用于不同目的,根据操作方式起着不同的作用。同样,某些信号和某些集成电路引脚,根据不同的操作方式,用于不同的目的并起着不同的作用(见表2.2)。
在“Run”方式下,开关和抽头,而不是行和列选择信号,被用来控制经过端口的通信。在所示的本发明实施例中,开关42.1和42.2,连同轴头40.1、40.2、40.3和40.4(见图3-40),被用来使数据处理机10能够在“Run”方式下与其它外部数据处理器10和/或主机数据处理机54通信。在所示的实施例中,ROW集成电路引脚82和COL集成电路引脚84(见图2-8),没有被用于在“Run”方式下接收列或行选择信号。
在“Stop”方式下,行和列选择信号,而不是开关和抽头,被用来控制通过端口的通信。在所示的实施例中,一个列选择信号由COL引脚84接收,而一个行选择信号则由ROW引脚82接收。在本发明的所示实施例中,开关42.1和42.2,连同抽头40.1、40.2、40.3和40.4,(见图3-40)没有被用于“Stop”方式中。
在“Stop”方式下,数据处理机10用列选择信与和行选择信号来确定是否传送信息和是否存储或发源信息。如果其行选择引脚或列选择引脚都没有被认定,数据处理机10甚至将不传送信息。然而,若其行选择引脚(ROW引脚82)或其列选择引脚COL引脚84)仅有一个被认定,数据处理机10可传送信息,但是将不存储信息或作为任何信息的源。若其行选择信号和其列选择信号都被认定,数据处理机10可传送信息,并且也可存储信息或作为信息的源。
当数据处理机10处于“Stop”方式时,有两种存取方式可供选择:即随机存取方式和流式存取方式。存取方式确定了数据处理机10内部资源可被存取的方式。在本发明的所示实施例中,存取方式由至数据处理机10的输入来选择。OP集成电路引脚94上的逻辑电平(见图2-8)被用来确定数据处理器10是处于随机存取方式还是处于流式存取方式。
在随机存取方式中,必须从外部向数据处理机10提供一地址,以指定对数据处理机10中的哪个单个内部地址存储单元进行存取。外部提供的地址被数据处理机10在北和西端口接收。在所示的实施例中,随机存取方式被用来每次仅对一个数据处理机10进行存取。
在流式存取方式中,没有从外部向数据处理机10提供地址。相反,数据处理机10必须为信息传送在内部产生一个或多个地址。另外,当数据处理机10处于流式存取方式时,任何数目的数据字节都可作为一个数据“流”而被传送至数据处理机10或从数据处理机10中传出。在所示实施例中,流式存取方式可被用来同时对一个或多个数据处理机10进行处理。
若干个寄存器可执行一种专门的功能,或仅在数据处理机10处于“Stop”方式时被使用。在本发明的所示实施例中,当数据处理机10处于操作的“Stop”方式及流式存取方式时,偏移地址寄存器#1(OAR1)96、偏移地址寄存器#2(OAR2)98、深度控制寄存器#1(DCR1)97、深度控制寄存器#2(DCR2)99、主机流选择寄存器(HSSR)100、和主机流偏移寄存器(HSOR)222被使用。
(5.4)数据处理机中的扩充长度操作
数据处理机中的一个常见问题,是需要在比可用的算术逻辑单元(ALU)电路在一个ALU循环中所能够容纳的还要宽(即有更多位)的数据值上进行算术计算。例如,经常要求数据处理机用一个16位ALU对两个32位数据值进行求和。先有技术的数据处理机一般通过提供单个的“进位”或“扩充”位和通过提供两种版本的计算指令,来支持这种扩充的算术,以说明进位位是否被用作一个对指令的输入(例如,“加”和“带进位的加”、“减”和“带借位的减”、“右移”和“带扩充的右移”等)。这种传统方法对有限指令表的操作是足够的,但它不足以有效地支持其他扩充长度的操作。需要一种能有效支持扩充长度操作的扩充指令表的方法。
以下是先有技术的单扩充位方法所不能支持的扩充长度运算的某些例子:(1)两个有不同长度的二进制补码的数的加(其中较短的数必须是符号扩充的);(2)两个有不同长度的二进制补码的数的相减(其中较短的数必须是符号扩充的);(3)计算两个扩充长度的数的最小值(带有或不带有符号);(4)计算两个扩充长度数的最大值(带有或不带有符号);(5)比较两个扩充长度数(带有或不带有符号)并利用该结果来控制有条件的转移或其他有条件的动作;(6)计算扩充长度延长的伪随机数。
需要一种方法,它能够有效地支持扩充长度运算的扩充指令表。本发明有效地支持了扩充长度运算的扩展指令表,并支持了加、减、以及移位操作。本发明涉及数据处理机所执行的新指令,以及在用于实施这些新指令的数据处理机中的电路。
本发明利用新指令来执行扩充长度运算。新指令实际可用两种版本的指令来实施,即“前级”版本的指令和“非前级”版本的指令。在本发明中,新指令的不同版本被用来确定扩充位是如何作为指令的结果被修正的;指令的不同版本不被用来确定是否一单个扩充位将被作为一个输入。注意,在现有技术中,指令的不同版本是被用来规定是否把单个扩充位用作向指令的输入,而不是指令的输出。另外,新指令采用两个扩充位,其中各扩充位对不同的指令可起不同的作用。没有固定的进位位和借位位;没有固定的移位扩充位。
参见图2-44、表2.29、图2-64和表2.31,在一个实施例中数据处理机10有两个扩充位,即X0和X1。注意术语“X0”和“xX0”是可互换使用的,用来表示在标量机26中的标量进程控制寄存器(SPCR)208内的SXO位210或在矢量机9中的矢量进程控制寄存器(VPCR)102内的VX)位104。同样,注意术语“X1”和“xX1”是可互换使用的,表示位于标量机26中的SPCR寄存器208内的SX1位212,或位于矢量机9中的VPCR寄存器102内的VX1位105。
由数据处理机10所执行的多数指令,无条件地把扩充位X0和X1清除到它们的缺省状态(在所示的实施例中为逻辑状态零),表示“空”扩充数据。H欢x,某些被称为“前级”指令的指令,可有选择地修正扩充位。扩充长度的计算一般利用一条或多条前级指令。各前级指令有选择地修正扩充位,以为随后的指令产生扩充数据。一般地,一条或多条前级指令组成的系列的后面跟有一条非前级指令。该非前级指令使扩充位返回到它们的缺省或否定状态,这在所示的实施例中是零逻辑状态。
前级指令和非前级指令都用扩充位作为输入,但在设计上不把缺省扩充位码%00作为输入考虑,对扩充数据的解释取决所执行的扩充长度运算的种类,如以下所要说明的那样。将要讨论各种的扩充运算,也就是新的指令。为了说明的目的,将假定ALU是一字节宽的。然而,重要的是要注意到,同一扩充方法也可用于任何宽度的ALU。
现在讨论加与减运算。对加和减,扩充位X0表示进位或借位信息;扩充位X1表示使初级指令产生扩充数据的源操作数的符号位。扩充位X1中的这种符号信息可被随后的“加号扩充”指令用来对较短的数进行符号扩充,以正确地完成有不同长度的两个二进制补码带符号数的相加。
图5-8显示了一组四条指令“addp”、“addp”,“addsxp”的执行,这些指令用于执行不同长度的两个带符号二进制补码的数的加法运算。图5-8显示了包含在寄存器对(G1,C0)中的2字节数与包含在4寄存器组(G5,G4,G3,G2)中的4字节数的相加。该相加运算的结果被放置在寄存器组(G5,G4,G3,G2)中。四条指令的码序列按照以下顺序由数据处理机10执行:
addp G0,G2    ;把前级G0加到G2上
;(生成扩充位)
addp G1,G3    ;把前级G1加到G3上
;(生成扩充位)
addsxp G4    ;把符号扩充前级加到G4
;(生成扩充位)
addsx G5    ;把符号扩充加到G5)
;(清除扩充位)
利用样值的结果计算如图5-8所示。开始,假定两个扩充位X0和X1运算被前一条非前级指令所否定或置予它们的缺省状态。注意扩充位X0对加法运算起着进位位而对减法运算起着借位位的作用。扩充位X1反映了产生它的初级指令的源操作数的符号位或最高有效位。“addp”指令忽略它们的输入X1位并利用X0位作为一个进位输入。第二条“addp”指令的X1输出反映了位于寄存器G1中的较短源操作数的符号位。扩充位X1中的这一符号信息,被“addsxp”指令用来选择适当的符号扩充值,在本实施例中即$FF,与$00相反。“addsxp”指令使扩充位X1不变,以使后续的“addsx”指令同样能够选择正确的符号扩充值。
参见第2.5.9节、2.5.19.1节、和“目录”中的定义,来讨论术语“溢出”和“饱和”。“溢出”指的是这样的情况,其中要存储在寄存器中的值超过了寄存器所能够存储的最大值(例如,试图把$1FF存储在一个8位寄存器中)。“饱和”指的是处理溢出状态的一种方法,其中寄存器中的值被用上或下界值所取代,例如用$FF表示一个8位不带符号的最大边界值。
非前级指令“add”和“vadd”是饱和指令而前级指令“addp”和“vaddp”是非饱和指令。对于标量“add”指令,当溢出值即SPCR寄存器208中的SV位214被认定时,加法运算的结果被上或下界所取代。相应的溢出方向位,即位于SPCR寄存器208中的SD位216,确定溢出是沿着正还是负方向。溢出的方向,确定了用上和下边界值中的哪一个来取代数据处理操作的结果。一个符号位,即位于算术控制寄存器(ACR)172中的SSGN位174,表示该数是否带符号。该数是否带符号确定了上和下界的值。
对于矢量“vadd”指令,当溢出值,即位于VPCR寄存器102的VV位106被认定时,加法运算的结果被上或下界所取代。对应的溢出方向位,即VPCR寄存器102中的VD位108,确定了溢出是沿正还是负方向。溢出的方向确定用哪个界(上还是下界)值来取代数据处理操作的结果。一个符位,即位于算术控制寄存器(ACR)172中的VSGN位176,表明了该数是否带有符号。该数是否带有符号,确定了上和下界的值。
现在讨论最小和最大值运算。对最小和最大值运算,多字节计算开始于最高有效字节并进行到最低有效字节。在多字节最小和最大值运算中,两个扩充位被用于区别如下状态:(1)源操作数已经被发现超过了目标操作数,从而使随后对较低有效位字节的任何比较变得无关紧要;(2)目标操作数已经被发现超过了源操作数,从而使任何随后对较低有效字节的比较变得无关紧要;(3)源和目
“dmaxp”
本发明通过提供一种叫做“向下加”的、具有助记码“dadd”的新SIMD计算机指令,克服了先有技术的递归加倍算法的缺点。该“dadd”指令包含两个字段,一个规定下移位的量,另一个规定一个矢量寄存器编号(见表2.44)。
参见图5-13、图5-14、图5-15和图5-16,指令“dadd#N,vreg2”以如下方式工作。加只发生在一半处理部件(PE)16中,即那些在其各自的处理部件号的位位置“N”(把最低有效位位置计数为0)中有1的部件中。每个这种处理部件把从上面的处理部件传来的值加到其局部矢量数据寄存器128上(见图2-63)。记号V[x]和Vn都被用来表示矢量数据寄存器128中的任何一个。不是这种类型的处理部件的V[x]寄存器值保持不变。处理屏蔽,VT位110(见图2-64和表2.31),可以正常的方式被用来抑制存储在那些否则将修改它们的V[x]寄存器128的处理部件中的结果。多路转换器(MUX)310、312、314、316、318、320、322和324被用来选择是否把处理部件16用作正被传送的数据值的源,或者是否反之处理部件16向前传送它接收的数据值。
若处理部件16在其处理单元数最低有效的N位都有1,则它把V[x]寄存器所存的值传送到下邻的处理部件。若一个处理部件16在位位置“N”有1,则它向前传送其从上面的处理部件所接收的值。若“N”等于零,则每个处理部件都把值从其V[x]寄存器128
标操作数的高位字节相同,从而必须继续对较低有效字节的比较,以确定哪个操作数较大。
现在讨论比较和有条件测试。对根据多字节比较的测试,计算从最高有效字节开始并进行到最低有效字节。扩充位被用于区别与最小和最大值运算相同的三种状态。本发明的某些实施例中,一个单类型的比较前级指令可以与若干不同类型的非前级条件指令一起使用,以测试不同的条件动作标准,例如等于、大于、小于,等等。
现在讨论伪随机数的发生。对伪随机数发生操作,假设采用一种右移线性反馈移位寄存器类的技术,利用前级指令,多字节计算从最高有效字节开始并进行到最低有效字节。然后,在结束时,需要执行一个非前级指令,以执行最高有效字节的最高有效位的最后调节。在伪随机数计算期间,一个扩充位对多字节右移操作起着进位位的作用,而一个扩充位表明“一的总计”运算到目前是否遇到奇数个或偶数个一。或者,也可以采用等价的左移位线性反馈移位寄存器类的技术,使多字节计算从最低有效字节进行到最高有效字节。在这种情况下,对最低有效的最后调节,可以由作为结束的非前级指令的一个“add”指令来执行。
图5-9、图5-10和图5-11显示了涉及各种前级和非前级指令的执行的步骤。本发明的其他实施例可以有较多、较少、或不同的前级和非前级指令。图5-9显示了与某些移位指令的执行有关
素的和的。注意,处理部件#0开始存储值“A”,处理部件#1开始存储值“B”,处理部件#2开始存储值“C”,处理部件#3开始存储值“D”,处理部件#3开始存储值“E”,处理部件#5开始存储值“F”,处理部件#6开始存储值“G”,处理部件#7开始存储值“H”。
仍然参见图5-12,如在从左数第二列中所示,矢量元素被组成对,且对各对计算出第一组中间和。此第一组中间和用并行处理硬件同时地计算。如在从左数第三列中所示,以类似方式给第一组中间和配对并求和,从而产生第二组中间和,每个由四个原始矢量分量组成的组有一个中间和。如在从左数第四列中所示,第二组中间和被类似地配对和求和,产生矢量元素的一个总和,即“A+B+C+D+E+F+G+H”。
当这种先有技术的递归加倍算法被编程以在传统SIMD型并行计算机上运行时,该算法的每一步骤可能需要以下子步骤:[子步骤#1]作出由前面的步骤所产生的和矢量(或者如果这是第一步骤则为原始矢量)的副本;[子步骤#2]把矢量的该副本相对于矢量的未移位副本移位2(i-1)个位(注意“i”是步骤数;注意该移位是移动2(i-1)个矢量元素位置,不是各元素中的2(i-1)位的位置);以及[子步骤#3]通过把未移位的矢量副本加到移位的副本上,进行矢量加。参见图5-12,该算法的第一步骤要求三个子步骤1、2和3。该算法的第二步骤要求三个子步骤4、5和6。该算法的第三的步骤。图5-10显示了与某些比较指令的执行有关的步骤。图5-11显示了与某些算术指令的执行有关的步骤。注意在所示的本发明实施例中,左移位初级指令“1shftp”是用add前级指令“addp”来实施的。
(5.5)数据处理机中的数据移动操作
采用矢量的处理机中的一个公共问题,是需要计算矢量的元素的和或总和。在有些应用中,只需要一个标量结果(即所有元素的总和)。在一些其它应用中,则必须地算累计和矢量。把矢量元素组合成一单一的总聚集值或一个累计部分聚集的矢量的需要,不仅限于相加。其他的求聚集操作,如最小和最大值操作,对某些应用也是需要的。需要一种把矢量元素组合成一个总的聚集值的更有效的技术和机制。
与先有技术一样,本发明计算矢量的元素的总和;此外,本发明同时计算累积和的矢量。注意在本发明中,矢量元素的总和是累积和矢量的最后分量。本发明以比先有技术费用性能比更有利的方式,采用了快速SIME型(单指令多数据型)并行计算。本发明包含新指令及实现新指令的有关电路。
在先有技术中,有一种用于计算矢量元素的和的并行算法,叫做“递归加倍”(recursive doubling)。图5-12(先有技术)显示了这种递归加倍算法是怎样可被用来计算具有八个元素的矢量的元
步骤要求三个子步骤7、8和9。
但是,该先有技术递归加倍算法有如下缺点。第一,该算法的各个步骤要求若干个指令(如图5-12中所示)。第二,在上述子步骤#1中产生的双矢量副本占据了一个第二矢量寄存器或等价的矢量暂存空间。第三,在传统的SIMD处理机中,上述子步骤#2中的矢量移位操作要么要求2(i-1)个顺序步骤,要么要求处理部件通过较昂贵的、能够在单一步骤中进行多位置移位的互连网络进行通信。最后,大多数先有技术的递归加倍算法仅产生总和(即矢量元素的总和),而不是某些应用中所要求的矢量累积和。
本发明实现了一种有用的技术和机制,用于进行矢量操作数的数据移动操作。该技术和机制还能够有选择地把数据传送操作和各种计算组合起来。
在本发明的所示实施例中,以下指令被用于进行矢量操作数的各种数据移动操作:“dadd”、“daddp”、“dmin”、“dminp”、“dmax”、“dmaxp”、“dsrot”、和“drotmov”。有关“drotmov”指令的信息,请参见表2.42、图2-73、和第2.5.11.1节。有关“dsrot”指令的信息,请参见表2.42、表2.43、和第2.5.11.2节。有关“dadd”、“daddp”、“dmin”、“dminp”、“dmax”和“dmaxp”指令的信息,请参见表2.44、表2.46和第2.5.12.2节。
(5.5.1)指令“dadd”、“daddp”、“dmin”、“dminp”、“dmax”
传到下面的处理部件。VT位110对哪个值被一处理部件传送到其下一相邻者没有影响。注意最后一个处理部件是否把值传送回第一个处理部件是测有关系的,因为不管规定了什么“N”值,从上面传进第一处理部件的值都不被使用。
若一个处理部件[#(x+1)]不存储其计算结果(即它在位位置“N”有零值),则处理部件[#x]可从上面即从处理部件[#(x-1)]传送数据,或可从其V[x]寄存器128发出数据。因而需要有些处理部件传送数据,需要有些处理部件发生数据,而其他一些处理部件则由于下面的处理部件在位位置“N”有零值而二者都可做。
下面的例子,说明了对矢量数据寄存器128的dadd指令的四次应用,如何用其原始元素的累计总和取代一个16元素的矢量。注意到dadd指令的M次应用,足以对把2M处理部件边界上开始的任何2M元素子矢量相加。还请注意dadd指令的这些同样的M次应用足以对在2M边界上开始的、少于2M个的相继元素的任何子矢量进行求和。最后,注意“处理屏蔽”,即所示实施例中的VT位110,可以被用于抑制一个2M元素组的底部的元素修正而不影响组内的这些元素上面的计算结果。
指令
dadd #0,V0
dadd #1,V0
dadd #2,V0
dadd #3,V0
初始  之后  之后
PE#  value  dadd#0  dadd#1
0000  x0  x0  x0
0001  x1  (x0)+x1  x0+x1
0010  x2  x2  (x0+x1)+x2
0011  x3  (x2)+x3  (x0+x1)+x2+x3
0100  x4  x4  x4
0101  x5  (x4)+x5  x4+x5
0110  x6  x6  (x4+x5)+x6
0111  x7  (x6)+x7  (x4+x5)+x6+x7
1000  x8  x8  x8
1001  x9  (x8)+x9  x8+x9
1010  x10  x10  (x8+x9)+x10
1011  x11  (x10)+x11  (x8+x9)+x10+x11
1100  x12  x12  x12
1101  x13  (x12)+x13  x12+x13
1110  x14  x14  (x12+x13)+x14
1111  x15  (x14)+x15  (x12+x13)+x14+x15
之后
PE#  dadd#2
0000  x0
0001  x0+x1
0010  x0+x1+x2
0011  x0+x1+x2+x3
0100  (x0+x1+x2+x3)+x4
0101  (x0+x1+x2+x3)+x4+x5
0110  (x0+x1+x2+x3)+x4+x5+x6
0111  (x0+x1+x2+x3)+x4+x5+x6+x7
1000  x8
1001  x8+x9
1010  x8+x9+x10
1011  x8+x9+x10+x11
1100  (x8+x9+x10+x11)+x12
1101  (x8+x9+x10+x11)+x12+x13
1110  (x8+x9+x10+x11)+x12+x13+x14
1111  (x8+x9+x10+x11)+x12+x13+x14+x15
之后
PE#  dadd#3
0000  x0
0001  x0+x1
0010  x0+x1+x2
0011  x0+x1+x2+x3
0100  x0+x1+x2+x3+x4
0101  x0+x1+x2+x3+x4+x5
0110  x0+x1+x2+x3+x4+x5+x6
0111  x0+x1+x2+x3+x4+x5+x6+x7
1000  (x0+x1+x2+x3+x4+x5+x6+x7)+x8
1001  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9
1010  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9+x10
1011  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9+x10+x11
1100  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9+x10+x11+x12
1101  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9+x10+x11+x12+x13
1110  (x0+x1+x2+x3+x4+x5+x6+x7)+x8+x9+x10+x11+x12+x13+x14
1111
Figure 941032973_IMG2
注意在用于dadd指令的处理部件中的数据移动,不需要复杂的互连网络,且不需要单个位置移位的缓慢多重执行。因为指令“dadd#N,Vn”只要求把各个第2N个元素复制到下面的2N个处理部件,处理部件16之间简单的最近近邻通信方案就已经足够。各处理部件可接受从其上面的邻近处理部件传来的数据,并且每一处理部件都把来自该处理部件的局部存储器(即矢量数据寄存器128)的数据,或把从上面的处理部件所接收到的数据的副本,传给其下面的邻近部件。微定序器22(见图2-67)确定对每一指令所允许的传播延迟时间为多少。注意最长的向下向传播路径与2N成正比,且“N”由微定序器22在dadd指令的一个字段中接收。
dadd指令可被扩充,以处理多字矢量元素和/或饱和算术运算。注意前级指令daddp以与上述非前级指令dadd相同的方式进行移位和相加。dmin、dminp、dmax、和dmaxp指令以与dadd指令相同的方式工作,只是所进行的计是最小或最大比较而非相加。有关dadd、daddp、dmin、dminp、dmax、和dmaxp指令的进一步信息,请参见表2.44、表2.46和第2.5.12.2节。
(5.52)指令dsrot
dadd指令把矢量相加与向下转动(即矢量元素越过处理部件16的移位)相结合,以便于有效的递归加倍型相加。对其他经常用的聚集操作,如最小和最大操作,也可提供类似的指令,但是给未来的用户预测及提供其想要的所有可能的聚集操作的指令则是不实际的。为了得到更大的灵活性,提供了一个“向下的稀疏转动”指令dsrot,以使用户能为其他的可能聚集操作编制合理的有效递归加倍型算法。该指令执行稀疏多位置向下循环移位。
参见表2.42、第2.5.11.2节、和表2.43,指令“dsrot#N,vreg2”以如下方式工作。各处理部件16把从上面的处理部件传来的值复制到其局部Vn寄存器。处理屏蔽即VT位110可以以正常方式被用于抑制存储在任何处理部件中的结果。若处理部件在其处理部件号的N个最低有效位都是1,则它把来自其矢量数据寄存器(Vn)128(见图2-63)的值传到下面的处理部件;否则,它向前传送它从上面的处理元素所接收的值。
若N等于零,则各处理部件都把来自其Vn寄存器的位传向下面的处理部件。VT位110对处理部件把哪个值传向其下面的近邻没有影响。最后的处理部件以环形方式把值传回第一处理部件。哪个处理部件16作为链中的最后一个,是由处理部件选择寄存器(PESR)220规定的(见图2-15)。
下面的例子显示了带有由dsrot指令与十六个处理部件组成的环形链所执行的功能。
初始之后
PE#  value  dsrot#0,Vn
0000  x0  x15
0001  x1  x0
0010  x2  x1
0011  x3  x2
0100  x4  x3
0101  x5  x4
0110  x6  x5
0111  x7  x6
1000  x8  x7
1001  x9  x8
1010  x10  x9
1011  x11  x10
1100  x12  x11
1101  x13  x12
1110  x14  x13
1111  x15  x14
初始  之后
PE#  value  dsrot#1,Vn
0000  x0  x15
0001  x1  x15
0010  x2  x1
0011  x3  x1
0100  x4  x3
0101  x5  x3
0110  x6  x5
0111  x7  x5
1000  x8  x7
1001  x9  x7
1010  x10  x9
1011  x11  x9
1100  x12  x11
1101  x13  x11
1110  x14  x13
1111  x15  x13
初始  之后
PE#  value  dsrot#2,Vn
0000  x0  x15
0001  x1  x15
0010  x2  x15
0011  x3  x15
0100  x4  x3
0101  x5  x3
0110  x6  x3
0111  x7  x3
1000  x8  x7
1001  x9  x7
1010  x10  x7
1011  x11  x7
1100  x12  x11
1101  x13  x11
1110  x14  x11
1111  x15  x11
初始  之后
PE#  value  dsrot#3,Vn
0000  x0  x15
0001  x1  x15
0010  x2  x15
0011  x3  x15
0100  x4  x15
0101  x5  x15
0110  x6  x15
0111  x7  x15
1000  x8  x7
1001  x9  x7
1010  x10  x7
1011  x11  x7
1100  x12  x7
1101  x13  x7
1110  x14  x7
1111  x15  x7
dsrot指令只提供了“递归加倍”式聚集的数据移动部分。然而,通过把dsrot指令与矢量计算一起使用,可能写出执行任何所需聚集操作的软件指令例程。注意,dsrot指令可用与用实现dadd和daddp指令相同的、成本低廉的最低邻通信方案来实现。
另外,注意dsrot指令的一种特殊情况,可被用于进行密集(与稀疏相反)转动,其中所有的矢量元素值都移动。指令“dsrot#0,Vn”对矢量寄存器的所有元素Vn执行一个一位置的向下转动。所有矢量元素的多位置向下转动,可通过多次执行该指令来进行。这种类型的密集转动操作对某些应用是有用的。注意在本发明的其他实施例中,可用向上的移位来代替向下的移位。
(5.6)指令的多级条件执行
(5.6.1)指令vif、velse和vendif
本发明使指令的条件执行能以简单方式实现,这种方式只需要最少量的电路,但却仍然能允许非常大的软件灵活性。采用了三种条件指令,即vif、felse、和vendif。在指令名称的开始处的字母v,表明该指令是一个矢量指令。vif式指令实际上是一组指令,它有vif的助记形式并包括条件测试。该组vif指令包括以下的单个指令:
vif指令    条件
vireq    如果相等
vifge    如果大于或等于
vifgt    如果大于
vifle    如果小于或等于
vifit    如果小于
vifne    如果不等于
vifnv    如果没有溢出
vifv    如果溢出
所有条件指令的清单,请参见表2.47。在本发明的其他实施例中,在vif型指令中可包括较多、较少或不同的条件。而且,在本发明的其他实施例中,可采用其他或不同类型的条件指令。
本发明还利用了各处理部件16中的两个位,即VT位110和VH位112。VT位110和VH位112均在矢量进程控制寄存器(VPCR)102中。VPCR寄存器102显示在图2-64中,且在表2.31和说明书第2.3.47节中进行了说明。本发明的其他实施例可用一个以上的位(VT位110)来自表示启动值或屏蔽值。同样,其他的实施例也可用一个以上的位(VT位112)来表示一历史值。该VH位112被叫做历史值或历史位,因为它表示了VT位110的历史或先前的逻辑状态。
表2.48显示了执行“vif”、“velse”、和“vendif”指令所产生的VT位110和VH位112的下一状态转变表。标为Qn的列表示了,在执行指定的条件指令之前,VT位110和VH位112的当前逻辑状态(关于指定的条件指令,请参见右边的列)。标为Qn+1的列,表示在指定的条件指令的执行完成时VT位110和VH位112的逻辑状态。(关于指定的条件指令,请参见最右边的列)。开列在最左边的列的状态转变号码,对应于图2.75中所示的十个加圈的状态转变。
图2-75显示了执行“vif”、“velse”和“vendif”指令所产生的VT位110和VH位112的状态转变图。注意“vif”指令的执行取决于VT位110的当前逻辑状态。作为“vif”指令的一部分的条件测试,由各处理部件16分别地进行。只有当条件指令开始执行时一个处理部件16的VT位110被认定时该处理部件16才参与vif指令的执行。注意velse和vendif指令是与VT位110的当前逻辑状态无关地执行的。
启动值(VT位110)和历史值(VH位112)的组合,使软件编程结构能在电路的水平上实现。例如,可利用vif、velse、和vendif指令与启动值(VT位110)和历史值(VT位112)一起,在电路水平上实现利用“if”、“elseif”、“else”、和“endif”高级软件命令的高级软件编程结构。各处理部件16只参与软件指令的“if”、“elseif”、和“else”部分中的一个。历史值表明处理部件16是否已经参与了软件指令先前的“if”或“elseif”部分中之一。注意,若在没有“elseif”结构的情况下使用“if”和“else”结构,则不需要VH位112。
对实现大多数通常的高级结构,一个序列中的第一个指令将是vif指令之一且序列中的最后一个指令将是一个vendif指令。一个简单的序列,在vif指令和vendif指令之间可以只有一个velse指令。更复杂的序列可以有后面跟有一个vendif指令的多个velse-vif指令对,如表3.13中的例子所示。
注意,可用通用寄存器保存VT位110和VH位112的顺序副本来嵌套vif、velse、和vendif指令,参见表2.47,可用左移指令vlshftt和vlshfth和右转动指令vrotrt和vrotrh来进栈和出栈VT位110和VH位112的顺序复本。
某些其他指令也包含一蕴含的vendif结构。例如,repeat和repeate指令也修正VT位110和VH位112。且dskip和dskipe指令也修正VT闰110和VH位112。表2.65显示了哪些指令与VT位110和VH位112的逻辑状态无关地执行,以及哪些指令依赖于VT位110和/或VH位112的逻辑状态。
表3.13、表3.14和第3.6.5.4节说明了与VT位110和VH位112一起采用vif、velse、和vendif指令的指令条件执行的一个例子。
(5.6.2)指令dskip和dskipe
表2.52简要地定义了dskip和dskipe指令的操作。dskip指令减小一个指定的标量寄存器的内容,并且如果该标量寄存器的新内容为$FF时(它等效于十进制负一的二进制补码表示)引起跳过下一指令的执行。dskipe指令执行与dskip指令相同的步骤。另外,dskipe指令执行与vendif指令相同的步骤,即:(1)保证VT位110被认定;(2)保证VH位112被否定。图5-17显示了dskip和dskipe指令的执行期间所进行的步骤的流程图。
dskipe指令所执行的步骤与dskip指令相同;但是此外dskipe指令还执行与vendif指令相同的步骤,即设定VT位110并否定VH位112。这样,dskipe指令保证了VT位110和VH位112已返回它们的缺省或复位状态。这样,通过利用dskipe指令而不是dskip指令,VT位110和VH位112可被返回到它们的缺省状态。采用dskipe指令消除了在一个dskip指令之前执行vendif指令的必要。在许多应用中,在dskip或dskipe之后的下一个指令将是改变程序流程的指令(例如跳转指令)。且经常需要保证VT位110和VH位112在程序流程被改变之前被返回到它们的缺省状态。
虽然本发明通过减小标量寄存器中的数据值为调节该数据值,本发明的其他实施例可采用其他的各种调节方法。例如,可用一种算术单元来回或减一调节值。该调节值可以是一个不等于一个的数。例如,该调节值可以是一个不等于一的数。例如,该调节值可以是2的幂或是一个负数。或者,可采用增量器而不是减量器。可以增加数据值,直到它等于一预定值。虽然该预定值在本发明的所示实施例中是二进制补码形式的十进制负一(十六进制中的$FF),但也可采用任何预定值。例如,可用零作为该预定值。另外,比较测试可以是小于或等于的测试,而不只是相等性的测试。同样,比较测试可以是大于或等于的测试,而不只是等于的测试。
(5.6.3)指令repeat和repeate
表2.52定义了repeat和repeate指令的操作。该repeat和repeate指令使随后的N个指令被跳过,或者使随后的N个指令以指令循环的形式被执行M次。
参见图5-18-1、图5-18-2、图2-76到2-80、和第2.5.17节,repeat和repeate指令导致了执行同样的步骤,只是有以下的不同。repeate指令加上一蕴含的vendif指令作为循环中的最后一个指令。这样,每次执行完循环中的最后一个显式指令时,所有的VT位110和VH位112都被清除。这样,在指令循环结束时,repeate指令使VT位110和VH位112被返回到它们的缺省即复位状态。注意,显式或蕴含的vendif指令有若干种实现方式。例如,不管它们的当前逻辑状态如何,可迫使所有VT位110进入被认定的逻辑状态且迫使所有的VH位112进入否定的逻辑状态。或者,只有那些当前未被认定的VT位110可被迫使进入认定的逻辑状态,且所有当前未被否定的VH位112可被迫使进入否定的状态。
参见图2-41,微定序器控制寄存器(MCR)188有一个RELF位198和一个RPLF位200。RELF位198表示当前是否正在执行repeate循环。RPLF位200表示当前是否正在执行repeat循环。
在所示的本发明实施例中,下列寄存器被用于执行由repeat和repeate指令起动的循环:(a)重复开始寄存器(RBR)180(见图2-55);(b)重复结束寄存器(RER)182(见图2-56);和(c)重复计数寄存器(RCR)184(见图2-57)。在本发明的其它实施例中,可采用多些、少些、或者不同的寄存器来存储执行由repeat和repeate指令起动的循环所需要的参数。
(5.7)数据处理机体系结构
某些应用,诸如模糊逻辑、神经网张和其他并行、阵列导向应用,倾向于利用某些最好由SISD处理机执行的数据处理任务,以及某些最好由SIMD处理机执行的数据处理任务。本发明结合了SISD(单指令单数据)处理机的某些优点以及SIMD(单指令多数据)处理机的某些优点。
参见图2-67,数据处理机10有单个的微定序器22,后者能够向矢量机电路9和标量机电路26提供控制信号。当执行矢量指令时,微定序器22向矢量机9提供控制信号;当执行标量指令时,微定序器22向标量机26提供控制信号。数据处理机10每次只能执行一个指令,因此数据处理机10不同时执行矢量和标量指令,然而,在本发明的某些实施例中,由于流线(pipeline)化,可允许少量的指令重叠。
参见图2-67,矢量机9、输入数据寄存器(IDR)18、复位电路15、指令高速缓冲存储器20、微定序器22、控制寄存器22、标量机26、北端口28、南端口30、东端口32、和西端口34都通过传导加标总线13而互相双向地耦合。总线开关11耦合在全局数据总线38和广播总线36之间。微定序器22通过总线23与矢量机9双向耦合,以传送控制和状态信息。微定序器22通过总线25与标量机26双向地耦合,以传送控制和状态信息。参见图2-67和图2-69,微定序器22有指令解码电路19、控制电路21、拖延电路39、寄存器374、和算术逻辑单元(ALU)372,它们全都通过导体376和导体378而互相双向地耦合。
在本发明中,在单个的集成电路上的单个的数据处理机10利用单个的单板微定序器22,既能执行标量指令,也能执行矢量指令。这个在单个集成电路上的单个处理机10,还能在没有任何来自外部处理机的控制的情况下工作。实际上,如果数据处理机10包括一个单板ROM,而后者包含组成一完整的软件程序的一序列指令时,数据处理机10可作为应用中唯一的数据处理机而工作。
(5.8)把输入数据装入数据处理器
许多模糊逻辑、神经网络、和其他并行阵列导向应用,需要灵活的数据存储技术,这种技术使集成电路能以多种方式选择和存储输入数据。我们希望接收该数据的集成电路而不是发送该数据的装置,来选择适当的数据位并把它们以所希望的形式存储在集成电路中的所希望的装置中。还希望尽量减小选择和存储输入数据所需要的软件开销。虽然这种数据存储技术在神经网络应用中有非常大的用途,它也可以被广泛地用于其他许多应用。
在本发明的一个实施例中,数据处理机10提供了两种填充方式,以把信息存入输入数据寄存器(IDR)18。第一种填充方式叫做变址填充方式(也叫做输入变址方式),显示在图2-17和5-19中。第二种填充方式叫做标记填充方式(也叫做输入标记方式),显示在图2-18和5-20中。图5-21显示了用于实施IDR18的填充模式的电路。
位于RCR寄存器52(见图2-16和表2.10)中的填充方式位(FM)76,确定采用哪种填充方式。本发明的其他实施例可具有多些、少些、或不同的模式,并可采用一个或者多个控制位来选择采用哪种方式。在本发明的一个实施例中,当数据处理机10处于“Run”操作方式时,采用填充方式;且当数据处理机10处于“Stop”操作方式时,不采用填充方式。在“Run”操作方式下,用广播数据传送把数据从一个数据处理机10.x传到另一个数据处理机10.x。广播数据传送的目的地总是接收数据处理机10.x的IDR18。
变址填充方式被用于把相继或顺序的数据输入装入IDR18之中。图2-17和有关的描述内容,说明了本发明的一个实施例如何利用四个控制值来协调IDR18在变址填充方式下的填充。在所示的实施例中,四个控制值中的每一个处于不同的寄存器中。本发明的其他实施例可用多些、少些、或不同的控制值。另外,控制值可以以不同于存储在寄存器中的控制值的方式来提供。
图5-19与图2-17对应并显示了正由数据处理机10在其一个端口接收的数据流的值。IDR起始偏移寄存器(IOR)130包含指定定时值的起始偏移位(IO位)140。该定时值确定在数据流的何时IDR寄存器18将开始接收和存储数据值。在本发明的一个实施例中,IOR寄存器130包含一时钟周期时间值,该值计数在端口接收到的有效数据字节,并在IOR寄存器130中的计数与已在端口接收到的有效数据字节相匹配时起启动装置的作用。
IDR指针寄存器(IPR)132包含规定一指针值的指针位(PTR位)142。该指针值影响在IDR18中的何处存储输入的数据。该IDR计数寄存器(ICR)136包含规定一个计数值的计数位(CNT位)146。该计数值影响在IDR18中存储多少字节。IDR存储单元屏蔽寄存器(ILMR)134包含规定一个屏蔽值的屏蔽位(M位)144。该屏蔽值影响如何把数据装入IDR18之中。
参见图5-21,本发明的一个实施例采用了影子IPR寄存器135影子ICR寄存器139。该影子寄存器使IPR寄存器132和ICR寄存器136能继续存储用户编制的任何值。在IDR填充操作的开始,存储在IPR寄存器132中的值被装入影子IPR寄存器135,且存储在ICR寄存器136中的值被装入影子ICR寄存器139。然后,在IDR18的数据填充期间,存储在影子IPR寄存器135和影子ICR寄存器139中的值可被修正,而存储在IPR寄存器132和ICR136中的起始值不被修正。电路133包含影子IPR寄存器135及增量电路137。电路143包含影子ICR寄存器139和减量电路141。
影子IPR寄存器135总是指向下一个自由的IDR18的存储单元。来自ILMR寄存器134的值与来自影子IPR寄存器135的值相逻辑地组合,以确定对IDR18中的哪个存储单元进行写入。例如,如果ILMR寄存器134中的屏蔽值是$00,则在IDR填充期间对IDR18中的一个存储单元进行写入。如果ILMR寄存器134中的屏蔽值是$01,则IDR18中的下两个可用的存储单元将接收并存储同样的数据值。ICR寄存器136中的计数值确定多少数据值将被存入IDR18。然而,当确定实际将存储多少数据值时,计数值或屏蔽值中的较大者将确定多少数据将被实际写入IDR18中。注意一个输入数据值可被写入一个以上的IDR18存储单元,如图5-19所示。
标记填充方式被用于把非顺序数据输入装入IDR18。该标记填充方式不采用存储在IDR起始偏移寄存器(IOR)130中的一个定时值,而是采用了被叫做输入标记寄存器(ITR)1138的一组寄存器。各ITR寄存器138包含一组ITR位148,且每组ITR位148指定一定时值。每一定时值确定在输入数据流期间何时IDR18将接收并存储数据值。这样,ITR寄存器138使数据处理机10能指定一特定的顺序,按照该顺序输入的数据值被有选择地存入IDR寄存器18中。图5-20对应于图2-18并显示了被数据处理机10在其一个端口所接收的数据值流的一个例子。
参见图5-21,在本发明的一个实施例中,当数据处理机10的端口之一接收输入数据时,一计数器156被增值。当计数器156中的值与ITR位148的当前值相匹配时,输入的数据值被装入IDR18之中。该过程继续进行,直到所有的输入样值都被装入IDR18,或直到ICR寄存器136中包含的计数值被达到时为止。注意,在本发明的一个实施例中,来自减量电路141的下溢状态被用作为至IDR地址发生和控制电路154的控制输入信号。
该IDR地址发生和控制电路154,与IDR加载电路153一起,执行协调IDR寄存器18的加载功能。IDR地址发生和控制电路154为存储输入数据值的IDR18存储单元产生地址。电路150通常被用来指定IDR寄存器18“何时”被加载;电路151通常被用来指定将在IDR寄存器18中的“何处”装入输入数据值;电路152通常被用来指定将把“多少”数据值存入IDR寄存器18中。
在本发明的一个实施例中,有六十四个ITR寄存器138,且各ITR寄存器138都能存储两个字节的值。与IOR寄存器130类似,ITR寄存器138确定被广播的输入数据何时被选择和存入IDR18的存储单元。其他三个寄存器,IDR指针寄存器(IPR)132、IDR计数寄存器(ICR)136、和IDR存储单元屏蔽寄存器(ILMR)134为两种填充方式起着相同的目的。注意标记填充方式为实现未完全连接的神经网络提供了有力的方法或采用接收域概念的范例。
(5.9)数据处理器10的拖延技术和机制
图5-22-1和5-22-2显示了数据相干技术,它保证了用于矢量和标量指令的数据相干和同步。这种数据相干技术,使数据处理机10中指令的内部执行和数据处理机10外部源对寄存器的装入之间能够实现协调。
在本发明的一个实施例中,输入数据寄存器(IDR)18可被用作至数据处理机10的输入矢量。标量以及矢量操作均可利用IDR18进行。操作数的寻址方式,确定着操作是标量操作还是矢量操作(见第2.5.5节)。一种拖延机制被用来保证数据的相干性。该拖延机制使访问IDR18的指令等候,直到所有有效的数据输入都已被放入IDR18之中。
图2-68显示了一种层和各个层中的处理部件16。注意在所示的本发明实施例中,VT位110和VID位114均位于各处理部件16之内的矢量进程控制寄存器(VPCR)102中。本发明的其他实施例可采用其他的布置,诸如把VT位110和VID位114定位为IDR18的一部分。
在所示的实施例中,各IDR18单元和各处理部件16之间有一对应的关系。所以,对各个处理部件16,均有一个对应的启动值(VT位110)和一个对应的有效值(VID位114)。在本发明的其他实施例中,启动值可多于单个的启动位(VT位110),且有效值可多于单个的有效位(VID位114)。另外,注意当指令执行把IDR18作为目的地的写入操作时,只有其对应的VT位110被认定的那些IDR18的存储单元被实际写入。这样,VT位110要么可被作为启动其对应的VT位110被认定的处理部件16的启动值,要么可被作为屏蔽掉或禁止其对应的VT位110被否定的处理部件16的屏蔽值。
图5-23到5-25显示采用这种数据相干技术的某些例子。图5-23和5-24显示了数据处理机10对要求存取IDR18的标量机指令的响应。图5-23显示了数据处理机10未拖延的情况;而图5-24显示了数据处理机10拖延的情况。图5-25显示了数据处理机10对要求存取输入数据寄存器(IDR)18并使数据处理机10拖延的矢量指令的响应。
在图5-23中,标量指令对其有效位被认定(对数据处理机#2来说即为VID位114是逻辑1)的IDR存储单元,在本例中即IDR[2],进行存取。被认定的有效位,表示存储在对应的IDR存储单元中的值是有效的并可在标量指令的执行期间被使用。所以已经有了有效数据,而且标量指令的执行能够继续。全局拖延信号126保持被否定,向微定序器22指示标量指令的执行可以继续进行而不用任何延迟。注意对应的启动值即VT位110未被用于标量指令。
然而,在图5-24中,标量指令却存取一个其有效位被否定(对处理单元#2来说即VID位114是逻辑0)的IDR18的存储单元,在本例中即IDR[2]。否定的有效位表示存储在对应的IDR存储单元中的值不是有效的且不能用于标量指令的执行期间。这样,数据处理机10必须延迟该标量指令的执行,直到一外部数据源通过端口向IDR[2]写入一个有效的数据值,全局拖延信号126被认定,向微定序器22指明标量指令的执行必须被延迟,直到接收到有效数据为止。
同样,注意对应的启动值,即VT位110,不是用于标量指令的。在本发明的某些实施例中,外部的数据源可直接写入VID位114,从而把VID位114置于其认定状态,即使没有写入IDR18。注意外部数据源可以是一个主机处理机54或另一据处理机10.x。
在图5-25中,存取IDR18的指令是矢量指令。启动值,VT位110,现在被使用。用于各处理部件16的启动值(VT位110)确定该处理部件16在矢量指令的执行期间是否参与。若VT位110被否定,则该特定的处理部件16不参与。因此其启动值被否定的IDR18的存储单元也不参与,且其有效值是无关的(即被标为“不必关心的”)。然而,其启动值被认定的IDR18的存储单元却参与,且其有效值是相关的(即被标为“要被关心”的)。所以在图5-25中,处理部件#1和#62不参与,因为它们的VT位110被否定;而处理部件#0、#2、#3和#63是参与的,因为它们的VT位110被认定。
继续参见图5-25,有效值(VID位114)现在被使用。矢量指令试图存取其VT位110被认定的每一个IDR18存储单元。然而,若干IDR18的存储单元(即本例中的IDR[3]和IDR[63])正要参与但却还不包含有效值。所以VID位114对于处理部件#3和#63仍然被否定。结果,处理部件#3和#63认定它们各自的矢量拖延信号124(见图2-68-1)。来自任何一个处理部件16的任何拖延信号的认定,都使全局拖延导体126被置于其被认定的状态。在本发明的一个实施例中,全局拖延导体126以“线或”或者“线与”的配置而被使用。
在图2-68-1所示的本发明实施例中,拖延发生逻辑116产生两个局部拖延信号,即标量拖延信号122和矢量拖延信号124。标量拖延信号122和矢量拖延信号124被电路121进行逻辑组合,以产生全局拖延信号126。在所示的实施例中,当利用处理部件16的操作、访问一标量时,采用标量拖延信号122,而在采用处理部件16的操作访问一矢量时,则利用矢量拖延信号124。本发明的其他实施例可以不同的方式产生全局拖延信号126。
对全局拖延导体126所传送的信号的认定,向微定序器22表明数据处理机10应该拖延和延迟当前矢量指令的执行,直到有效数据被接收并存储在IDR[3]和IDR[63]之中为止。数据处理器10然后拖延。一旦有效数据被接收并存储在IDR[3]中,处理部件#3的VID位114被认定且处理部件#3的矢量拖延信号124被否定。且一旦有效数据被接收并存储在IDR[63]中,处理部件#63的VID位114被认定并且处理部件#63的矢量拖延信号124被否定。不再有任何处理部件16认定矢量拖延信号124,所以全局拖延导体126返回其被否定状态。
注意,若其VT位110被认定的每个处理部件16使其VID位114也被认定,则这些处理部件16中将没有一个认定矢量拖延信号124,且全局拖延导体126将保持在其否定状态。在这种情况下,对应于各参与的处理部件16的IDR18存储单元已包含有效数据并且不需要拖延。
对VID位114的认定和否定,本发明的不同实施例可采用多种机制来改变VID位114。本发明的其他实施例可采用如下机制中的一种或多种。第一,某些指令或指令类型可直接改变VID位114。第二,寻址方式可使VID位114被改变。例如,在本发明的一个实施例中,对于其中IDR  18是源寄存器的矢量指令,有两个特殊的寻址方式。当采用“IDR”寻址方式时,VID位114不受矢量指令的执行的影响。另一方面,当采用“IDRC”寻址方式时,VID位114通过矢量指令的执行而被否定。第三,数据处理机10的复位可使VID位114被改变。第四,对IDR18存储单元的写入存取可被用来认定对应的VID位114。第五,对VID位114的直接写入可被用来改变它们的逻辑状态。也可采用影响VID位114的其他机制。
(5.10)最大和最小值确定
(5.10.1)指令colman、rowmax、locmax、colmin、rowmin、和locmin对模糊逻辑、神经网络、和其他并行、阵列导向的应用,需要一种简单而迅速的技术和机制来对矢量和标量操作数进行最大和最小值确定。该技术和机制应该能够处理不同数目的待比较数据值。另外,该技术和机制应该能够跨越集成电路的边界进行最大和最小值确定。确定最小或最大值的位置及其值本身经常是重要的。虽然该最小和最大值确定技术对神经网络应用非常有用,它也可以被用于多种其他应用。
在本发明的一个实施例中,数据处理机10能够执行一个或多个colmax、rowmax、或locmax指令,以便执行最大值确定。同样,数据处理机10能够执行一个或多个colmin、rowmin或locmin指令,以便执行最小值确定。本发明的其他实施例可有多些、少些、或不同的比较指令。
参见图5-26,标为“线或”的线路158的比较线或比较导体与矢量机9中的各处理部件16相耦合。每一处理部件16有一个对应的VT位110位于每一处理部件16之内的矢量进程控制寄存器(VPCR)102中(关于VT位110的信息,请见图2-68、图2-64、和表2.31)。虽然图5-26显示了六十三个处理部件16,本发明的其他实施例可采用任何数目的处理部件16。最小/最大引脚选择电路164、行控制引脚电路160、和列控制引脚电路162,被用来把比较导体158有选择地耦合到所示的各集成电路引脚,即行控制引脚ROW82和列控制引脚COL84。所以,电路170通常起着用于有选择地耦合和解耦比较导体158和集成电路引脚82和84的开关的作用。
图5-30-1和5-30-2显示了当执行比较指令时进行的步骤。在本发明的一个实施例中,比较指令本身的特定操作码,确定了COL引脚84和ROW引脚82中的一个是否要被耦合到比较导体158。例如,在所示的实施例中,colmax和colmin指令只把COL引脚84耦合到比较导体158,rowmax和rowmin指令只把ROW引脚82耦合到比较导体158,而locmax和locmin指令不把任何引脚耦合到比较导体158。
仍然参见图5-26,微定序器22对比较指令进行解码,并确定对于该具体指令应把哪个引脚(如果有的话)同比较导体158相耦合。微定序器22然后把控制信号送到最小/最大引脚选择电路164。最小/最大引脚选择电路164利用该控制信号来有选择地确定是认定还是否定至行控制引脚电路160的控制信号和至列控制引脚电路162的控制信号。当行控制引脚电路160接收到一个来自最小/最大引脚选择电路164的认定控制信号时,该行控制引脚电路160把比较导体158耦合到ROW引脚82。当列控制引脚电路162接收到一个来自最小/最大引脚选择电路164的认定控制信号时,列控制引脚电路162把比较导体158耦合到COL引脚84。
因此,比较导体158能与其他数据处理机10.x的集成电路引脚相耦合,如图5-29所示。所以,内部比较导体158能被耦合到外部比较导体,诸如列导体166和行导体168。所以比较既可在集成电路以内进行,也可以跨越多个集成电路的引脚边界进行。
图5-27和5-28显示了locmax指令的执行的例子。在图5-27中,第一列表示初始时存储在各处理部件中的一个任意8位值。在该具体例子中,对于处理部件#8至#63来说启动位(VT位110)的初始值是零。所以,只有处理部件#0至#7被启动并参与指令的执行。
作为第一步骤,各被启动的处理部件,本例中即处理部件#0至#7,将其第一个数据位置于“线或”线158上。在所示的本发明实施例中,该第一数据位总是存储在各处理部件中的数据值的最高有效位(MSB),且各随后的位是剩下的下一最高有效位。然而,本发明的其他实施例可用不同的数据位排序和选择方案。
由于所示实施例中的比较导体158是一条“线或”线,比较线158将保持在逻辑状态“0”。除非在该线上驱动出逻辑电平“1”。注意,也可使用一条“线与”线。对于一条“线与”线,该线将保持在逻辑状态“1”中,除非在该线上驱动一个逻辑电平“0”。图5-28显示了各步骤之后(即各组据位被置于“线或”线158上之后)得到的“线或”线158的逻辑状态。
对locmax指令,各处理单元把它设在“线或”线158上的逻辑值与实际产生的线上的逻辑状态相比较。参见图2-68-1,移位、求补及检测电路117执行这种功能。若处理部件把逻辑零设置到线上并读回了零,则该处理部件的VT位110保持被认定。同样,若该处理部件在线上放置一个逻辑“1”并读回一个“1”则该处理部件的VT位110保持被认定。然而,若处理部件把逻辑零放置于线上并读回1时,该处理部件的VT位110被否定,而且该处理部件(它现在已被禁止)将不再参与比较指令的执行。注意,在采用“线或”线的情况下,处理部件不可能把逻辑1置于线上而读回零。
在图5-27所示的实施例中,存储在处理部件#0至#7中的每一数据值的最高有效位是逻辑零。所以被启动的各处理部件把逻辑零置于“线或”线158上。所以“线或”线158保持逻辑零状态。各处理部件把它置于线上的值(在该情况下为零)与线上实际产生的值(在此情况下也是零)相比较。因为各处理部件把逻辑零置于线上并且读回零,所以各处理部件的VT位110保持被认定。各处理部件的VT位110的值显示在图5-27的第二列。这样在第一步骤之后,各处理部件的VT位110的值仍然是逻辑1。
作为第二步骤,每一被启动的处理部件(在此例中仍然是处理部件#0至#7)把其第二数据位即下一个最高有效位置于“线或”线158上。各处理部件把它置于“线或”线158上的逻辑值与线实际产生的逻辑状态相比较。因为处理部件#0、#2、#3、#4和#6把逻辑1置于线上并读回1,所以这些处理部件的VT位110保持被认定。但是,因为处理部件#1、#3、和#7把逻辑零置于线上并读回了1,所以这些处理部件的VT位110被否定。因此处理部件#0、#2、#3、#4、#6仍然被启动,而处理部件#1、#5、和#7现在被禁止并不再参与比较指令的执行。各处理部件的VT位110在各“线或”步骤之后的值,显示在图5-27的第二列。
在最后一个“线或”步骤之后的VT位110的希望值,示于图5-27的最右一列。最右列中的希望值与中间列中的步骤如下所示的实际结果相匹配。由于处理部件#2和#4均包含最大值(在此情况下为%0101000),所以希望在指令结束时只有处理部件#2和#4的VT位110被认定。以这种方式,可用比较指令来禁止不包含最大值的所有处理部件。VT位110可被用来确定包含最大值的处理部件的位置。而且该最大值本身可从其VT位110在比较指令结束时被认定的任何处理部件中检索到。
在所示的本发明实施例中,“线或”步骤的数目是可编程的。指令中的一个位字段被用于指定“线或”步骤的数目。例如,若各处理部件有N位宽的数据值,则通过编程指令中的位字段,用户可选择对1至N位中的任何一个进行比较。本发明的其他实施例可用寄存器位字段或缺省值,而不是指令位字令,来指定要被比较的位的数目。
参见图2-68-1,位修正电路118与移位、求补、和检测电路117相耦合。该移位、求补和检测电路117检测处理部件何时把逻辑零置于线上并读回了一个1。移位、求补和检测电呼117然后认定至位修正电路118的控制信号。当位修正电路118收到该认定的控制信号时,位修正电路118否定VT位110。注意控制和状态信号是在控制电路115和微定序器22之间传送的。还请注意控制电路115产生用于控制处理部件16的控制信号。
图5-27和5-28所示的例子是关于使用不带符号数据值的locmax指令的执行的。这种机制和技术的变形,可被用于执行对带符号或不带符号的数进行操作的指令,而且它对最大或最小值进行定位。为定位带符号数的一个矢量的最大值,上述过程中可加上一个附加的步骤。假定带符号的数由2进制补码形式表示,各带符号的数的最高有效位是符号位。各个带符号数的该符号位必须在它被置于“线或”线158上之前被求补。
带符号数的一个矢量最小值,可以同样的方式,通过对所有的位进行求补而得到定位。二进制补码的带符号数的最小值可通过求2钩
Figure 941032973_IMG3
盼灰酝獾乃琯形焕炊丂弧2渭<2-68-1,移位、求补、和检测电路117与微定序器22相耦合,以接收控制信息;关于这些信息(如果有的话)的、至“线或”线158的一个(些)数据位输出必须被求补。移位、求补和检测电路117然后进行任何必须的求补。
在所示的本发明实施例中,一控制寄存器位字段被用来检测比较指令是将把待比较的数据值作为带符号还是不带符号的值来对待。参见图2-12,算术控制寄存器(ACR)172包含一个标量带符号/不带符号位(SSGN)174和一个矢量带符号/不带符号位(VSGN)176。VSGN位176被用于检测在比较指令期间所用的矢量数据值将被认作是带符号的还是不带符号的数。
虽然本发是的所示实施例只能处理每条比较指令八位的最大宽度,但可通过执行比较指令一次以上(从最高有效字节开始),来处理比八位更宽的矢量数据值。注意,本发明的其它实施例还可处理多于或少于8位宽的数据值。
图6-27和5-28所示的例子,是关于locmax指令的执行的。rowmax指令的执和与locmax指令的类似,只是比较导体158还要附加地与ROW引脚82相耦合。且colmax指令的执行与locmax指令的类似,只是比较导体158还要附加地与COL引脚84相耦合。
同样,rowmin指令的执行与locmin指令的类似,只是比较导体158还要与ROW引脚82相耦合。且colmin指令的执行与locmin指令的类似,只是比较导体158还要与COL引脚84相耦合。
参见图5-29,用于比较操作的“线或”线158,可只被用在数据处理机10.x的内部,或者通过集成电路引脚与外部“线或”线连接以用于多芯片操作。数据处理机10.x支持跨越如图5-29所示的二维阵列中的数据处理机10.x的任何行或列的多芯片最大或最小存储单元的操作。采用了多个“线或”线166和168。通常,每行有一条外部“线或”线,每列有一条外部“线或”线。
在本实施例中,各数据处理机10.x有一个用于与一条“线或”行线168相耦合的ROW引脚82,和一个用于与一条“线或”列线166相耦合的COL引脚84。这些列导体166和行导体168被用作用于行和列导向的多芯片操作的“线或”线;这些操作是在数据处理机10.x在Run操作方式下执行指令时进行的。注意,ROW引脚82和COL引脚84在Stop操作方式下有一种不同的功能。在Stop操作方式下,ROW引脚82和COL引脚84的使用方式与芯片选择类似。
(5.10.2)指令vmaxp、vmax、vminp、和vmin、maxp、max、minp、和min
对于模糊逻辑,神经网络、和其他并行、阵列导向应用,需要一种简单而快速的技术和机制,以便为矢量和标量操作数均进行最大和最小值确定。该技术和机制应该能对带符号(二进制的补码)和不带符号的数进行最大和最小值确定。而且,该技术和机制应能对扩充长度的(多字节的)操作数进行最大和最不值确定。尽管这种用于最小和最大值确定的技术对神经网络应用非常有用,但它当然也可被用于多种其他应用。
参见图2-67,矢量最大和矢量最小指令即vmaxp、vmax、vminp、和vmin的执行涉及到矢量机9。表2.44描述了矢量最大和矢量最小指令。表2.36列出了哪些存储器能被用作源寄存器(即vregls),且表2.37列出了哪些寄存器能被用作目地寄存器(即vreg2D)。2.5.12.3和表2.74也描述矢量最大和矢量最小指令。
参见图2-68和2-68-1,矢量最大和矢量最小指令的比较部分由算术逻辑单元(ALU)119执行。由于比较功能由用于加、减、和比较指令的同一ALU119执行,因此这些最小和最大指令几乎不需要什么额外的电路。注意在本发明的其他实施例中,可用任何类型的比较器电路来执行该比较功能。
一个符号位,即位于算术控制寄存器(ACR)172中的VSGN位176,确定矢量最大和最小指令所用的数据值将被和为带符号的还是不带符号的数来处理。矢量机9有两个扩充位,即位于矢量进程控制寄存器(VPCR)102中的VX0位104和VX1位105。这两个扩充位被用来支持扩充长度的操作,包括扩充长度的最小和最大操作。这两个扩充位通常被清除到缺省状态,除了在扩充长度的计算期间。
参见图2-67,标量机26涉及标量最大和标量最小指令-即maxp、max、minp、和min-的执行。表2.51描述矢量最大和矢量最小指令。表2.38列出了哪些寄存器可被用作源寄存器(即“sregS”)和目标寄存器(即“sregD”)。
参见图2-70,标量最大和标量最小指令的比较部分由算术逻辑单元(ALU)304执行。由于比较功能由用于加、减、和比较指令的同一ALU304执行,因此这些最小和最大指令几乎不需要什么额外的电路。注意在本发明的其他实施例中,可用任何类型的比较器电路来执行该比较功能。
一个符号位,即位于算术控制寄存器(ACR)172中的SSGN位174,确定标量最大和最小指令所用的数据值是将被作为带符号的还是不带符号的数来处理。标量机26有两个扩充位,即位于SPCR寄存器208中的SX0位210和SX1位212。这两个扩充位被用来支持扩充长度的操作,包括扩充长度的最小和最大操作。这两个扩充位通常被清除到缺省状态,除非在扩充长度的计算期间。
图5-10显示了数据处理机10在各种比较指令的执行中所执行的步骤,包括矢量和标量最小和最大指令。
在本发明中,只需要一个指令来计算两个单字节操作数的最小或最大值,例如,单个指令“min G0,G1”可被用来计算存储在寄存器G0和G1(见图2-70中的G[n]寄存器302)中的两个单字节操作数的最小值。注意,其结果即两个值中的较小者,被存储在寄存器G1中。还请注意要求扩充位SX0210和SX1212在指令开始之前处于它们的缺省状态,在所示实施例中即%00。
以下的步骤在min指令期间执行。ALU304用带符号或不带符号的算术运算比较两个数据值,如由SSGN位174所指定的。ALU304从目标数据值中减去源数据值。ALU304产生一表示减操作是否需要借位的借位值。若减的结果是负值,则借位值被认定。若减的结果是正值,则借位值被否定。
ALU304在控制电路308接收的借位信号上输出借位值。控制电路308然后在ALU304的输出端把一个或多个控制信号送到一个多路转换器(未显示),使ALU304选择较小的数据值作为结果。该结果,即较小的数据值,然后被传送到目标寄存器并存储在其中。由于min指令是一种“非前级”指令,它无条件地把扩充位SX0210和SX1212清除到缺省状态。控制电路308和位修正电路306被用来改变标量进程控制寄存器(SPCR)208中的位的逻辑状态。
一串一个或多个的前级指令-其后面跟有一单个的非前级指令-通常被用来计算扩充长度的操作数的最小或最大值。例如,下面的一串指令可被用来计算在源寄存器组(G2,G1,G0)和目标寄存器组(G5,G4,G3)中的两个3字节数的最小值。注意其结果,即两个3字节值中的较小者,被存储在寄存器组(G5,G4,G3)中。还请注意在第一指令“minp G2,G5”开始之前,扩充位SX0 210和SX1 212必须处于它们的缺省状态。
minp G2,G5    ;min前级G2至G5
;(产生扩充位)
minp G1,G4    ;min前级G1至G4
;(产生扩充位)
min G0,G3    ;min G0至G3
;(使扩充位返回缺省状态)
注意前级指令minp被用于最高有效字节,且非前级指令min被用于最后的最低有效字节。第一个指令,即“minp G2,G5”,利用扩充位SX0  210和SX1  212在指令开始时处于缺省状态这一事实,来确定它正在处理最高有效字节。所以,“minp G2,G5”指令利用带符号或不带符号的数比较G2与G5,如SSGN位174所指定的。
“minp  G2,G5”指令选择较小的操作数字节作为结果,并且有选择地修正扩充位SX0  210和SX1  212,以表示比较的结果(见表2.59)。如果存储在寄存器G2中的数据值小于存储在寄存器G5中的数据值,则寄存器G2被选择为结果且扩充位SX0  210和SX1  212被有选择地修正为等于%01。如果存储在寄存器G2中的数据值大于存储在寄存器G5中的数据值,则寄存器G5被选择为结果,且扩充位SX0  210和SX1  212被有选择地修正为等于%10。如果存储在寄存器G2中的数据值等于存储在寄存器G5中的数据值,则两个数据值之一被选择为结果,而且扩充位SX0  210和SX1  212被有选择地修正为等于%11。
第二指令,即“minp G1,G4”,利用扩充位SX0  210和SX1  212在指令开始时不处于缺省状态这一事实,以确定它不在处理最高有效字节。
如果扩充位SX0  210和SX1  212的输入值是%01,则已确定出存储在寄存器组(G2,G1,G0)中的3字节值小于存储在寄存器组(G5,G4,G3)中的数据值。因此,存储在寄存器G1中的数据值被选为结果,且扩充位SX0  210和SX1  212保持为%01。
如果扩充位SX0  210和SX1  212的输入值是%01,则已经确定出存储在寄存器组(G2,G1,G0)中的3字节值大于存储在寄存器组(G5,G4,G3)中的3字节值,所以,存储在寄存器G4中的数据值被选为结果并且扩充位保持为%10。
如果扩充位SX0  210和SX1  212的输入值是%11,则利用不带符号的算术运算把存储在寄存器G1中的数据值与存储在G4中的数据值进行比较。注意,该字节不是最高有效字节,所以不包含一个符号位,即使该3字节数是带符号的。“minp G1,G4”指令选择较小的值作为结果,并根据比较的结果有选择地把扩充位SX0  210和SX1 212修正为%01、%10、或%11(见表2.59)。
最后的指令,“min G0,G3”,是非前级指令,且它以与上述“minp G1,G4”指令相同的方式起作用,只是除了它把扩充位SX0  210和SX1  212返回到它们的缺省状态%00。
虽然上述的例子利用了标量指令min和minp,但是对于矢量指令vmin和vminp,在各启动的处理部件16中也将进行相同的步骤。
对于确定最大值的计算,采用了标量指令max和maxp以及矢量指令v max和vmaxp。最大指令的功能与最小指令的功能非常类似,只是较大而不是较小的值被选作为将被存储在目标寄存器中的结果。
图5-31显示了一串指令的例子,它可被用来计算源寄存器组(G2,G1,G0)和目标寄存器组(G5,G4,G3)中的两个3字节不带符号数的最大值。注意其结果,即两个3字节值中的较大者,被存储在寄存器组(G5,G4,G3)中。还请注意要求扩充位SX0  210和SX1 212,在第一指令“maxp G2,G5”开始之前,处于它们的缺省状态。还请注意符号位SSGN174等于%1,从而表明该数据将被作为不带符号的数来处理。
maxp G2,G5    ;max前级G2至G5
;(产生扩充位)
maxp G1,G4    ;max前级G1至G4
;(产生扩充位)
max  G0,G3    ;max G0至G3
;(把扩充位返回缺省状态)
图5-32显示了一串指令的例子,它可被用于计算在源寄存器组(G2,G1,G0)和目标寄存器组(G5,G4,G3)中的两个不带符号的3字节数的最大值。注意其结果,即两个3字节值中的较大者,被存储在寄存器组(G5,G4,G3)中。还请注意请求在第一指令“maxp G2,G5”开始之前,扩充位SX0  210和SX1  212处于它们的缺省状态。还请注意符号位SSGN174等于%0,从而表明数据值将被当作带符号的(二进制的补码)数处理。
maxp G2,G5    ;max前级G2至G5
;(产生扩充位)
maxp G1,G4    ;max前级G1至G4
;(产生扩充位)
max G0,G3    ;maxG0至G3
(把扩充位返回缺省状态)
(5.11)对系数存储器阵列(CMA)14的反向存取
参见图2-67和5-33,在本发明的所示实施例中,系数存储器阵列(VH)14是一个布置成六十四行和六十四列的字节宽存储电路。本发明的其他实施例可有不同数目的行和列。各处理部件16每次与VH14中的一行相耦合,从而使每一处理部件16每次能对六十四字节的信息进行存取。
为了尽量减小VH14和处理部件16所需要的半导体区域,处理部件16在实体上被分成两部分,处理部件16的第一部分在实体上位于VH14的第一侧。处理部件16的第二部分在实体位于VH14的不同一侧(见图5-33)。
通过改变VH14的行(如图5-33所示),有可能在实体上把各处理部件16与附加的存储器行相耦合。这样各处理部件16就可存取两倍的存储器存储单元。各存储器存储单元对应一个字节宽存储电路。另外,可在不影响VH14和处理部件16之间的接口的情况下,除去一半的处理部件16(即两个部分中的一个部分)。而且,处理部件16之间的通信得到了改进,因为处理部件PE[n]可与处理部件PE[63-n]交换数据。例如,处理部件PE[0]可与处理部件PE[63]交换数据;而处理部件PE[30]可与处理部件PE[33]交换数据。
一个选择电路204耦合在VH14和包括PE[0]至PE[31]的一部分处理部件16之间。选择电路206耦合在VH14包括PE[32]至PE[63]的一部分处理部件16之间。选择电路204和选择电路206被用来选择两行中的哪一行被耦合到各处理部件16并且由各处理部件16所存取。
由于VH14中的行的实体布置,处理部件PE[0]可用很少的电导体路由耦合到VH14中的行63,从而最大限度地减小了所需要的半导体区域。处理部件PE[n]能存取其本身的对应存储器行(行n);而且处理部件PE[n]还能存取与处理部件PE[63-n]对应的存储器行(行63-n)。
存储器的存取利用标量机内的指针寄存器中的指针值来选择对哪行VH14进行存取(见图2-59和图2-70中的全局指针寄存器P[0]-P[7]300)。该指针值从0至127是有效的。最高有效位(在所示的实施例中为位6)被用来在对应行和非对应行之间进行选择。如果最高有效位被否定,则对应行被处理部件16所使用。而如果最高有效位被认定,则非对应行被处理部件16所使用。对处理部件PE[n]来说对应行是行“n”,而对处理部件PE[n]来说非对应行是行“63-n”。对同一存储器存储单元的同时写入得到了避免,因为所有的处理部件16将对它们的对应行进行写入,或所有的处理部件16将对它们的非对应行进行写入。
从程序员的观点看,非对应行可被用作为一种反转矢量的途径。当处理部件16把字节值写入它们的非对应行中的一个或多个列中,并随后把该字节值从它们的对应行中的同样的一个或多个列中读出时,就发生了矢量的反转。处理部件PE[63]现在存储原来存储在处理部件PE[0]中的值,并且处理部件PE[0]现在存储原来存储在处理部件PE[63]中的值。这种处理部件16可存取在CMA  14中的对应行或者非对应行的事实,对于数据移动操作(例如下移操作)和可以把VT位110用作启动位的这一事实,都是非常有用的。
Figure 941032973_IMG5
Figure 941032973_IMG6
Figure 941032973_IMG7
Figure 941032973_IMG8
Figure 941032973_IMG10
Figure 941032973_IMG11
Figure 941032973_IMG12
Figure 941032973_IMG14
Figure 941032973_IMG15
Figure 941032973_IMG16
Figure 941032973_IMG17
Figure 941032973_IMG18
Figure 941032973_IMG19
Figure 941032973_IMG20
Figure 941032973_IMG22
Figure 941032973_IMG23
Figure 941032973_IMG24
Figure 941032973_IMG25
Figure 941032973_IMG26
Figure 941032973_IMG28
Figure 941032973_IMG30
Figure 941032973_IMG31
Figure 941032973_IMG32
Figure 941032973_IMG34
Figure 941032973_IMG35
Figure 941032973_IMG36
Figure 941032973_IMG37
Figure 941032973_IMG39
Figure 941032973_IMG42
Figure 941032973_IMG43
Figure 941032973_IMG44
Figure 941032973_IMG45
Figure 941032973_IMG46
Figure 941032973_IMG48
Figure 941032973_IMG49
Figure 941032973_IMG50
Figure 941032973_IMG51
Figure 941032973_IMG52
Figure 941032973_IMG53
Figure 941032973_IMG54
Figure 941032973_IMG55
Figure 941032973_IMG56
Figure 941032973_IMG57
Figure 941032973_IMG58
Figure 941032973_IMG59
Figure 941032973_IMG60
Figure 941032973_IMG61
Figure 941032973_IMG62
Figure 941032973_IMG64
Figure 941032973_IMG65
Figure 941032973_IMG66
Figure 941032973_IMG67
Figure 941032973_IMG68
Figure 941032973_IMG69
Figure 941032973_IMG70
-=不被作用
+=见特殊定义
Figure 941032973_IMG72
=见特殊定义
D=目的地
S=源
R=操作的结果
&=逻辑“与”
|=逻辑“或”
^=“异或”
D=辑“非D”
#=根据带符号/不带符号操作设定的溢出。对带符号的溢出=Cin[7]^cout[7]。对不带符号的溢出=cout[7]。
Figure 941032973_IMG73
Figure 941032973_IMG74
Figure 941032973_IMG75
Figure 941032973_IMG76
Figure 941032973_IMG77
Figure 941032973_IMG78
Figure 941032973_IMG84
Figure 941032973_IMG86

Claims (412)

1、一种数据处理机(10),它包括:
一个第一端口(北(44)/西(50);
一个第二端口(南(48)/东(46);
一个用来存储一组控制值的第一存储电路(PCR(52));
一个第二存府电路;(IDR(18))
一个耦合于第一端口和第二端口之间的第一开关电路(42.1或42.2),该第一开关电路响应于该组控制值中的第一一个(EWS位72或NSS位74)而处于导通态模式或非导通模式;以及
一个耦合于第一端口和第二存储电路之间的第一抽头电路(40.1或40.4),该第一抽头电路响应于该组控制值中的第二一个(NT位70或WT位64)而处于导通模式或非导通模式。
2、如权利要求1所述的数据处理机,其中当第一开关电路处于导通模式时第一开关电路把第一端口耦合于第二端口。
3、如权利要求1所述的数据处理机,其中当第一开关电路处于非导通模式时第一端口不耦合于第二端口。
4、如权利要求1所述的数据处理机,它还包括:
耦合于第一存储电路的接口装置,该接口装置响应于能够动态地修改该组控制值的软件程序,向第一存储电路传送该组控制值。
5、如权利要求4所述的数据处理机,它还包括:
一个能够存储软件程序的在数据处理机内部的指令存储电路(指令高速缓冲存储器20),该指令存储电路与接口装置相耦合。
6、如权利要求4所述的数据处理机,它还包括:
一个能够存储软件程序的在数据处理机外部的存储电路(56、58或60(或当CPU有单板存储器时的54)),该存储电路与接口装置相耦合。
7、如权利要求1所述的数据处理机,它还包括:
一个用来确定该组控制值中每一个值的逻辑值的复位电路(15),该复位电路耦合于第一存储电路,以便提供该组控制值中每一个的逻辑值。
8、如权利要求1所述的数据处理机,其中当第一抽头电路处于导通模式时,第一抽头电路把第一端口耦合于第二存储电路。
9、如权利要求1所述的数据处理机,其中当第一抽头电路处于非导通模式时,第一抽头电路不把第一端口耦合于第二存储电路。
10、如权利要求1所述的数据处理机,它还包括:
一个耦合于第二端口和第二存储电路之间的第二抽头电路(40.2或40.3),第二抽头电路响应于该组控制位中的第三个一个(ST位66或ET位68)而处于导通模式或非导通模式。
11、如权利要求10所述的数据处理机,其中当第二抽头电路处于导通模式时,第二抽头电路把第二端口耦合于第二存储电路。
12、如权利要求10所述的数据处理机,其中当第二抽头电路处于非导通模式时,第二抽头电路不把第二端口耦合于第二存储电路。
13、如权利要求10所述的数据处理机,它还包括:
一个第三端口(北端口44或西端口50,一个是第一端口,另一个是第三端口);
一个第四端口(南端口48或东端口46,一个是第三端口,另一个是第四端口);
一个耦合于第三端口和第四端口之间的第二开关电路(42.1或42.2;一个是第一开关,另一个是第二开关),第二开关电路响应于该组控制值中的第四一个(EWS位72或NSS位74,一个是第一控制值,另一个是第四控制值),而处于导通模式或非导通模式;
一个耦合于第三端口和第二存储电路之间的第三抽头电路(40.1或40.4),第三抽头电路响应于该组控制值中的第五一个(NT位70或WT位64)而处于导通模式或非导通模式;以及
一个耦合于第四端口和第一存储电路之间的第四抽头电路(40.2或40.3),第四抽头电路响应于该组控制值中的第六一个(ST位66或ET位68)而处于导通模式或非导通模式。
14、如权利要求1所述的数据处理机,其中第一存储电路是一个可编程控制寄存器(PCR)。
15、一种数据处理器,它包括:
一个用于数字数据通信的第一端口(北或西);
一个用于数字数据通信的第二端口(南或东);
一个用来存储一控制值的第一存储电路(PCR);
一个第二存储电路(IDR);
一个耦合于第一端口和第二端口之间的第一开关电路(42.1或42.2),第一开关电路响应于控制值的第一部分(EWS位72或NSS位74)而处于导通模式和非导通模式之一;以及
一个耦合于第一端口和第二存储电路之间的第一抽头电路(40.1或40.4),第一抽头电路响应于控制值的第二部分(NT位70WT位64)而处于导通模式和非导通模式之一。
16、如权利要求15所述的数据处理机,其中当第一开关电路处于导通模式时,数字数据在第一端口和第二端口之间传送。
17、如权利要求15所述的数据处理机,其中当第一开关电路处于非导通模式时没有数字数据在第一端口和第二端口之间传送。
18、如权利要求15所述的数据处理机,其中当第一抽头电路处于导通模式时,数字数据从第一端口向第二存储电路传送。
19、如权利要求15所述的数据处理机,其中当第一抽头电路处于非导通模式时,没有数字数据从第一端口向第二存储电路传送。
20、如权利要求15所述的数据处理机,其中控制值响应于一个软件程序而提供给第一存储电路。
21、如权利要求20所述的数据处理机,它还包括:
一个能够存储该软件程序的在数据处理机内部的指令存储电路(指令高速缓冲存府器20)。
22、如权利要求21所述的数据处理机,它还包括:
一个能够存储一切初始化程序的在数字处理机外部的存储器(56、58或60)。
23、如权利要求15所述的数据处理机,它还包括:
一个用来确定控制值的逻辑值的复位电路(15),该复位电路与第一存储电路相耦合,以便提供控制值的逻辑值。
24、如权利要求15所述的数据处理机,它还包括;
一个耦合于第二端口和第二存储电路之间的第二抽头电路(40.2或40.3),第二抽头电路响应于控制值的第三部分(ST位66或ET位68)而处于导通模式和非导通模式之一。
25、如权利要求24所述的数据处理机,它还包括:
一个用于数字数据通信的第三端口(北端口引脚44或西端口引脚50);
一个用于数字数据通信的第四端口(南端口引脚48或东端口引脚46);
一个耦合于第三端口和第中端口之间的第二开关电路(42.1或42.2),第二开关电路响应于控制值的第四部分(EWS位72或NSS位74)而处于导通模式和非导通模式之一;
一个耦合于第三端口和第二存储电路之间的第三抽头电路(40.1或40.4),第三抽头电路响应于控制值的第五部分(NT位70或WT位64)而处于导通模式和非导通模式之一,以及
一个耦合于第四端口和第二存储电路之间的第四抽头电路(40.2或40.3),第四抽头电路响应于控制值的第六部分(ST位66或ET位68)而处于导通模式和非导通模式之一。
26、如权利要求15所示的数据处理机,它还包括:
用来启动数据处理机的方式选择装置(Run/Stop引脚80),它以一种第一操作方式(Stop)和一种第二操作方式(Run)之一进行通信,其中:
当数据处理器处于第一操作方式之中时,一个外部处理机(54)一起使用第一端口(北或西)和第二端口(南或东)来存取第一存储电路,而不采用该组控制值(PCR位);以及
当数据处理机处于第二操作方式之时,该数据处理机被有选择地启动,以便响应于存储在第一存储电路中的该组控制值来进行数字信息通信,该组控制值有选择地启动第一端口和第二端口两者,以便独立地进行数字数据通信。
27、如权利要求15所述的数据处理机,它还包括:
一个保持寄存器(EWHR92或NSHR90),当第一开关电路处于导通模式时,该保持寄存器存储在第一端口和第二端口之间传送的数字数据。
28、一种在数据处理机中进行数字数据通信的方法,该方法包括步骤:
提供用来进行数字数据通信的第一端口(北44或西50);
提供用来进行数字数据通信的第二端口(南48或东46);
提供用来存储控制值的第一存储电路(PCR54);
提供能够存储数字数据的第二存储电路(IDR18);
耦合第一端口和第二端口之间的第一开关电路(42.1或42.2);
响应于控制值的第一部分(EWS位72或NSS位74),选择第一开关电路的导通模式和非导通模式之一;
耦合第一端口和第二存储电路之间的第一抽头电路(40.1或40.4);以及
响应于控制值的第二部分(NT位70或WT位64),选择第一抽头电路的导通模式和非导通模式之一。
29、如权利要求28所述的方法,其中选择第一开关电路的导通模式和非导通模式之一的步骤还包括步骤:
当控制值的第一部分有一个第一值(逻辑1)时,在第一端口和第二端口之间传送数字数据;以及
当控制值的第一部分有一个第二值(逻辑0)时,阻止在第一端口和第二端口之间的数字数据的传送。
30、如权利要求28所述的方法,其中选择第一抽头电路的导通模式和非导通模式之一步骤还包括步骤:
当控制值的第二部分有第一值(逻辑1)时,从第一端口向第二存储电路传送数字数据;以及
当控制值的第二部分有第二值(逻辑0)时,阻止在第一端口的第二存储电路之间的数字数据的传送。
31、如权利要求28所述的方法,该方法还包括步骤:
启动一个软件程序,以便向第一存储电路提供控制值。
32、如权利要求31所述的方法,该方法还包括步骤:
启动该软件程序,以便在数据处理机执行一条指令的同时动态地修改控制值。
33、如权利要求31所述的方法,该方法还包括步骤:
在数据处理机内部的一个指令存储电路(20)中有选择地存储该软件程序。
34、如权利要求33所述的方法,该方法还包括步骤:
在数据处理机外部的一个存储器(54、56、58、60)中有选择地存储该软件程序。
35、如权利要求28所述的方法,该方法还包括步骤:
启动一个复位电路(15),以便向第一存储电路提供控制值。
36、如权利要求28所述的方法,该方法还包括步骤:
耦合第二端口和第二存储电路之间的第二抽头电路(40.2或40.3);以及
响应于控制值的第三部分(ET位68或ST位66),选择第二抽头电路的导通模式和非导通模式之一。
37、如权利要求36所述的方法,其中确定第二抽头电路模式的步骤还包括步骤:
当控制值的第三部分有第一值(逻辑1)时,从第二端口向第二存储电路传送数字数据;以及
当控制值的第三部分有第二值(逻辑0)时,阻止在第二端口和第二存储电路之间的数字数据的传送。
38、如权利要求37所述的方法,该方法还包括步骤:
提供用于数字数据通信的第三端口(北端口44或西端口50);
提供用于数字数据通信的第四端口(南端口48或东端口46);
耦合第三端口和第四端口之间的第二开关电路(42.1或42.2);
响应于控制值的第四部分(EWS位72或NSS位74),选择第二开关电路的导通模式和非导通模式之一;
耦合第三端口和第二存储电路之间的第三抽头电路(40.1或40.4);
响应于控制值的第五部分(NT位70或WT位64),选择第三抽头电路的导通模式和非导通模式之一;
耦合第四端口和第三存储电路之间的第四抽头电路(40.2或40.3);以及
响应于控制值的第六部分(ET位68或ST位66),选择第四抽头电路的导通模式和非导通模式之一。
39、一种数据处理系统,它包括:
多个数据处理机,其中多个数据处理机中的每一个包括:
一组用来进行数字数据通信的端口(44、46、48、59);
一个用来存储控制值的第一存储电路(PCR  52);
一个第二存储电路(IDR  18);
一组开关电路(42.1和42.2),该组开关电路中的每一个耦合于该组端口的两个之间,该多个开关电路中的每个响应于控制值的第一部分而处于导通模式和非导通模式之一;
一组抽头电路(40.1、40.2、40.3和40.4),该组抽头电路中的每一个耦合于该组端口中的预定的一个和第二存储电路之间,该组抽头电路中的每个响应于控制值的第二部分(WT位64、ST位66、ET位68和NT位70)而处于导通模式和非导通模式之一;以及
该系统还包括一个第一导体(61、63),用来把多个数据处理机中的第一一个的该组端口之一耦合于多个数据处理机中的第二一个的该组端口之一,以便在多个数据处理机中的第一一个(10.0)和该多个数据处理机中的第二一个(10.2或10.1)之间,有选择地进行数字数据通信。
40、如权利要求39所述的数据处理系统,其中当该组开关电路中的预定的一个处于导通模式时,从多个数据处理机中的第一一个向多个数据处理机中的第二一个传送数字数据。
41、如权利要求39所述的数据处理系统,其中当该组抽头电路中的任何一个处于导通模式而且在该组端口中的对应的预定的一个处收到数字数据时,数字数据被传送到多个数据处理机之一的第二存储电路之中。
42、如权利要求39所述的数据处理系统,其中多个开关电路包括:
一个耦合于该组端口中的第一一个(北44)和该组端口中的第二一个(南48)之间的第一开关电路(42.2),第一开关电路响应于控制值的第一部分(NSS位74)而处于导通模式和非导通模式之一;以及
一个耦合于该组端口中的第三一个(西50)和该组端口中的第四一个(东46)之间的第二开关电路(42.2),第二开关电路响应于控制值的第二部分(EWS位72)而处于导通模式和非导通模式之一。
43、如权利要求42所述的数据处理系统,其中该组抽头电路包括:
一个耦合于该组端口中的第一一个和第二存储电路之间的第一抽头电路(40.1),第一抽头电路响应于控制值的第三部分(NT位70)而处于导通模式和非导通模式之一;
一个耦合于该组端口中的第二一个和第二存储电路之间的第二抽头电路(40.3),第二抽头电路响应于控制值的第四部分(ST位66)而处于导通模式和非导通模式之一;
一个耦合于该组端口中的第三一个和第二存储电路之间的第三抽头电路(40.4),第三抽头电路响应于控制值的第五部分(WT位64)而处于导通模式和非导通模式之一;以及
一个耦合于该组端口中的第四一个和第二存储电路之间的第四抽头电路(40.2),第四抽头电路响应于控制值的第六部分(ET位68)而处于导通模式和非导通模式之一。
44、如权利要求39所述的数据处理系统,其中多个数据处理机中的每一个被安排在多个行和多个列中。
45、如权利要求39所述的数据处理系统,其中多个数据处理机被安排在至少一行中。
46、如权利要求39所述的数据处理系统,其中多个数据处理机被安排在至少一列中。
47、一种数据处理机,它包括:
一个第一端口(北/西);
一个第二端口(南/东);
一个用来存储一组控制值的第一存储电路(PCR);
一个第二存储电路(IDR);以及
一个耦合于第一端口和第二端口之间的第一开关电路,第一开关电路响应于该组控制值中的第一一个而处于导通模式或非导通模式。
48、一种数据处理机(10),它包括:
一个用来进行数字信息通信的第一端口(北28/西34);
一个用来进行数字信息通信的第二端口(南30/东32);
用来启动数据处理机以便进行数据信息通信的启动装置(43、37和52),该启动装置与第一端口和第二端口相耦合,以便启动数字信息的通信;
一个内部存储器存储电路(IDR18),该存储器存储电路存储一组数据值,其中该组数据值中的每一个具有一个对应的地址单元,该内部存储器存储电路与第一端口和第二端口两者相耦合;以及
用来启动数据处理机以一种第一操作方式和一种第二操作方式之一进行通信的方式选择装置(R/S引脚80),其中:
当数据处理机处于第一操作方式(Stop方式)时,一个外部处理机(CPU54)一起使用第一端口和第二端口来存取内部存储器存储电路中的该组数据值之一;以及
当数据处理机处于第二操作方式(Run方式)时,数据信息由第一端口和第二端口(R/S引脚)被独立地进行通信。
49、如权利要求48所述的数据处理机,其中第一操作方式仅用一主机集成电路进行信息通信来启动数据处理机,而第二操作方式用该主机集成电路和一非主机集成电路来启动该数据处理机,以便有选择地进行信息通信。
50、如权利要求48所述的数据处理机,其中方式选择装置包括一个可从外部访问的第一集成电路引脚。
51、如权利要求48所述的数据处理机,其中启动装置包括:
一个用来存储一组控制值的控制存储电路(PCR52),该控制存储电路与第一端口和第二端口两者相耦合。
52、如权利要求51所述的数据处理机,其中当数据处理机处于第二操作方式(Run)时,该组控制值启动数据处理机,在内部存储器存储电路中有选择地存储数字信息,并在第一端口和第二端口之间有选择地进行数字信息通信。
53、如权利要求48所述的数据处理机,其中启动装置包括一个可从外部访问的第二集成电路引脚(ROW(82)或COL  SELECT(84))。
54、如权利要求48所述的数据处理机,它还包括:
用来选择第一存取方式(随机)和第二存取方式(流式)之一的存取方式选择装置(OP引脚94),该第一存取方式和第二存取方式有选择地用于第一操作方式(Stop)期间,其中:
第一存取方式(随机)响应于一个提供给第一端口的第一地址值来启动数据处理机,以便存取内部存储器存储电路;而
第二存取方式(流式)响应于利用一个存储在第三存储器存储电路中的偏移值生成的第二地址值来启动数据处理机,以便存取内部存储器存储电路。
55、如权利要求54所述的数据处理机,其中存取方式选择装置包括一个可从外部访问的第三集成电路引脚(OP引脚94)。
56、如权利要求54所述的数据处理机,其中第二存取方式(流式)启动数字处理机以便存取内部存储器存储电路中的一组升序的地址,第二地址值指示该组升序地址中的第一一个。
57、如权利要求56所述的数据处理机,它还包括:
一个用来存储计数值的第四存储器存储电路,该计数值指示地址单元数。
58、如权利要求54所述的数据处理器,它还包括:
一个用来存储延迟值的第五存储器存储电路(HSOR),该延迟值表明在以第二存取方式操作时存取内部存储器存储电路的时刻。
59、如权利要求48所述的数据处理机,它还包括:
一个用来进行数字信息通信的第三端口(西34);
一个用来进行数字信息通信的第四端口(东);以及
一个用来存储一组控制值的控制寄存器(PCR52),该组控制值有选择地启动数据处理机以便以第二操作方式(Run方式)进行数字信息通信。
60、如权利要求50所述的数据处理机,它还包括:
耦合于第一、第二、第三和第四端口用以确定由第一、第二、第三和第四端口中的每一个所通信的数字信息是否有效的有效性检测装置(XCI引脚75、87、89、95和SCO引脚73、79、85、93)。
61、如权利要求59所述的数据处理机,其中当数据处理机处于第一操作方式时,一个外部地址值由第一端口(北28)和第三端口(西34)两者所接收,该外部地址值存取内部存储器储电路。
62、如权利要求61所述的数据处理机,其中外部地址值的最低有效部分提供给第一端口(北28)而外部地址值的最高有效部分提供给第三端口(西端口34)。
63、如权利要求61所述的数据处理机,其中内部存储器存储电路响应于由第一端口和第三端口两者所接收的外部地址值来提供存储于其中的待从第二端口输出的该组数据值之一。
64、如权利要求61所述的数据处理机,其中多个数据值之一响应于由第一端口和第三端口两者所接收的外部地址值而输入到第二端口。
65、如权利要求61所述的数据处理机,其中当数据处理机处于第一操作方式时,外部地值由一个主机数据处理机提供。
66、如权利要求59所述的数据处理机,其中当数据处理机处于第二操作方式(Run)时,数字信号信息响应于该组控制值中的第一一个(NSS位74)而在第一端口(北)和第二端口(南)之间有选择地通信。
67、如权利要求59所述的数据处理机,其中当数据处理机处于第二操作方式(Run)时,数字信息响应于该组控制值中的第二一个(EWS位72)而在第三端口(西)和第四端口(东)之间有选择地通信。
68、如权利要求59所述的数据处理机,其中当数据处理机处于第二操作方式(Run)时,从第一、第二、第三和第四端口之一收到的数字信息响应于该组控制值中的第四一个(四个抽头位之一)而有选择地存储在内部存储器存储电路中。
69、如权利要求48所述的数据处理机,其中当数据处理机处于第一操作方式(Stop)并且数据处理机没有为了进行数字信息通信而被启动时,数字信息在第一端口和第二端口之间没有修改地进行通信。
70、如权利要求48所述的数据处理机,其中当数据处理机被启动以便进行数据信息通信并且数据处理机处于第一操作方式(Stop)时,提供给第一端口的数字信息被用于存取内部存储器存储电路中的该组数字数据值之一。
71、一种用来在数据处理机中进行数字数据通信的方法,该方法包括步骤:
有选择地启动数据处理机以便进行数字数据通信;
提供用来进行数字数据通信的第一端口(北28);
提供用来进行数字数据通信的第二端口(南30);以及
有选择地确定第一和第二端口的操作方式(Stop或Run);第一操作方式(Stop)启动第一端口和第二端口两者,以便仅用主机集成电路(54.2)来进行数字数据通信;第二操作方式(Run)启动第一端口和第二端口两者,以便用主机集成电路和非主机集成电路两者来进行数字数据通信。
72、如权利要求71所述的方法,其中操作方式响应于数据处理机的一个可从外部访问的方式选择集成电路引脚(R/S引脚80)的逻辑值来确定。
73、如权利要求71所述的方法,其中有选择地启动数据处理机的步骤还包括步骤:
当数据处理机处于第一操作方式(Stop)时,从外部提供一个启动信号,以便启动数据处理器向主机集成电路进行数字数据通信;以及
当数据处理机处于第二操作方式(Run)时,提供一个内部启动电路(41或43),以便启动数据处理机向主机集成电路和非主机集成电路进行数字数据通信。
74、如权利要求73所述的方法,其中启动信号包括数据处理机的一个芯片启动集成电路引脚(ROW(82)或COL(84))。
75、如权利要求73所述的方法,其中内部启动电路包括:
一个用来存储一组控制值的数据处理机内部的第一存储电路(PCR52),当数据处理机处于第二操作方式(Run)时,该组控制值的一部分能够启动数据处理机的第一和第二端口以便进行数字数据通信。
76、如权利要求75所述的方法,该方法还包括步骤:
把一个接口电路耦合于第一存储电路,该接口电路响应于一个软件程序向第一存储电路传送该组控制值。
77、如权利要求71所述的方法,该方法还包括步骤:
把一个第二存储电路(IDR18)耦合于第一端口和第二端口,第二存储电路存储一组数据值,其中该组数据值中的每一个具有一个对应的地址单元。
78、如权利要求77所述的方法,该方法还包括步骤:
提供用于通信数字数据的第三端口;以及
当数据处理机处于第一操作方式(Stop)的第一存取方式(随机)时,启动主机处理机以便向数据处理机的第一端口和第三端口二者提供一个外部地址值。
79、如权利要求77所述的方法,该方法还包括步骤:
响应于外部地址值存取第二存储电路(IDR18)中的该组数据值中的对应的一个值;
当启动数据处理机以便进行数据信息通信时,启动数据处理机的第二端口(南30)以提供该组数据值中的对应的一个值,以及
当没有为了进行数据信息通信而启动数据处理机时,启动数据处理机的第二端口,以便提供一个数字信息值。
80、如权利要求71所述的方法,该方法还包括步骤:
提供一个用来在第一操作方式的第二存取方式期间指示数据处理机的被存取部分的第三存储电路(HSSR100)。
81、一种数据处理系统,它包括:
一个主机数据处理器机(54);以及
多个数据处理机(10.15、10.16、10.17和10.18),多个数据处理机的每一个包括:
用来启动该数据处理机以便进行数字信息通信的启动装置;
一个用于数字信息通信的第一端口(28);
一个用于数字信息通信的第二端口(30);
一个用于数字信息通信的第三端口(34);
一个用于数字信息通信的第四端口(32);
一个内部存储器存储电路(IDR18),该内部存储器存储电路存储一组数据值,其中该组数据值中的每一个具有一个对应的地址单元,该内部存储器存储电路耦合于第一、第二、第三和第四端口中的每一个;以及
用来启动数据处理机以第一操作方式和第二操作方式之一来进行通信的方式选择装置(R/S引脚80),其中:
当数据处理机处于第一操作方式(Stop)时,主机数据处理机(54)利用第一端口和第二端口一起来存取内部存储器存储电路中的该组数据值之一;以及
当数据处理机处于第二操作方式(Run)时,数字信息由响应于启动装置所提供的一组控制值而利用用于数字信息通信的第一、第二、第三和第四端口中的每一个独立地得以通信。
82、如权利要求81所述的数据处理系统,其中多个数据处理机中的每一个的方式选择装置包括一个可以外部访问的第一集成电路引脚(R/S插脚80)。
83、如权利要求81所述的数据处理系统,其中多个数据处理机(10.68和10.69或10.70和10.71)被安排在一行和一列之一中。
84、如权利要求81所述的数据处理系统,其中该多个数据处理机(10.0至10.9)被安排在多个行和多个列中。
85、如权利要求81所述的数据处理系统,其中该多个数据处理机中的每一个的启动装置至少包括一个行选择集成电路引脚(82)和一个列选择集成电路引脚(84),其中行选择集成电路引脚和列选择集成电路引脚是可从外部访问的。
86、如权利要求81所述的数据处理系统,其中启动装置包括:
一个用来存储一组控制值的控制存储电路(PCR52),该控制存储电路与第一、第二、第三和第四端口中的每一个相耦合。
87、如权利要求86所述的数据处理系统,其中当数据处理机中的每一个处于第二操作方式时,该组控制值启动数据处理机中的每一个以便在每一个的内部存储器存储电路(IDR18)中有选择地存储数字信息,并且利用与多个数据处理机中的邻接一个(10.52至10.67)及主机数据处理机(54.3)有选择地进行数字信息通信。
88、如权利要求81所述的数据处理系统,其中该多个数据处理机中的每一个还包括:
用来选择第一存取方式(随机)和第二存取方式(流式)之一的存取方式选择装置(OP引脚94),第一和第二存取方式有选择地用在第一操作方式(Stop)期间,其中:
第一存取方式(随机)响应于提供给第一端口(北28)的第一地址值来启动数据处理机,以便存取内部存储器存储电路(IDR18);以及
第二存取方式(流式)响应于利用存储在第三存储器存储单元中的偏移值生成的第二地址值来启动数据处理机,以便存取内部存储器存储电路。
89、如权利要求88所述的数据处理系统,其中第二存取方式(流式)启动数字处理机以便存取内部存储器存储电路中的一组升序的地址,第二地址值指示该组递升的地址中的第一一个。
90、如权利要求88所述的数据处理系统,它还包括:
一个用来存储计数值的第四存储器存储电路(DCR197),该计数值指示地址单元数。
91、如权利要求88所述的数据处理系统,它还包括:
一个用来存储一个延迟值的第五存储器存储电路(HSOR寄存器),该延迟值指示在以第二存取方式操作时内部存储器存储电路被存取的时刻。
92、如权利要求91所述的数据处理系统,其中当数据处理机处于第一操作方式时,一个外部地址值由第一端口和第三端口二者所接收,该外部地址值存取内部存储器存储电路。
93、如权利要求91所述的数据处理系统,其中当数据处理机处于第一操作方式时,该外部地址值由主机数据处理器机(54.1)提供。
94、一种集成电路(10),它包括:
一个能够执行矢量指令的矢量机(9);
一个能够执行标量指令的标量机(26);
一个用来控制矢量指令在矢量机中的执行及标量指令在标量机中的执行的定序器(22),该定序器与矢量机相耦合以进行矢量控制信息通信,该定序器与标量机相耦合以进行标量控制信息通信;以及
一个用来存储矢量操作数和标量操作数的共用存储器电路(14),该共用存储器电路与矢量机相耦合以进行矢量操作数通信,该共用存储器电路与标量机相耦合以进行标量操作数通信。
95、如权利要求94所述的集成电路,其中定序器非并行地执行矢量指令和标量指令。
96、如权利要求94所述的集成电路,其中标量机包括:
一组标量指针寄存器(300),该组标量指针寄存器中的每一个存储一个标量指针地址值和一个第一标量数据值之一;以及
一组标量数据寄存器(302),该组标量数据寄存器中的每一个存储一个第二标量数据值(G(0)-G(7))。
97、如权利要求96所述的集成电路,其中存储在该组标量指针寄存器中的每一个里的标量指针地址值,指示共用存储器电路中的矢量操作数的一个地址和存储在输入数据寄存器中的一个标量值的一个地址之一。
98、如权利要求97所述的集成电路,其中共用存储器电路中的矢量操作数的地址,指示在共用存储器电路中存储器存储单元的一列。
99、如权利要求96所述的集成电路,其中在该组标量指针寄存器之一中所存储的标量指针地址值,指示矢量机中的一组处理部件之一。
100、如权利要求96所述的集成电路,其中标量机还包括:
一个用来执行算术和逻辑运算的算术逻辑单元(304),该算术逻辑单元与该组标量数据寄存器中的每一个、该组标量指针寄存器中的每一个、以及共用存储器电路相耦合。
101、如权利要求94所述的集成电路,其中矢量机包括:
一组用来执行矢量指令的处理部件(16),该组处理部件中的每一个包括:
一组用来存储一组数据值的矢量寄存器(128),该组数据值中的每一个有选择地在矢量指令执行期间被使用(V(0)-V(7));以及
一个用来执行算术和逻辑运算的算术逻辑单元(119),该算术逻辑单元与该组矢量寄存器中的每一个及共用存储器电路相耦合。
102、如权利要求101所述的集成电路,其中该组处理部件中的每一个对应于共用存储器电路的一部分。
103、如权利要求101所述的集成电路,它还包括:
一个耦合于矢量机的输入数据寄存器(IDR),该输入数据寄存器存储一组数据值。
104、如权利要求103所述的集成电路,其中输入数据寄存器响应于矢量指令的第一和第二存取方式之一至少将其内所存储的该组数据值之一提供给矢量机。
105、如权利要求104所述的集成电路,其中第一存取方式启动输入数据寄存器,以便向矢量机提供该组数据值之一,该组数据值之一被提供给矢量机中的该组处理部件中的每一个。
106、如权利要求104所述的集成电路,其中第二存取方式启动输入数据寄存器,以便向矢量机提供一组数据值,该组数据值中的每一个被提供给矢量机的该组处理部件之一。
107、如权利要求94所述的集成电路,它还包括一组指示集成电路的内部状态信息的集成电路引脚(86)。
108、如权利要求107所述的集成电路,其中该组集成电路引脚提供一组状态信号,这些状态信号集合地指示集成电路的一种指令状态,指令状态指示下列情况之一;
当拖延指令正在执行时;
当一个写指令正在执行时;
当矢量指令正在执行时;
当标量指令正在执行时;
当一个条件指令正在执行时;
当执行矢量指令和标量指令之一期间已发生异常时;
当转移指令引起转移操作的转移时;以及
当转移指令未引起转移操作的执行时。
109、如权利要求94所述的集成电路,它还包括一个可编程的集成电路引脚(87),该可编程的集成电路引脚被编程为输入集成电路引脚和输出集成电路引脚之一。
110、一种集成电路(10),它包括:
一个用来存储一组指令的指令存储器(20),该组指令中的每一个是矢量指令和标量指令之一;
一个能够响应于矢量指令来执行一矢量操作的矢量机(9);
一个能够响应于标量指令来执行一标量操作的标量机(26);
一个用于控制矢量机中矢量操作的执行和标量机中标量操作的执行的定序器(22),该定序器与矢量机相耦合以便进行矢量控制信息通信,该定序器与标量机相耦合以便进行标量控制信息通信,该定序器与指令存储器相耦合以便接收该组指令中的第一一个;
一个用来存储一组操作数的共用存储器电路(14),该组操作数中的每一个都在执行矢量操作和标量操作之一的期间被使用,共用存储器电路与矢量机相耦合以便对该组操作数中的第一一个进行通信,共用存储器电路与标量机相耦合以便对该组操作数中的第二一个进行控制;以及
一个耦合于矢量机的输入数据寄存器(18),该输入数据寄存储器存储一组数据值。
111、如权利要求110所述的集成电路,它还包括:
一个用于数字数据通信的第一端口(44);
一个用于数字数据通信的第二端口(48);
一个用于数字数据通信的第三端口(46);
一个用于数字数据通信的第四端口(50);
一个用来存储控制值的控制寄存器(PCR52);
一个耦合于第一端口和第二端口之间的第一开关电路(42.1),该第一开关电路响应于控制值的第一部分而处于导通模式和非导通模式之一,其中当该第一开关电路处于导通模式时,数字数据在第一端口的第二端口之间传送,而当该第一开关电路处于非导通模式时,在第一端口和第二端口之间没有数字数据传送;
一个耦合于第三端口和第四端口之间的第二开关电路(42.2),该第二开关电路响应于控制值的第二部分而处于导通模式和非导通模式之一,其中当该第二开关电路处于导通模式时,数字数据在第三端口和第四端口之间传送,而当该第二开关电路处于非导通模式时,在第三端口和第四端口之间没有数字数据传送;
一个耦合于第一端口和输入数据寄存器之间的第一抽头电路(40.1),该第一抽头电路响应于控制值的第三部分而处于导通模式和非导通模式之一,其中当该第一抽头电路处于导通模式时,数字数据从第一端口向输入数据寄存器传送,而当该第一抽头电路处于非导通模式时,没有数字数据从第一端口向输入数据寄存器传送;
一个耦合于第二端口和输入数据寄存器之间的第二抽头电路(40.3),该第二抽头电路响应于控制值的第四部分而处于导通模式和非导通模式之一,其中当该第二抽头电路处于导通模式时,数字数据从第二端口向输入数据寄存器传送,而当该第二抽头电路处于非导通模式时,没有数字数据从第二端口向输入数据寄存器传送;
一个耦合于第三端口和输入数据寄存器之间的第三抽头电路(40.2),该第三抽头电路响应于控制值的第五部分而处于导通模式和非导通模式之一,其中当该第三抽头电路处于导通模式时,数字数据从第三端口向输入数据寄存器传送,而当该第三抽头电路处于非导通模式时,没有数字数据从第三端口向输入数据寄存器传送;以及
一个耦合于第四端口和输入数据寄存器之间的第四抽头电路(40.4),第四抽头电路响应于控制值的第六部分而处于导通模式和非导通模式之一,其中当该第四抽头电路处于导通模式时,数字数据从第四端口向输入数据寄存器传送,而当该第四抽头电路处于非导通模式时,没有数字数据从第四端口向输入数据寄存器传送。
112、如权利要求110所述的集成电路,其中定序器非并行地解码矢量指令和标量指令。
113、如权利要求110所述的集成电路,其中标量机包括:
一组标量指针寄存器(P(0)-P(7)),该组标量指针寄存器中的每一个存储一个标量指针地址值或者一个第一标量数据值;以及
一组标量数据寄存器(G(10)-G(7))该组标量数据寄存器中的每一个存储一个第二标量数据值。
114、如权利要求113所述的集成电路,其中在该组标量指针寄存器中的每一个里所存储的标量指针地址值,指示共用存储器电路中的矢量操作数的地址和存储于输入数据寄存器中的标量值的地址之一。
115、如权利要求113所述的集成电路,其中标量机还包括:
一个用来执行算术和逻辑运算的算术逻辑单元,该算术逻辑单元与该组标量数据寄存器中的每一个、该组标量指针寄存器中的每一个、以及共用存储器电路相耦合。
116、如权利要求110所述的集成电路,其中矢量机包括:
一组用来执行量指令的处理部件,该组处理部件中的每一个包括:
一组用来存储一组数据值的矢量寄存器(V(0)-V(7)),该组数据值中的每一个在矢量指令执行期间有选择地被使用;以及
一个用来执行算术和逻辑运算的算术逻辑单元,该算术逻辑单元耦合于该组矢量寄存器中的每一个并耦合于共用存储器电路。
117、如权利要求116所述的集成电路,其中该组处理部件中的每一个对应于共用存储器电路的一组存储器存储部件中的一行。
118、如权利要求110所述的集成电路,其中输入数据寄存器响应于矢量指令的第一和第二存取方式之一,将至少其内所存储的该组数据值之一提供给矢量机。
119、如权利要求118所述的集成电路,其中第一存取方式启动输入数据寄存器以便向矢量机提供该组数据值之一,该组数据值之一被提供给矢量机中的该组处理部件中的每一个。
120、如权利要求118所述的集成电路,其中第二存取方式启动输入数据寄存器以便向矢量机提供一组数据值,该组数据值中的每一个被提供给矢量机的该组处理部件之一。
121、如权利要求110所述的集成电路,它还包括一组指示集成电路的内部状态信息的集成电路引脚(PSTAT输出引脚)。
122、如权利要求121所述的集成电路,其中该组集成电路引脚提供一组状态信号,该状态信号集合地指示集成电路的指令状态,指令状态指示下列情况之一:
当拖延指令正在被执行时;
当一写指令正在被执行时;
当矢量指令正在被执行时;
当标量指令正在被执行时;
当条件指令正在被执行时;
当执行矢量指令和标量指令之一期间已发生异常时;
当转移指令引起转移操作的执行时;以及
当转移指令未引起转移操作的执行时。
123、如权利要求110所述的集成电路,它还包括一个可编程的集成电路引脚,该可编程的集成电路引脚被编程为输入集成电路引脚和输出集成电路引脚之一。
124、一种数据处理器,它包括:
用于接收一个第一数字数据值的输入装置(抽头40.1、40.2、40.3、或40.4);
一个拥有一组存储器存储单元的存储器存储电路(IDR18),该组存储器存储单元的第一个具有一个对应的地址并有选择地存储一组数字数据值之一,第一存储器存储单元具有一个第一地址并存储该第一数字数据值,该存储器存储电路耦合于用于接收第一数字数据值的输入装置。
一个用于存储一个与该第一地址对应的第一指针值(PTR位142)的指针寄存器(132),该指针寄存器耦合于存储器存储器回路;以及
一个用来存储一屏蔽值的屏蔽寄存器(134),屏蔽值(m位144)指示接收并存储第一数字数据值的存储器存储单元数,该屏蔽寄存器耦合于存储器存储电路。
125、如权利要求124所述的数据处理机,其中屏蔽值(m位144)指示一组地址,其中该组地址中的每一个对应于接收并存储该第一数字数据值的存储器存储单元数之一。
126、如权利要求125所述的数据处理机,其中屏蔽值由一组屏蔽位来表示,该组屏蔽位用于有选择地确定与接收和存储该第一数字数据值的存储器存储单元数之一相对应的该组地址中的每一个。
127、如权利要求124所述的数据处理机,它还包括:
一个用来使第一指针值增加一个预定值以便提供递增的指针值的增量电路(137),递增的指针值对应于第二地址,该增量电路耦合于指针寄存器以便接收第一指针值。
128、如权利要求127所述的数据处理机,其中该预定值是用屏蔽值生成的。
129、如权利要求127所述的数据处理机,其中当屏蔽值指示接受和存储该第一数字数据值的存储器存储单元数大于1时,该第一数据值被存储在与该第二地址相对应的第二存储器存储单元中。
130、如权利要求124所述的数据处理机,其中该第一数字数据值是一组数字数据值中的第一一个。
131、如权利要求130所述的处理机,它还包括:
一个用来存储计数值(CNT位146)的计数寄存器(ICR136),该计数值指示接收和存储该组数字数据值的存储器存储单元数,存储器存储单元数中的每一个存储该组数字数据值之一,该计数寄存器耦合于存储器存储电路。
132、如权利要求131所述的数据处理机,它还包括:
一个用来使计数值减小一个递减值以便提供递减的计数值的减量电路(141)。
133、如权利要求132所述的数据处理机,其中递减值取决于屏蔽值。
134、如权利要求130所述的数据处理机,它还包括:
一个用来存储一组定时值的定时存储电路(ITR138),其中该组定时值中的每一个对应于一组升序时刻之一,一个外部数据源在升序时刻之一向输入装置(IDR18)提供该组数字数据值之一,该定时存储电路耦合于输入装置。
135、如权利要求134所述的数据处理机,其中该组定时值中的每一个指示一个外部数据源向输入装置提供该组数字数据值之一的时刻。
136、如权利要求130所述的数据处理机,它还包括:
一个输入定时寄存器(130),该输入定时寄存器存储第一定时值,该第一定时值指示一个外部数据源(10.x或54.x)向输入装置提供该第一数字数据值的一个第一时刻,该输入定时寄存器耦合于输入装置。
137、如权利要求136所述的数据处理机,其中外部数据源向输入装置提供该组数字数据值中的下一个,该组数字数据值中的下一个是在与第一时刻相连续的第二时刻提供的。
138、如权利要求124所述的数据处理机,它还包括一个用来存储控制值以便选择一组填充方式之一的控制存储电路,该控制存储电路被耦合于存储器存储电路(PCR中FM位)。
139、一种在数据处理机中存储数字数据的方法,该方法包括步骤:
接收一个第一数字数据值;
从一指针寄存器(IPR132)中存取一指针值,一个第一指针值对应于存储器存储电路(IDR18)中的一个第一存储器存储单元的第一地址;
从屏蔽寄存器(ILMR134)中存取屏蔽值,屏蔽值指示存储器存储电路中的存储器存储单元数;
在存储器存储电路中的第一存储器存储单元中存储第一数字数据值;以及
在存储器存储电路中的第一组存储器存储单元中存储该第一数字数据值,该第一组存储器存储单元对应于由屏蔽值所指示的存储器存储单元数。
140、如权利要求139所述的方法,其中在存储器存储电路中存储第一数字数据值的步骤还包括步骤:
ⅰ)将指针值存储在一个影子寄存器(影子IPR135)中作为一个影子指针值;
ⅱ)在由该影子指针值所指示的该组存储器存储单元之一中存储该第一数字数据值;
ⅲ)增加影子指针值以便提供一个递增影子指针值,该递增影子指针指向存储器存储电路中该组存储器存储单元中的下一个;
ⅳ)将该递增影子指针值存储在影子寄存器中作为影子指针值;以及
ⅴ)重复步骤ⅱ)至ⅳ)以存取由屏蔽值所指示的存储器存储单元数中的每一个。
141、如权利要求140所述的方法,该方法还包括步骤:
接收一个第二数字数据值;
从影子寄存器中存取影子指针值,该影子指针值指示存储器存储电路中该组存储器存储单元中的下一连续的一个;
从屏蔽寄存器中存取屏蔽值;
在该组存储器存储单元中的下一连续的一个里存储该第二数字数据值;
增加影子指针值;
在由影子指针值所指示的该组存储器存储单元之一中存储该第二数字数据值;以及
在存储器存储电路中的该组存储器存储单元的第二部分里存储该第二数字数据值,该第二组存储器存储单元对应于由屏蔽值所指示的存储器存储单元数。
142、如权利要求139所述的方法,该方法还包括步骤:
接收一组数字数据值,该组数字数据值中的第一一个是第一数字数据值。
143、如权利要求142所述的方法,该方法还包括步骤:
从一计数寄存器(ICR136)中存取计数值,该计数值指示接收和存储该组数字数据值的存储器存储单元数;以及
接收与该计数值相对应的该组数字数据值。
144、如权利要求142所述的方法,该方法还包括步骤:
从一定时存储电路(ITR138)中存取一组定时值中的第一一个,该组定时值中的第一一个对应于一组升序时刻中的第一一个时刻;以及
在该组升序时刻中的第一一个时刻,从一外部集成电路(10.x或54.x)接收该第一数字数据值。
145、如权利要求144所述的方法,该方法还包括步骤:
从定时存储电路中存取该组定时值中的第二一个,该第二定时值对应于该组升序时刻中的第二一个时刻;以及
在该组升序时刻中的第二一个时刻,从外部集成电路接收一个该组数据值中的第二数字数据值。
146、如权利要求142所述的方法,该方法还包括步骤:
从输入定时寄存器中存取一个第一定时值,该第一定时值对应于一个第一时刻;以及
在第一时刻从外部集成电路接收该组数字数据值中的第一一个值。
147、如权利要求146所述的方法,该方法还包括步骤:
在一个第二时刻接收一个该组数字数据值中的第二一个值,该第二时刻是与第一时刻相连续的。
148、一种在数据处理机中拖延执行一条指令的方法,该方法包括步骤:
接收一条矢量指令;
解码该矢量指令以便提供一个第一组控制信号;
响应于该第一组控制信号的第二部分,存取一个第一存储电路(VPCR位4)中的第一启动值(Vt位110),该第一启动值用于在执行矢量指令期间有选择地启动一个第二存储电路(IDR18)的参与;
响应于第一组控制信号的第二部分,存取一个第三存储电路(VPCR位6)中的第一有效性值(Vid位114),该第一有效性值有选择地指示何时一个第一矢量值是无效的。
当第一启动值启动第二存储电路的参与而且第一有效性值指示第一矢量值无效时,认定一个拖延信号;
当该拖延信号被认定时,在数据处理机中延迟该矢量指令的执行;以及
当拖延信号未被认定时,在数据处理机中完成该矢量指令的执行。
149、如权利要求148所述的方法,该方法还包括步骤:
当该第一启动值启动第二存储电路(IDR18)的参与且当该第一有效性值指示该第一矢量值有效时,响应于第一组控制信号的第三部分,从第二存储电路(IDR18)中存取该第一矢量值。
150、如权利要求148所述的方法,其中一个外部数据源(10.x或54.x)与该拖延信号无关地向该第二存储电路提供一个有效矢量值。
151、如权利要求150所述的方法,该方法还包括步骤:
在第二存储电路中写入该有效矢量值;
修改第一有效性值以便指示该有效矢量值被写入;
当第一有效性值指明该有效矢量值被写入而且在执行矢量指令期间该启动值启动第二存储电路参与时,继续执行矢量指令;以及
将该矢量指令的结果存储在一个目的寄存器中。
152、如权利要求150所述的方法,其中当外部数据源向第二存储电路提供有效矢量值时,与该矢量值相对应的第一有效性值被修改以便指示,该矢量值有效。
153、如权利要求148所述的方法,其中当第一启动值(VT110)启动第二存储电路(IDR18)参与执行矢量指令时,一个第四存储器存储电路(矢量寄存器128之一)向该第二存储电路提供一个有效矢量值。
154、如权利要求153所述的方法,其中当该第一启动值启动第二存储电路参与执行该矢量指令时,响应于被写入第二存储电路中的有效矢量值的第一部分而修改该第一有效性值。
155、如权利要求149所述的方法,其中该第一矢量值是存储于第二存储电路中的矢量值的多个部分之一,该组矢量值中的每一个在第二存储电路中具有一个对应的存储器单元,该第一启动值是存储在第一存储电路中的一组启动值中的第一一8v,而第一有效性值是存储在第三存储电路中的一组有效性值中的第一一个。
156、如权利要求155所述的方法,该方法还包括步骤:
从第一存储电路中存取该组启动值的一部分,该组启动值中的每一个对应于该组矢量值之一;
从第三存储电路中存取该组有效性值的一部分,该组有效性值中的每一个对应于该组矢量值之一;
响应于第一组控制信号的第三部分,从第二存储电路中存取该组矢量值的一部分;以及
当至少该组启动值的部分之一启动第二存储电路的对应存储器单元的参与并且一个与该存储器存储电路的存储器单元对应的有效性值指示该组矢量值之一无效时,生成该拖延信号。
157、如权利要求148所述的方法,该方法还包括步骤:
当数据处理机被复位时否定该第一有效性值。
158、如权利要求148所述的方法,该方法还包括步骤:
接收一个寄存器清零指令;
解码该寄存器清零指令以便提供第二组控制信号;以及
响应于该第二组控制信号,否定该第一有效性值。
159、如权利要求148所述的方法,该方法还包括步骤:
接收一个寄存器读出指令;
解码该寄存器读出指令以便提供第三组控制信号;
响应于第三组控制信号的第一部分,从第二存储电路中读出该第一矢量值;以及
在从第一存储电路中读出该第一矢量值之后否定该第一有效性值。
160、如权利要求148所述的方法,该方法还包括步骤:
接收一条指令;
解码该指令以便提供第四组控制信号;
响应于该第四组控制信号的第一部分,存取第三存储电路中的一个第二有效性值,第一有效性值有选择地指示何时标量值无效;
当第一有效性值指示标量值有效时,响应于第四组控制信号的第二部分,从第二存储电路中存取一个第一标量值;
当第二有效性指示标量值无效时,存取拖延信号;
当拖延信号被认定时,迟延该指令在数据处理机中的执行;以及
当拖延信号未被认定时,完成执行该指令。
161、如权利要求160所述的方法,其中一个外部数据源(10.x或54.x)与该拖延信号无关地向第二存储电路提供一个有效标量值。
162、如权利要求161所述的方法,该方法还包括步骤:
在第二存储电路中写入该有效标量值;
修改该第二有效性值以便指示该有效标量值被写入;
当第二有效性值指示该标量值被写入时,继续执行指令;以及
将该指令的结果存储在目的寄存器中。
163、如权利要求161所述的方法,其中当外部数据源向第二存储电路提供有效标量值时,修改与该标量值相对应的第二有效性值,以便指示该标量值有效。
164、一种数据处理处理机,它包括:
用来接收一矢量指令的接口装置(总线13或总线27);
用来解码该矢量指令以便提供第一组控制值的指令解码装置(19),该指令译码装置耦合于用来接收矢量指令的接口装置;
用来存储一个第一矢量值的第一存储器存储电路(IDR18),响应于第一组控制值的第一部分来存取该第一矢量值,第一存储器存储电路耦合于用来接收该组控制值的第一部分的指令解码装置;
用来存储一个第一启动值的第二存储器存储电路(Vt位110),响应于第一组控制值的第二部分来存取该第一启动值,第二存储器存储电路耦合于用来接收该组控制值的第二部分的指令解码装置;
用来存储一个第一有效性值的第三存储器存储电路(Vid位114),响应于第一组控制值的第三部分来存取第一有效性值,第三存储器存储电路耦合于用来接收该组控制值的第三部分的指令解码装置;
用来响应于第一启动值和第一有效性值生成一个或为第一或为第二逻辑状态的拖延信号的逻辑装置(116);以及
用来响应于该拖延信号的逻辑状态而有选择地拖延矢量指令的执行的执行装置(39)。
165、如权利要求164所述的数据处理机,其中第一启动值指示何时第一存储器存储电路被启动用于矢量指令的执行。
166、如权利要求164所述的数据处理机,其中第一有效性值指示何时第一矢量值是个有效数据值。
167、如权利要求164所述的数据处理机,其中当启动值指示第一存储电路被启动且当第一有效性值指示第一矢量值是无效数据值时,逻辑装置认定该拖延信号。
168、如权利要求164所述的数据处理机,它还包括:
一个用来从外部数据源接收一有效矢量值的输入电路(四个端口28、30、32或34之一),外部数据源(10.或54.x)与该拖延信号无关地提供该有效矢量值。
169、如权利要求168所述的数据处理机,其中该有效矢量值被写入第一存储器存储电路。
170、如权利要求169所述的数据处理机,它还包括:
当该有效矢量值被写入第一存储器存储电路时用来修改该第一有效性值的修改装置。
171、一种数据处理机,它包括:
用来接收一指令的接口装置(总线13和总线27);
用来解码该指令以便提供一组控制信号的指令解码装置(解码器19),该组控制信号的第一部分指示该指令是一个矢量指令还是一个使用一标量值的指令,该指令解码装置耦合于用来接收指令的接口装置;
一个带有用来存储一组数字数据值的一组存储单元的第一存储器存储电路(IDR18),该组数字数据值中的第一个或是一标量值或者是一矢量值的一部分;
一个用来存储一组启动值的第二存储器存储电路(多个PE120中的Vt位110),该组启动值中的每一个对应于第一存储器存储电路中的该组存储单元中预定的一个,该组启动值中的每一个指示何时该组存储单元中对应的一个被启动;
一个用来存储一组有效性值的第三存储器存储电路(多个PE16中的Vit位114),该组有效性值中的每一个对应于该组数字数据值中预定的一个,该组有效性值中的每一个指示何时该组数字数据值中对应的一个有效;
用来生成一标量拖延信号(122)和一矢量拖延信号(124)之一的逻辑装置(116),当着:
ⅰ)该组控制信号的第一部分指示该指令使用标量值时;
ⅱ)标量值位于第一存储器存储电路中时;以及
ⅲ)与该标量值对应的有效性值指示该标量值为无效的时
该逻辑装置认定一个标量拖延信号;而当着;
ⅳ)该组控制信号的第一部分指示该指令使用一矢量值时;
ⅴ)一矢量值的一部分位于第一存储器存储电路中预定的存储单元里时;
ⅵ)一个与预定的存储单元对应的启动值指示该预定的存储单元被启动时;以及
ⅶ)一个与该预定的存储单元对应的有效性值指示存储在该预定的存储单元里的矢量值的部分是无效的时;逻辑装置认定一个矢量拖延信号;
用来当该标量拖延信号和该矢量拖延信号之一被认定时拖延执行该指令的拖延装置(39);以及
用来当标量拖延信号和矢量拖延信号两者皆被否定时执行该指令的执行装置(21或22)。
172、如权利要求171所述的数据处理机,它还包括:
一个用来从外部数据源接收有效数字数据值的输入电路(四个端口28、30、32或34之一),该输入电路耦合于第一存储器存储电路,用来提供有效数字数据值。
173、如权利要求172所述的数据处理器,其中有效数字数据值被写入第一存储器存储电路。
174、如权利要求173所述的数据处理机,它还包括:
用来当有效数字数据被写入时,修改与无效的数字数据值对应的有效性值的修改装置(118)。
175、如权利要求172所述的数据处理机,其中外部数据源(10.x或54.x)与该标量拖延信号无关地提供一有效标量值,而且外部数据源与该矢量拖延信号无关地提供一有效矢量值。
176、一种数据处理机(10),它包括:
用来存储一比较指令的存储装置(指令高速缓冲存储器20,ROM);
一个用来解码该比较指令以便提供一组控制信号(23)的指令解码电路(19),该指令解码电路与用来接收比较指令的存储装置相耦合;
用来响应于该组控制信号来控制该比较指令的执行的指令执行装置(控制电路21),该指令执行装置与用来接收该组控制信号的指令解码电路相耦合;
一组被启动的处理部件(PE16),其中该组被启动处理部件中的每一个存储一个数据值,该组被启动处理部件中的每一个耦合于该指令执行装置,该指令执行装置选择该组被启动处理部件中的每一个,以便在执行比较指令期间输出一个存储于其中的数据值的第一部分;以及
一个与该组被启动处理部件中的每一个相连接以便接收存储于其中的数据值的第一部分的比较导体(158),该比较导体响应于该比较指令的执行而执行比较操作;当由至少该组被启动处理部件之一所提供的数据值的第一部分处于第一逻辑状态时,该比较导体处于一个第一逻辑状态,当由该组被启动处理部件中的每一个所提供的数据值的第一部分处于第二逻辑状态时,比较导体处于一个第二逻辑状态。
177、如权利要求176所述的数据处理机,其中存储在该组被启动处理部件的每个里的数据值有一预定的位宽度n,这里n是正整数。
178、如权利要求177所述的数据处理机,其中数据值的第一部分是数据值的最高有效位。
179、如权利要求176所述的数据处理机,它还包括:
一个用来存储一组启动值的第一存储电路(VT位110),该组启动值中的每一个对应于该组被启动处理部件之一。
180、如权利要求177所述的数据处理机,它还包括:
一个用来响应于比较导体的第一和第二逻辑状态之一而修改该组启动值的一部分的修改电路(118)。
181、如权利要求180所述的数据处理机,其中当该组启动值中的对应的一个被认定时,该组被启动处理部件之一被启动,以便向该比较导体提供存储于其中的数据值。
182、如权利要求180所述的处理机,其中当该组启动值中的对应的一个被否定时,该组被启动处理部件之一被禁止参与比较指令的执行。
183、如权利要求180所述的数据处理机,其中该组启动值有选择地启动该组被启动处理部件,以便向该比较导体提供该第一数字数据值。
184、如权利要求183所述的数据处理机,其中修改电路:
当比较导体处于第一逻辑状态而且由与该组启动值之一对应的该组被启动处理部件之一所提供的数据值的第一部分处于第一逻辑状态时,保留该组启动值之一不被修改;而且
当比较导体处于第二逻辑状态而且由与该组启动值之一相对应的该组被启动部件之一所提供的数据值的第一部分处于第二逻辑状态时,保留该组启动值之一不被修改。
185、如权利要求183所述的数据处理机,其中当比较导体处于第一逻辑状态而且由与该组启动值之一相对应的该组被启动处理部件之一所提供的数据值的第一部分处于第二逻辑状态时,修改电路修改该组启动值之一。
186、如权利要求176所述的数据处理机,其中比较指令确定具有数据值的第一部分中的最大值的该组处理部件的第一部分。
187、如权利要求176所述的数据处理机,其中该组被启动处理部件中的每一个还包括:
一个用来求补数据值的第一部分以便向比较导体提供一个第一补码数据值的逻辑电路(117)。
188、如权利要求187所述的数据处理机,其中比较指令确定具有数据值的第一部分中的最小值的该组被启动处理部件的第一部分。
189、如权利要求187所述的数据处理机,其中数据值的第一部分是一个符号位。
190、如权利要求176所述的数据处理机,它还包括一个用来存储控制值的控制存储电路,该控制值指示比较指令使用带符号操作数还是不带符号操作数的一种,该控制存储电路耦合于指令执行装置。
191、如权利要求176所述的数据处理机,它还包括:
一个耦合于该比较导体的开关电路(170,或164);以及
一个耦合于该开关电路的第一集成电路引脚(82或84),该开关电路有选择地把第一集成电路引脚耦合于比较导体。
192、如权利要求191所述的数据处理机,其中开关电路响应于比较指令有选择地把第一集成电路引脚耦合于比较导体。
193、如权利要求192所述的数据处理机,其中第一集成电路引脚耦合于一个外部数据处理机的一个第一外部集成电路引脚,当开关电路有选择地把第一集成电路引脚耦合于比较导体时,第一集成电路引脚把比较导体耦合于该第一外部集成电路引脚。
194、如权利要求193所述的数据处理机(10.72),其中当数据处理机处于一种第一操作方式时,该第一集成电路引脚(82)传送控制信息,而当数据处理机处于一种第二操作方式时,第一集成电路引脚有选择地耦合于比较电路(58)。
195、如权利要求191所述的数据处理机,它还包括一个第二集成电路引脚,该第二集成电路引脚耦合于该开关电路。
196、一种在数据处理机中比较一组数据值的方法,该方法包括步骤:
接收一条比较指令(locmax、colmax、rowmax、locmin、colmin、rowmin);
解码该比较指令以便提供一组控制信号;
确定一组处理部件(16)中的哪个(些)被启动,该组处理部件的被启动部分的每个处理部件(其Vt位110被肯定的PE16)向比较线(158)提供存储在其中的数据值的一个第一部分;
当该组处理部件的启动部分的至少一个以第一逻辑状态(逻辑1)提供存储在其中的数据值的第一部分时,以第一逻辑状态提供比较值;
当该组处理部件的每一个被启动部分以第二逻辑状态(逻辑0)提供存储在其中的数据值的第一部分时,以第二逻辑状态提供比较线;以及
响应于比较线的逻辑状状态,有选择地修改一组启动位(Vt位110),该组启动位中的每一个对应于该组处理部件的启动部分之一。
197、如权利要求196所述的方法,其中该组启动值中的每一个有选择地启动该组处理部件的被启动部分中对应的一个,以便提供存储在其中的数字数据值。
198、如权利要求196所述的方法,该方法还包括步骤:
当由该组处理部件的被启动部分对应的一个所提供的数据值的第一部分处于与比较线不同的逻辑状态时,否定该组启动位之一。
199、如权利要求198所述的方法,该方法还包括步骤:
当由该组处理部件的被启动部分对应的一个所提供的数据值的第一部分处于与比较线相同的逻辑状态时,保证该组启动位之一仍然保留于被认定状态。
200、如权利要求198所述的方法,该方法还包括步骤:
存取存储在该组处理部件的每一个被启动部分中的数据值的第二部分,该组处理部件的启动部分的每一个具有一个被认定的该组启动值中对应的一个;
由该组处理部件的启动部分的每一个向比较线提供数据值输出的第二部分;
当该组处理部件的被启动部分的至少一个以第一逻辑状态提供存储在其中的数据值的第二部分时,以第一逻辑状态提供比较线;
当该组处理部件的每一个被启动部分以第二逻辑状态提供存储在其中的数据值的第二部分时,以第二逻辑状态提供比较线;以及
当数据值的第二部分处于与比较线不同的逻辑状态时,否定该组启动位之一。
201、如权利要求196所述的方法,其中存储在该组处理部件的每一个中的该组数据值中的每一个都有一组n位(例如8位),这里n是正整数。
202、如权利要求201所述的方法,其中该组数据值中每一个的第一部分是数据值的最高有效位。
203、如权利要求202所述的方法,该方法还包括步骤:
ⅰ)存取存储在该组处理部件的每一个被启动部分中的数据值的该组位中的下一个,该组处理部件的每一个启动部分有一个被认定的该组启动值中对应的一个;
ⅱ)由该组处理部件的每一个被启动部分向比较线提供数据值输出的该组位中的下一个;
ⅲ)当该组处理部件被启动部分的至少一个以第一逻辑状态提供存储在其中的数据值的该组位中的下一个时,以第一逻辑状态提供比较线;
ⅳ)当该组处理部件每一个被启动部分以第二逻辑状态提供存储在其中的数据值的该组位中的下一个时,以第二逻辑状态提供比较线;
ⅴ)当数据值的该组位中的下一个处于与比较线不同的逻辑状态时,否定该组启动值之一;以及
ⅵ)以预定的重复次数重复步骤ⅰ)至步骤v)。
204、如权利要求203所述的方法,其中预定的重复次数等于(n-1)值。
205、如权利要求203所述的方法,其中预定的重复次数小于(n-1)值。
206、如权利要求203所述的方法,其中预定的重复次数在比较指令中规定。
207、如权利要求203所述的方法,其中比较指令确定存储一个有最大值的不带符号数据值的该组处理部件的第一部分。
208、如权利要求203所述的方法,该方法还包括步骤:
在向比较线提供数据值的最高有效位之前,反转由该组处理部件的每一个所提供的数据值的最高有效位。
209、如权利要求208所述的方法,其中比较指令确定存储一个具有最大值的二进制补码带符号数据值的该组处理元件中的处理元件第二部分。
210、如权利要求203所述的方法,该方法还包括步骤:
在向比较线提供该组位中的每一个之前,反转由该组处理部件的每一个所提供的该组数据位中的每一个。
211、如权利要求210所述的方法,其中比较指令确定存储一个具有最小值的无符号数据值的该组处理部件中的处理部件第三部分。
212、如权利要求203所述的方法,该方法还包括步骤:
在向比较线提供该组位的一部分之前,反转由该组处理元件的每一个所提供的数据值的该组位的该部分,该组位的该部分不包括数据值的最高有效位。
213、如权利要求212所述的方法,其中比较指令确定存储一个具有最小值的二进制补码带符号数据值的该组处理元件中的处理元件第四部分。
214、一种数据处理系统(57.3),它包括:
一组布置在一个阵列中的多个数据处理机(10.72至10.80),多个数据处理器中的每一个包括:
用来存储比较指令的存储装置(20);
一个用来解码比较指令以便提供一组控制信号的指令解码电路(19),该指令解电路耦合于存储装置,用以接收比较指令;
用来响应于该组控制信号而控制比较指令的执行的指令执行装置(控制电路21),该指令执行装置耦合于指令译码电路,用以接收该组控制信号;
一组被启动的处理部件(Vt位110被肯定的PE),其中该组被启动的处理部件中的每一个存储一个数据值,该组被启动的处理部件中的每一个耦合于指令执行装置,在比较指令的执行期间,指令执行装置选择该组启动的处理元件以便输出存储在其中的数据值的第一位;
一个与该组被启动的处理部件中的每一个相连接的,用来接收存储在其中的数据值的第一位的比较导体(158),该比较导体响应于比较指令的执行而完成比较操作,当由该组被启动的处理元件的至少一个所提供的数据值的第一位处于第一逻辑状态时,该比较导体处于第一逻辑状态;当由该组被启动的处理部件的每一个所提供的数据值的第一位处于第二逻辑状态时,该比较导体处于第二逻辑状态;以及
多个数据处理机中的每一个有选择地耦合于一个邻接的数据处理机以便进行信息通信,多个数据处理机中第一一个的比较导体与多个数据处理机中第二一个的比较导体相耦合。
215、如权利要求214所述的数据处理系统,其中该阵列包括至少一行和至少一列。
216、如权利要求215所述的数据处理系统,其中所述多个数据处理机中的第一一个处于阵列中与多个数据处理机中的第二一个所处的同一行里。
217、如权利要求215所述的数据处理系统,其中多个数据处理机中的第一一个处于阵列中与多个数据处理机中的第二一个所处的同一列里。
218、如权利要求214所述的数据处理系统,它还包括:
一个用来存储一组启动值的第一存储电路,该组启动值中的每一个对应于该组被启动的处理元件之一。
219、如权利要求218所述的数据处理系统,它还包括:
一个用来响应于比较导体的第一和第二逻辑状态之一有选择地修改该组启动值中的每一个的修改电路(118)。
220、如权利要求219所述的数据处理系统,其中当该组启动值中对应的一个被认定时,该组被启动的处理部件中的每一个参与比较指令的执行。
221、如权利要求219所述的数据处理系统,其中当该组启动值中对应的一个被否定时,该组被启动的处理部件之一被禁止参与比较指令的执行。
222、如权利要求219所述的数据处理系统,其中当比较导体处于第一逻辑状态而且由对应于该组启动值之一的该组被启动处理部件之一所提供的数据值的第一位处于第二逻辑状态时,修改电路否定该组启动值之一。
223、如权利要求219所述的数据处理系统,其中比较指令确定在数据值的第一位有最大值的多个数据处理机的每一个被启动部分中该组被启动处理部件的第一部分。
224、如权利要求219所述的数据处理系统,其中该组被启动的处理部件中的每一个还包括:
一个用来有选择地对至少数据值的一部分进行求补以便向比较导体提供第一补码数据值的逻辑电路(117)。
225、如权利要求224所述的数据处理系统,其中数据值的该部分是数据值的最高有效位。
226、如权利要求214所述的数据处理系统,其中数据处理机的每一个还包括:
一个耦合于比较导体的开关电路(170);以及
一个耦合于该开关电路的集成电路引脚(82或84),开关电路有选择地把集成电路引脚耦合于比较导体。
227、如权利要求226所述的数据处理系统,其中开关电路响应于全局比较指令(colmax、rowmax、colmin、rowmin)有选择地把集成电路引脚耦合于比较导体。
228、如权利要求227所述的数据处理系统,其中多个数据处理机中第一一个的第一集成电路引脚耦合于多个数据处理机中第二一个的第二集成电路引脚,当开关电路有选择地把第一集成电路引脚耦合于比较导体时,第一集成电路引脚把比较导体耦合于第二集成电路引脚。
229、如权利要求228所述的数据处理系统,其中当多个数据处理机中的第一一个处于第一操作方式时,第一集成电路引脚传送控制信息,而当多个数据处理机中的第一一个处于第二操作方式时,第一集成电路引脚有选择地耦合于比较导体。
230、一种在数据处理机中执行指令的方法,该方法包括步骤:
接收该指令;
解码该指令以提供一组控制信号;
从第一存储单元中存取一个第一数字数据值(操作数1,vreg1和vregs,vreg2(目的地));
从第二存储单元中存取一个第二数字数据值(操作数2,vregs和vregs,vregl(操作数));
比较该第二数字数据值和第一数字数据值以便确定并选择一个较大值和一个较小值之一(min,minp,max,maxp);以及
在目的存储电路中存储该较大值和较小值之一。
231、如权利要求230所述的方法,其中比较步骤还包括步骤:
从该第一数字数据值中减去该第二数字数据值以便生成一个减算结果;
如果减算结果是个负值则认定一个借位值;以及
如果减算结果是个正值则否定该借位值。
232、如权利要求231所述的方法,其中响应于指令的执行,比较该第二数字数据值和第一数字数据值,以便确定并选择较小值。
233、如权利要求232所述的方法,该方法还包括步骤:
当该借位值被否定时,在目的存储电路中存储该第二数字数据值。
234、如权利要求233所述的方法,其中目的存储电路是第一存储单元。
235、如权利要求231所述的方法,其中响应于指令的执行,比较该第二数字数据值和第一数字数据值,以便确定并选择较大值。
236、如权利要求235所述的方法,该方法还包括步骤:
当该位值被认定时,在目的存储电路中存储该第二数字数据值。
237、如权利要求230所述的方法,其中第一数字数据值和第二数字数据值两者都是带符号数据值和无符号数据值之一。
238、如权利要求230所述的方法,其中该第一数字数据值是一第一标量值而该第二数字数据值是一第二标量值(min,max)。
239、如权利要求230所述的方法,其中该第一数字数据值是一第一矢量值的一部分而该第二数字数据值是一第二矢量值的一个对应的部分。
240、如权利要求231所述的方法,该方法还包括步骤:
从存储单元中存取一第一扩充位和一第二扩充位,第一扩充位和第二扩充位指示在接收指令之前所执行的数据处理操作的前一结果;
使用该第一扩充位和第二扩充位以便有选择地启动比较装置来执行比较步骤;以及
响应于比较步骤的结果有选择地修改该第一扩充位和该第二扩充位。
241、如权利要求240所述的方法,其中该第一扩充位和第二扩充位集合地代表数据处理机的一组状态情况,其中:
该第一扩充位和第二扩充位在一第一状态中处于缺省状态(%00);
当该第一扩充位和第二扩充位处于第二状态时,该第一扩充位和第二扩充位表示该第二数字数据值小于该第一数字数据值(%01);
当该第一扩充位和第二扩充位处于一第三状态时,该第一扩充位和第二扩充位表示该第二数字数据值大于该第一数字数据值($10);以及
当该第一扩充位和第二扩充位处于一第四状态时,该第一扩充位和第二扩充位表示该第二数字数据值等于该第一数字数据值(%11)。
242、如权利要求241所述的方法,该方法还包括步骤:
当该第一扩充位和第二扩充位处于第一状态和第四状态之一时,启动比较装置来执行比较步骤。
243、如权利要求241所述的方法,其中当该第一扩充位和第二扩充位处于第一状态时,第一扩充位和第二扩充位表示该第一数字数据值是一第一多字节数据值的最高有效字节而第二数字数据值是一第二多字节数据值的最高有效字节。
244、如权利要求241所述的方法,其中当该第一扩充位和第二扩充位处于第四状态时,第一扩充位和第二扩充位表示响应于一个比较两个相等的数据值的前一指令而执行数据处理操作。
245、如权利要求241所述的方法,其中令是前级指令和非前级指令之一,该前级指令修改该第一扩充位和第二扩充位两者,以便反映比较步骤的结果,非前级指令修改处于缺状态的第一扩充位和第二扩充位。
246、如权利要求245所述的方法,该方法还包括步骤:
当该第一扩充位和第二扩充位处于第二状态时,否定该第一扩充位而认定该第二扩充位;
当该第一扩充位和第二扩充位处于第三状态时,认定该第一扩充位而否定该第二扩充位;以及
当该第一扩充位和第二扩充位处于第四状态时,认定第一扩充位和第二扩充位两者。
247、一种数据处理器(10),它包括:
一个用来存储指令的指令存储电路(20);
一个用来解码该指令以便提供一组控制信号的解码器(19),该解码器耦合于指令存储电路用以接收指令;
一个用来存储一第一数字数据值的第一存储电路(vreg2或sreg,V[0-7]寄存器128或G[0-7]寄存器302);
一个用来存储一第二数字数据值的第二存储电路(vreg1或sreg);
用来比较第一数字数据值和第二数字数据值的比较装置(ALU119或ALU304),该比较装置具有一个耦合于该第一存储电路而用来接收第一数字数据值的第一输入端,该比较装置具有一个用来接收第二数字数据值的第二输入端,该比较装置具有一个用来提供指示第一数字数据值和第二数字数据值中的哪一个是较大值和较小值之一的结果的输出端;以及
用来当第二数字数据值是较大值和较小值之一时,有选择地向第一存储电路提供第二数字数据值的选择装置(控制电路115或控制308),该选择装置耦合于第一存储电路和第二存储电路。
248、如权利要求247所述的数据处理机,其中比较装置从第一数字数据值中减去第二数字数据值以便生成结果。
249、如权利要求247所述的数据处理机,其中数据处理机处于一组状态中的一种状态,其中该组状态包括:
一个第一状态,用以表明数据处理机处于缺省状态;
一个第二状态,用以表明第二数字数据值小于第一数字数据值;
一个第三状态,用以表明第二数字数据值大于第一数字数据值;
一个第四状态,用以表明第二数字数据值等于第一数字数据值。
250、如权利要求247所述的数据处理机,其中当指令确定第一数字数据值和第二数字数据值中哪一个是较大值而且数据处理机处于第三状态时,选择装置向第一存储电路提供第二数字数据值。
251、如权利要求247所述的数据处理机,其中当指令确定第一数字数据值和第二数字数据值中哪一个是较小值而且数据处理机处于第二状态时,选择装置向第一存储电路提供第二数字数据值。
252、如权利要求247所述的数据处理机,它还包括:
一个用来存储第一扩充位和第二扩充位两者的第一控制寄存器(VPCR102或SPCR208),第一和第二扩充位用来指示在指令执行之前数据处理机的状态。
253、如权利要求252所述的数据处理机,其中当数据处理机处于第一状态时,第一扩充位和第二扩充位指示该第一数字数据值是一第一多字节数据值的最高有效字节而第二数字数据值是一第二多字节数据值的最高有效字节。
254、如权利要求252所述的数据处理机,其中当第一扩充位和第二扩充位处于第四状态时,第一扩充位和第二扩充位指示响应于比较两个相等的数据值的一个先前指令而执行数据处理操作。
255、如权利要求252所述的数据处理机,它还包括:
一个耦合于用来接收结果及一个与该结果相对应的借位值的比较装置的修改电路(118或306),该修改电路耦合于用来接收第一扩充位和第二扩充位的第一控制寄存器,该修改电路有选择地修改第一扩充位和第二扩充位。
256、如权利要求255所述的数据处理器,其中指令是一前级指令和非前级指令之一,前级指令修改第一扩充位和第二扩充位两者以便反映比较步骤的结果,非前级指令修改第一扩充位和第二扩充位,以使数据处理机处于缺省态。
257、如权利要求256所述的数据处理机,其中在执行非前级指令期间,第一数字数据值是第一多字节值的一个最低有效字节而第二数字数据值是第二多字节值的一个最低有效字节。
258、如权利要求256所述的数据处理机,其中当数据处理机处于第二状态时,第一扩充位被否定而第二扩充位被认定。
259、如权利要求256所述的数据处理机,其中当数据处理机处于第三状态时,第一扩充位被认定而第二扩充位被否定。
260、如权利要求256所述的数据处理机,其中当数据处理机处于第四状态时,第一扩充位和第二扩充位二者都被认定。
261、如权利要求247所述的数据处理机,它还包括一个用来存储一个符号控制值(SSGN位174或VSGN位176)的控制寄存器(ACR172),当第一数字数据值和第二数字数据值各代表一个带符号数据值时该符号控制值处于一第一逻辑状态,当第一数字数据值和第二数字数据值各代表一个不带符号数据值时该符号控制值处于第二逻辑状态。
262、一种数据处理器(10),它包括:
一个用来存储数据处理指令的指令存储电路(20);
一个用来响应于数据处理指令而执行数据处理操作的指令执行装置(22),该指令执行装置耦合于指令存储电路用以接收数据和理指令;
用来存储一组扩充值的存储装置,该组扩充值中的每一个用于执行数据处理操作期间,该存储装置耦合于该指令执行装置用以对该组扩充值中的每一个进行通信;以及
用来在执行数据处理指令期间有条件地修改该组扩充值中的每一个的修改装置(118(矢量)或306(标量)),该修改装置耦合于该存储装置,用以对该组扩充值中的每一个进行通信,这些扩充值响应于数据处理指令而被有条件地修改。
263、如权利要求262所述的数据处理机,其中该组扩充值包括:
一个用来指示状态信息值的第一扩充位(VX0104或SX0210);以及
一个用来指示与数据处理指令的源操作数相对应的符号值的第二扩充位(VX105或SX1212)。
264、如权利要求263所述的数据处理机,其中数据处理指令是前级指令和非前级指令之一,
前级指令响应于数据处理指令的结果而修改该组扩充值中的每一个;以及
非前级指令修改处于缺省状态的该组扩充值中的每一个。
265、如权利要求264所述的数据处理机,其中非前级指令是个饱和指令而前级指令是个非饱和指令,其中:
当与结果对应的溢出值(VV位106或SV位214)处于认定状态而数据处理指令是非前级指令时(饱和指令),用一上界和一下界之一取代数据处理操作的结果;以及
当与结果对应的溢出值处于认定状态而数据处理指令是前级指令时(非饱和指令),数据处理操作的结果不被代替。
266、如权利要求263所述的数据处理机,其中当数据处理指令是非前级指令时(add,vadd,sub,vsub,inc,dec),第一扩充位和第二扩充位被否定。
267、如权利要求263所述的数据处理机,其中当数据处理指令是前级指令(addp,vaddp,subp,vsubp,incp,decp)时,响应于数据处理指令的执行,第一扩充位和第二扩充位被修改。
268、如权利要求263所述的数据处理机,其中数据处理操作是加法操作和减法操作之一(add,addp,vadd,vaddp,sub,subp,vsub,vsubp,addsx,addsxp,subsx,subsxp)。
269、如权利要求268所述的数据处理机,其中当数据处理操作是加法操作时第一扩充位是一进位值,而当数据处理操作是减法操作时第一扩充位是一借位值。
270、如权利要求263所述的数据处理机,其中数据处理指令生成源操作数,该源操作数基于第二扩充位。
271、如权利要求263所述的数据处理机,其中数据处理操作是一增量操作和一减量操作之一(inc,incp,dec,decp)。
272、如权利要求271所述的数据处理机,其中当数据处理操作是增量操作时,该第一扩充位是一进位值,而当数据处理操作是一减量操作时第一扩充位是一借位值。
273、如权利要求271所述的数据处理机,其中在增量操作和减量操作两者的执行期间都不使用第二扩充位。
274、如权利要求262所述的数据处理机,其中数据处理指令有个目的操作数和一个源操作数,指令执行装置响应于数据处理指令把目的操作数与源操作数进行比较。
275、如权利要求274所述的数据处理机,其中该组扩充值被有选择地修改以便指示在数据处理操作的执行期间所用的目的操作数和源操作数之间的一种比较关系。
276、如权利要求275所述的数据处理机,其中该组扩充位指示下列条件之一:
ⅰ)目的操作数大于源操作数;
ⅱ)目的操作数小于源操作数;以及
ⅲ)目的操作数等于源操作数。
277、如权利要求276所述的数据处理机,其中在数据处理操作的执行期间该组扩充位被置于一缺省状态。
278、如权利要求262所述的数据处理机,其中数据处理指令启动指令执行装置以便利用数据处理指令的一个源操作数执行一左移操作(vlshft)。
279、如权利要求278所述的数据处理机,其中该组扩充值中的第一一个被移位到源操作数的一个最低有效位。
280、如权利要求262所述的数据处理机,其中数据处理指令启动指令执行装置,以便利用数据处理指令的一个源操作数执行一右移操作(vrshft,vrshftp)。
281、如权利要求280所述的数据处理机,其中该组扩充值包括:
一个用来指示一移位数据值的第一扩充位(VX0位104或SX0位210);以及
一个用来指示一源操作数的第一字节的第二扩充位(VX1位105或SX1位212)。
282、如权利要求281所述的数据处理机,其中当第二扩充位被认定(VX1=1)时,该源操作数的前一有效字节的最低有效位作为移位数据值被移位并且被存储到该第一扩充位中。
283、如权利要求281所述的数据处理机,其中当第二扩充位被否定(VX1=0)时,一个符号值被移位到源操作数一个第一字节的最高有效位之中。
284、如权利要求262所述的数据处理机,其中数据处理指令启动指令执行装置以便执行否定操作(vneg,vnegp)。
285、如权利要求284所述的数据处理机,其中该组扩充位中的第一一个(VX0位104或SX0位210)指示在否定操作的执行期间何时产生一借位(vengep)。
286、如权利要求284所述的数据处理机,其中在否定操作的执行期间该组扩充位被置于缺省状态(vnegp)。
287、一种在数据处理机中执行算术指令的方法,该方法包括步骤:
接收具有一源操作数和一目的操作数的算术指令;
解码该算术指令以提供一组控制信号;
从一第一存储单元中存取一第一扩充位,该第一扩充位提供一状态信息值;
从一第二存储单元中存取一第二扩充位,该第二扩充位提供与算术指令的源操作数对应的一个符号值;
响应于该组控制信号而执行一算术操作,该第一扩充位和第二扩充位两者都用于算术操作的执行期间以便提供一结果;
有选择地修改第一扩充位,以便存储一个与该结果对应的修改的状态信息;以及
有选择地修改第二扩充位,以便存储一个与该结果对应的修改的符号值。
288、如权利要求287所述的方法,其中算术操作是一前级加法操作和一非前级加法操作之一,前级加法操作修改第一扩充位和第二扩充位两者以便反映该结果,非前级加法操作把第一扩充位和第二扩充位两者置于缺省状态(add,addp,vadd,vaddp,vaddsx,vaddsxp)。
289、如权利R扒s288所述的方法,其中第一扩充位是一进位值。
290、如权利要求288所述的方法,其中前级加法操作是一种非饱和加法操作而非前级加法操作是一种饱和加法操作,其中:
当与结果对应的溢出值(VV位106或SV位214)处于被认定状态而且数据处理指令是非前级加法指令时,用上界和下界之一取代数据处理操作的结果;以及
当与结果对应的溢出值处于被认定状态而且数据处理指令是前级加法指令时,数据处理操作的结果不被取代。
291、如权利要求289所述的方法,该方法还包括步骤:
使用第二扩充位生成该源操作数;
使源操作数与目的操作数相加以便生成结果;
当算术操作是前级加法操作时,修改第一扩充位以便指示该结果是否修改了进位值;以及
当算术操作是非前级加法操作时,把第一扩充位和第二扩充位两者置于缺省状态。
292、如权利要求291所述的方法,其中当源操作数的位宽度是一第一数据值的一部分,而第一数据值的位宽度小于目的操作数的一部分的位宽度时,使用第二扩充位来生成源操作数。
293、如权利要求287所述的方法,其中算术操作是一前级减法操作和一非前级减法操作之一,前级减法操作修改第一扩充位和第二扩充位两者以便反映该结果,非前级减法操作把第一扩充位和第二扩充位两者置于缺省状态(sub,subp,vsup,vsubp,vsubsx,vsubsxp)。
294、如权利要求293所述的方法,其中第一扩充位是一借位值。
295、如权利要求294所述的方法,该方法还包括步骤:
使用第二扩充位生成源操作数;
从目的操作数中减去源操作数以便生成结果;
当算术操作是前级减法操作时,修改第一扩充位以便指示结果是否修改了该借位值;以及
当算术操作是非前级减法操作时,把第一扩充位和第二扩充位两者置于缺省状态。
296、一种在数据处理机中执行比较指令的方法,该方法包括步骤:
接收具有一源操作数和一目的操作数的比较指令;
解码该比较指令以便提供第一组控制信号;
从一第一存储单元中存取一第一扩充位并从一第二存储单元中存取一第二扩充位;
响应于第一组控制信号把源操作数与目的操作数进行比较,第一扩充位和第二扩充位两者都被有选择地用于比较操作的执行期间以便提供一个结果;以及
有选择地修改第一扩充位和第二扩充位,以便指示把源操作数与目的操作数进行比较步骤的一个当前结果。
297、如权利要求296所述的方法,其中有选择地修改第一扩充位和第二扩充位,以便指示在比较指令的执行期间使用的目的操作数和源操作数之间的一种比较关系。
298、如权利要求297所述的方法,该方法还包括步骤:
接收一条件指令(vif);
解码该条件指令以便提供第二组控制信号;以及
响应于该条件指令而执行一比较操作,该比较操作使用第一扩充位和第二扩充位以便提供一个条件结果。
299、如权利要求297所述的方法,其中比较指令是一前级比较指令和一非前级比较指令之一,前级比较指令有选择地修改第一扩充位和第二扩充位两者,以便反映结果;非前级比较指令把第一扩充位和第二扩充位两者置于缺省状态(min,minp,max,maxp)。
300、如权利要求297所述的方法,其中有选择地修改第一和第二扩充位以便指示下列条件之一:
ⅰ)目的操作数大于源操作数;
ⅱ)目的操作数小于源操作数;以及
ⅲ)目的操作数等于源操作数。
301、如权利要求297所述的方法,其中在把源操作数与目的操作数进行比较的步骤之后第一和第二扩充位都被置于缺省状态。
302、一种在数据处理机中执行移位指令的方法,该方法包括步骤:
接收具有一源操作数的移位指令;
解码该移位指令以便提供一组控制信号;
从一第一存储单元中存取一第一扩充位并从一第二存储单元中存取一第二扩充位;
把移位值移位到源操作数的第一位之中以便生成一被移位数据值,该移位值响应于第一扩充位和第二扩充位两者而得以确定;以及
响应于移位指令的执行有选择地修改第一扩充位以便提供一修改的第一扩充位。
303、如权利要求302所述的方法,其中移位值是第一扩充位(vlshft,vrshft)。
304、如权利要求303所述的方法,其中源操作数的第一位是源操作数的最低有效位(vlshft)。
305、如权利要求304所述的方法,其中在移位第一扩充位的步骤之后,把第一扩充位和第二扩充位两者都置于一缺省状态。
306、如权利要求303所述的方法,其中源操作数的第一位是源操作数的最高有效位(vrshft)。
307、如权利要求306所述的方法,其中在移位第一扩充位的步骤之后,把第一扩充位和第二扩充位两者都置于一缺省状态。
308、如权利要求302所述的方法,其中当第二扩充位被否定时移位值是一符号位,而当第二扩充位被认定时移位值是第一扩充位。
309、如权利要求302所述的方法,其中在执行一左移操作期间不使用第二扩充位。
310、一种执行数据处理指令的方法,该方法包括:
接收一数据处理指令(add,sub,addsx,subsx,neg,abs,sat,vsat,vadd,vsub,vaddsx,vsubsx,vneg,vabs);
解码数据处理指令以便提供一组控制信号(23或25);
从一第一存储单元中存取一溢出值(SV位214或VV位106,SPCR寄存器208或VPCR寄存器102中的一位),当结果不是数据值的范围之一时溢出值被认定,当结果是数据值的范围之一时溢出值被否定;以及
当溢出值被认定时,修改结果以便等于一个预定值。
311、如权利要求310所述的方法,该方法还包括步骤:
响应于该组控制信号而执行一数据处理操作,该数据处理操作生成一个结果。
312、如权利要求310所述的方法,该方法还包括步骤:
从一第二存储单元(SPCR208或VPCR102)中存取一溢出方向值(SD位216或VD位108),其中:
当溢出方向值被认定时,结果大于一最大值,而
当溢出方向值被否定时,结果小于一最小值。
313、如权利要求312所述的方法,其中当溢出值被认定而且溢出方向值被认定时,该预定值是一个最大正数。
314、如权利要求312所述的方法,其中当溢出值被认定而溢出方向值被否定时,该预定值是最大负数和零之一。
315、如权利要求312所述的方法,其中结果是一个二进制补码带符号数据值。
316、如权利要求315所述的方法,其中当溢出值被认定而且溢出方向值被认定时,该预定值等于一个十六进制值$7F。
317、如权利要求315所述的方法,其中当溢出值被认定而溢出方向值被否定时,该预定值等于一个十六进制值$80。
318、如权利要求312所述的方法,其中该结果是一个不带符号数据值。
319、如权利要求318所述的方法,其中当溢出值被认定而且溢出方向值被认定时,该预定值等于一个十六进制值$FF。
320、如权利要求318所述的方法,其中当溢出值被认定而溢出方向值补否定时,该预定值等于一个十六进制值$00。
321、如权利要求310所述的方法,其中数据处理指令的一个操作数是一标量数据值或者是一矢量数据值一部分。
322、如权利要求321所述的方法,其中:
当操作数为标量数据值时,数据处理指令有助记形式“sat”;以及
当操作数为矢量数据值的部分时,数据处理指令有助记形式“vsat”。
323、一种数据处理机(10),它包括:
用来接收数据处理指令的接口装置(指令高速缓冲存储器20或CMA14);
一个用来解码数据处理指令以便提供一组控制信号的定序器,该定序器耦合于接口装置用以接收数据处理指令;
用来响应于该组控制信号而执行数据处理操作的指令执行装置(ALU304和控制电路308或ALU119和控制电路115),该指令执行装置提供数据处理操作的一个结果,该指令执行装置耦合于定序器用以接收该组控制信号;
一个用来存储溢出值(SV位214或VV位106)的第一存储电路(SPCR208或VPCR102中的一位),当结果不是数据值范围之一时溢出值被认定,当结果是数据值范围之一时溢出值被否定;以及
一个第一修改电路(矢量118或标量306),其与存储电路相耦合用于接收溢出值,并与指令执行装置相耦合用于接收该结果;当溢出值被认定时,第一修改电路修改结果以便等于一个预定值。
324、如权利要求323所述的数据处理机,它还包括:
一个用来存储溢出方向值(SD位216或VD位108)的第二存储电路(SPCR208或VPCR102中的一位);当结果大于一最大值时,溢出方向值被认定,而当结果小于一最小值时,溢出方向值被否定。
325、如权利要求324所述的数据处理机,其中,当溢出值被认定而且溢出方向值被认定时,该预定值是一最大正数。
326、如权利要求324所述的数据处理机,其中当溢出值被认定而溢出方向值被否定时,该预定值是一最大负数和零之一。
327、如权利要求323所述的数据处理机,它还包括:
一个用来存储一符号控制值(SSGN位174或VSGN位176)的第三存储电路(ACR172中的一位);当结果是一个二进制补码带符号数据值时,该符号控制值被认定;而当结果是一个不带符号数据值时符号控制值被否定。
328、如权利要求327所述的数据处理机,其中当符号控制值被认定、溢出值被认定而且溢出方向值亦被认定时,该预定值是一个最大正的带符号数。
329、如权利要求327所述的数据处理机,其中当符号控制值被否定、溢出值被认定而且溢出方向值被否定时,该预定值是一最大负的带符号数。
330、如权利要求327所述的数据处理机,其中当符号控制值被否定、溢出值被认定而且溢出方向值被认定时,该预定值是一最大正的不带符号数。
331、如权利要求327所述的数据处理机,其中当符号的控制值被否定,溢出值被肯定而且溢出方向值被否定时,该预定值等于零。
332、如权利要求324所述的数据处理机,其中数据处理指令的操作数是一标量值或者是一矢量值之部分。
333、一种在具有一组处理部件(16)的数据处理机(10)中执行数据处理指令的方法,该方法包括步骤:
接收数据处理指令(DADD,DMIN,DMAX,DSROT);
响应于数据处理指令而存取向下移位值(#S)(DADD#S,VO);
从该组处理部件(16)的第一部分中有选择地存取问一第一数据值,该组处理部件(16)的第一部分响应于向下移位值而被确定;
向该组处理部件(16)的每一个第二部分中传送第一数据值,该组处理元件(16)的第二部分响应于向下移位值而被确定;
在该组处理部件(16)的每一个第二部分中用第一数据值进行数据处理操作;以及
在该组处理部件(16)的每一个第二部分中存储数据处理操作的结果。
334、如权利要求333所述的方法,其中数据处理操作是一种使用第一数据值和一组第二数据值之一两者的数学计算,该组第二数据值中的每一个被存储在该组处理部件的对应的一个之中。
335、如权利要求333所述的方法,该方法还包括步骤:
从一个第一存储器存储电路中存取一组启动值(VT),该组启动值中的每一个对应着该组处理部件之一;以及
响应于该组启动值中对应的一个,有选择地启动该组处理部件的每一个第二部分以便存储数据处理操作的结果。
336、如权利要求333所述的方法,其中数据处理操作是该第一数据值与一组第二数据值之一相加的加法操作,该组第二数据值中的每一个存储在该组处理元件中对应的一个之中。
337、如权利要求336所述的方法,该方法还包括步骤:
从一个第二存储器存储电路(VPCR102的一位)中存取第一扩充位(VX0位104),该第一扩充位提供一个状态信息值(进位);
在执行加法操作期间,使用第一扩充位;以及
有选择地修改第一扩充位,以便存储与加法操作的结果对应的被修改的状态信息值。
338、如权利要求337所述的方法,其中修改的状态信息值指示在执行加法操作期间何时产生一进位值。
339、如权利要求337所述的方法,其中数据处理指令是一前级指令和一非前级指令之一,
前级指令响应于加法操作的结果来修改第一扩充位;而
非前级指令修改第一扩充位以便处于一缺省状态。
340、如权利要求339所述的方法,其中非前级指令(dadd)是一饱和指令而前级指令(daddp)是一非饱和指令,其中:
当与结果相对应的溢出值处于被认定状态而数据处理指令是一非前级指令时,用上界和下界之一取代加法操作的结果;以及
当与结果对应的溢出值处于被定状态而数据处理指令是前级指令时,加法操作的结果不取代替。
341、如权利要求340所述的方法,该方法还包括步骤:
当数据处理指令是非前级指令时,否定第一扩充位;以及
当数据处理指令是前级指令时,响应于数据处理指令的执行,有选择地修改第一扩充位。
342、如权利要求339所述的方法,其中当数据处理指令是非前级指令时,数据处理指令有助记形式“dadd”,而当数据处理指令是前级指令时,数据处理指令有助记形式“daddp”。
343、如权利要求333所述的方法,其中数据处理操作包括步骤:
启动该组处理部件的每一个第二部分,以便把第一数据值与一组第二数据值之一相比较,该组第二数据值中的每一个被存储在该组处理部件第二部分中对应的一个里;以及
有选择地传送第一数据值,以便存储在该组处理部件第二部分中对应的一个里。
344、如权利要求343所述的方法,其中数据处理操作的结果是一最大值和一最小值这一(dmin,dminp,dmax,dmaxp)。
345、如权利要求343所述的方法,该方法还包括步骤:
从一存储单元中存取一第一扩充位(VX0  104)和一第二扩充位(VX1  105),该第一扩充位和第二扩充位指示在接收数据处理指令之前所执行的数据处理操作的前一结果;
在执行启动该组处理单元的每一个第二部分以便比较的步骤期间,使用第一扩充位和第二扩充位;以及
响应于数据处理操作,有选择地修改第一扩充位和第二扩充位。
346、如权利要求345所述的方法,其中第一扩充位和第二扩充位组合地代表一组状态情况,其中:
在第一状态中,第一扩充位和第二扩充位处于缺省状态;
当第一扩充位和第二扩充位处于一第二状态时,第一扩充位和第二扩充位指示第二组数据值之一小于第一数据值;
当第一扩充位和第二扩充位处于一第三状态时,第一扩充位和第二扩充位指示第二组数据值之一大于第一数据值;以及
当第一扩充位和第二扩充位处于一第四状态时,第一扩充位和第二扩充位指示第二组数据值之一等于第一数据值。
347、如权利要求333所述的方法,其中数据处理操作包括步骤:
在该组处理部件的每一个第二部分中有选择地存储第一数据值。
348、如权利要求347所述的方法,其中数据处理指令有助记形式“dsrot”。
349、如权利要求347所述的方法,该方法还包括步骤:
从该组处理部件的第三部分中存取一第三数据值;以及
向该组处理部件的每一个第一部分中传送该第三数据值。
350、如权利要求349所述的方法,其中用一个寄存器来指示提供该第三数据值的该组处理部件第三部分之一(PESR220)。
351、如权利要求333所述的方法,其中向下移位值是数据处理指令的一个操作数。
352、如权利要求333所述的方法,其中该组处理部件中的每一个对应着一个处理部件号,该处理元件号具有使用多个位的二进制表示(对64个PE需要6位),该多个位中的一个最低有效位具有零位位置。
353、如权利要求352所述的方法,其中向下移位值指示该组处理部件中每一个的处理部件号的二进制表示中的一个位位置。
354、如权利要求353所述的方法,其中该组处理部件的第一部分包括对应于一第一组处理部件号的该组处理部件中的每一个,在该第一组处理部件号中,由向下移位值所指示的位位置被否定,而一第一预定值被存储在一组较高有效位位置中。
355、如权利要求354所述的方法,其中该组处理部件的第二部分包括对应于一第二组处理部件号的该组处理部件中的每一个,在该第二组处理部件号中,由向下移位值所指示的位位置被认定,而一第二预定值被存储在一组较高有效位位置中。
356、如权利要求353所述的方法,其中该组处理部件的第一部分包括对应于一第一组处理部件号的该组处理部件中的每一个,在该第一组处理部件号中,由向下移位值所指示的位位置被认定,而一第一预定值被存储在一组较高有效位位置中。
357、如权利要求356所述的方法,其中该组处理部件的第二部分包括对应于一第二组处理部件号的该组处理部件中的每一个,在该第二组处理部件号由向下移位值所示的位位置被否定,而一第二预定值被存储在一组较高有效位位置中。
358、一种数据处理机,它包括:
一个用来接收数据处理指令的接口电路(指令高速缓冲存储器20或CMA14);
用来响应于数据处理指令而存取一个向下移位值的装置(微定序器22),该存取装置耦合于用于接收据处理指令的接口电路;
一组用来存储一组数据值的处理部件(16);
用来从该组处理部件的第一部分中有选择地存取一个第一数据值的装置(控制电路115),该组处理部件的第一部分响应于该向下移位值而得以确定,该有选择地存取的装置耦合于该组处理部件;
用来向该组处理部件第二部分中的每一个传送第一数据值的装置(多路转换器310、312、314、316、318、320、322和324中选取),该组处理部件的第二部分响应于该向下移位值而得以确定,该传送装置耦合于有选择地存取的装置;
用来启动该组处理部件的每一个第二部分以便使用第一数据值进行数据处理操作的启动装置(ALU119),该启动装置耦合于该组处理部件;以及
一个用来在该组处理部件的每一个第二部分中存储数据处理操作的结果的第一存储电路([X]寄存器128之一)。
359、如权利要求358所述的数据处理机,其中数据处理操作是使用第一数据值和一组第二数据值之一两者的数学计算,该组第二数据值中的每一个被存储在该组处理部件第二部分中对应的一个里。
360、如权利要求358所述的数据处理机,它还包括:
一个用来存储一组启动值(Vt位110)的第二存储电路(VPCR102的一位),该组启动值中的每一个对应于该组处理部件之一,该组启动劝值中的每一个有选择地启动该组处理部件第二部分中的每一个,以便响应于该组启动值中对应的一个而存储数据处理操作的结果。
361、如权利要求358所述的数据处理机,其中数据处理操作是一加法运算,其中第一数据值与一组第二数据值之一相加,该组第二数据值的每一个被存储在该组处理部件第二部分中对应的一个里。
362、如权利要求361所述的数据处理器,它还包括:
一个用来存储一第一扩充位(VX0位104)的第三存储器存储电路(VPCR102的一位),该第一扩充位提供一状态信息值(进位);以及
一个用来有选择地修改该第一扩充位以便存储一个与加法操作的结果对应的修改的状态信息值的修改装置(118)。
363、如权利要求362所述的数据处理机,其中修改的状态信息值指示在执行加法操作期间何时产生一进位值。
364、如权利要求362所述的数据处理机,其中数据处理指令是一前级指令和一非前级指令之一,
前级指令响应于加法操作的结果修改每一第一扩充位;以及
非前级指令修改每一第一扩充位以便处于缺省状态。
365、如权利要求358所述的数据处理机,其中数据处理操作的结果是最大值和最小值之一(dmin,dminp,dmax,dmaxp)。
366、如权利要求358所述的数据处理机,它还包括:
一个用来存储一第一扩充位和一第二扩充位(VX1位105)的存储单元(VPCR102),该第一扩充位和第二扩充位指示在接收数据处理指令之前所执行的数据处理操作的前一结果,该第一扩充位和第二扩充位被用于执行数据处理操作期间。
367、如权利要求366所述的数据处理机,它还包括:
一个用来响应于数据处理操作有选择地修改该第一扩充位和第二扩充位的修改装置(118)。
368、如权利要求358所述的数据处理机,其中在执行数据处理操作期间该第一数据值被复制到该组处理部件的每一个第二部分中。
369、如权利要求368所述的数据处理机,其中数据处理指令有助记形式“dsrot”。
370、如权利要求368所述的数据处理机,其中用来有选择地存取的装置从该组处理部件的第三部分中存取一第三数据值,而用于传送的装置将该第三数据值传送给该组处理部件的每一个第一部分。
371、如权利要求370所述的数据处理机,它还包括:
一个用来指示提供第三数据值的该组处理部件的第三部分之一的寄存器(PESR220)。
372、如权利要求358所述的数据处理机,其中向下移位值是数据处理指令的一个操作数。
373、一种在数据处理器(10)中执行指令的方法,该方法包括步骤:
接收一第一指令(微定器22);
解码(19)第一指令以便提供第一组控制信号(部分信与23);
响应于该组控制信号的第一部分,从一组处理部件(16)中被启动的一个中存取一启动值(Vt位110),该启动值有选择地启动一组处理部件中被启动的一个,以便参与指令的执行;
响应于该组控制信号的第二部分,从一组处理元件中被启动的一个中存取一历史值(VH位112);以及
响应于该历史值的逻辑状态,有选择地修改(115、118和102)该启动值。
374、如权利要求373所述的方法,该方法还包括步骤:
响应于该组控制信号的第一部分,从该组处理部件被启动部分的每一个中存取一组启动值,该组启动值中的每一个有选择地启动该组处理部件中对应的一个以便参与指令的执行;
响应于该组控制信号的第二部分,从该组处理部件被启动部分的每一个中存取一组历史值,该组历史值中的每一个对应于该组处理部件被启动部分之一;以及
响应于该组历史值中对应的一个的逻辑状态,有选择地修改该组启动值中的每一个。
375、如权利要求373所述的方法,其中第一指令有助记形式“velse”。
376、如权利要求373所述的方法,其中有选择地修改的步骤还包括步骤:
当该组历史值中对应的一个处于一第一逻辑状态时,对该组启动值中第一一个求补;以及
当该组历史值中对应的一个处于一第二逻辑状态时,否定该组启动值中的第一一个。
377、如权利要求373所述的方法,该方法还包括步骤:
当该组启动值中对应的一个处于一被认定逻辑状态时,认定该组历史值中的第一一个。
378、如权利要求377所述的方法,其中该组启动值中对应的一个处于被认定逻辑态,以便指示已满足先前所执行指令的条件。
379、如权利要求377所述的方法,其中该组启动值中对应的一个处于被否定逻辑状态,以便指示未满足先前所执行指令的条件。
380、如权利要求373所述的方法,其中在执行一第二指令之后执行第一指令,一种执行第二指令的方法包括步骤:
接收一第二指令(VIF);
解码该第二指令以便提供第二组控制信号;
响应于该第二组控制信号的第一部分,从一个处理部件中存取该启动值;
当启动值处于被认定状态时,有选择地启动处理部件以便参与第二指令的执行;
响应于该组控制信号的第二部分,执行一比较操作,当处理部件被启动而参与时,该处理部件在执行比较操作期间被使用;以及
当处理部件被启动而参与时,有选择地否定与该处理部件相对应的启动值,当比较操作的条件未被满足时该启动值被否定。
381、如权利要求380所述的方,该方法还包括步骤:
响应于第二组控制信号的第一部分,从一组处理部件之一中存取一组启动值;
有选择地启动该组处理部件的一部分以便参与第二指令的执行,该组处理部件的部分中的每一个具有一个处于被认定状态的启动值;
响应于该组控制信号的第二部分,执行比较操作,该组处理部件的部分中的每一个在执行比较操作期间被使用;以及
当比较操作的条件未被满足时,有选择地否定与该组处理部件的部分相对应的该组启动值一部分中的每一个。
382、如权利要求373所述的方法,该方法还包括步骤:
接收一第三指令(ENDEF);
解码该第三指令以便提供一第三组控制信号;
认定该组启动值中的每一个;以及
否定该组历史值中的每一个。
383、如权利要求382所述的方法,其中第三指令有助记形式“vendif”。
384、如权利要求382所述的方法,其中第二指令是有助记形式“vif”的一组指令之一。
385、一种数据处理机,它包括:
用来存储一第一指令的存储装置(20或端口逻辑17);
用来解码该第一指令以便提供第一组控制值(23)的指令解码装置(19),该指令解码装置耦合于用来接收第一指令的存储装置;
一个用来存储一数字数据值的处理部件(16);
一个用来存储一启动值的一第一存储电路(Vt位110),该启动值对应于该处理部件,该启动值有选择地启动该处理部件以参与指令的执行;
一个用来存储一历史值的第二存储电路(Vh位112),该历史值对应于该处理部件,该历史值用于有选择地修改该启动值;以及
一个用来响应于历史值的一逻辑状态,有选择地修改该启动值的修改电路(118),该修改电路耦合于第一存储电路和第二存储电路两者。
386、如权利要求385所述的数据处理地机,它还包括:
一组用来存储一组数字数据值的处理部件(16)。
387、如权利要求386所述的数据处理机,其中第一存储电路存储一组启动值,该组启动值中的每一个对应于该组处理部件之一,而且该组启动值中的每一个有选择地启动该组处理部件中对应的一个以便参与指令的执行。
388、如权利要求387所述的数据处理机,其中第二存储电路存储一组历史值,该组历史值中的每一个对应着该组处理部件之一,而且该组历史值中的每一个用于有选择地修改该组启动值中对应的一个。
389、如权利要求388所述的数据处理机,其中修改电路(118)响应于该组历史值中对应的一个的逻辑状态,有选择地修改该组启动值的每一个。
390、如权利要求389所述的数据处理机,其中第一指令用于执行IF,ELSE编程结构中的ELSE部分。
391、如权利要求389所述的数据处理机,其中当一组历史值处于第一逻辑状态时,修改电路对该组启动值中第一一个进行求补,而当该组历史值中对应的一个处于第二逻辑状态时,修改电路否定该组启动值中第一一个。
392、如权利要求389所述的数据处理机,其中当该组启动值中对应的一个处于一被认定逻辑状态时,该组历史值的第一一个被认定。
393、如权利要求389所述的数据处理机,其中在执行第一指令之前执行第二指令,该第二指令将该组数字数据值的第一一个与该组数字数据值的第二一个进行比较,以便检测预定条件。
394、如权利要求389所述的数据处理机,其中当预定条件为假时,第二指令否定存储在第一存储电路中的该组启动值中的每一个。
395、如权利要求385所述的数据处理机,其中在执行第一指令之后执行一第三指令,该第三指令认定该组启动值中的每一个并否定该组历史值中的每一个。
396、一种在数据处理机中执行指令的方法,该方法包括步骤:
接收指令,该指令有一个操作数;
解码该指令以便提供一组控制信号;
响应于该组控制信号,存取存储在由指令的操作数据指示的一个存储单元中的一个数据值;
通过一个调整值来调整存储在该存储单元中的数据值,以便生成一调整的数据值;
认定一个与存储单元对应的启动值,该启动值有选择地启动存储单元以便参与指令的执行;
认定一个与该存储单元相对应的历史值,该历史值指示存储单元先前是否被用于条件指示的执行;
进行一比较测试,以便把调整的数据值与一预定值进行比较;
当比较测试的结果为假时,执行下一条指令;以及
当比较测试的结果为真时,跳过下一条指令的执行。
397、如权利要求396所述的方法,其中该指令有助记形式“dskipe”。
398、如权利要求396所述的方法,其中调整为值1而比较测试是相等性测试。
399、如权利要求396所述的方法,其中该预定值等于值“-1”。
400、如权利要求396所述的方法,其中该数据值被存储在该数据处理机中的一个标量寄存器里。
401、如权利要求396所述的方法,其中比较测试确定调整的数据值究竟是小于还是等于该预定值。
402、如权利要求396所述的方法,其中调整包括步骤:
把“-1”值加到数据值上,以便生成该调整的数据值。
403、一种在数据处理机中执行重复指令的方法,该方法包括步骤:
ⅰ)在程序中的第一地址处接收重复指令,该重复(repeat)指令有一第一操作数和一第二操作数;
ⅱ)解码重复指令,以便提供一组控制信号;
ⅲ)响应于该组控制信号,存取存储在由重复指令的第二操作数所指示的一个存储单元中的一个数据值;
ⅳ)以预选的次数执行下列步骤,该预选的次数由重复指令的第二操作数提供;
ⅴ)依次执行一组指令,该组指令的第一一个在第二地址,而该组指令的最后一个在第三地址,第二地址是紧跟第一地址之后的地址,而第三地址基于重复指令的第一操作数;
ⅵ)认定一个启动值,该启动值与在执行该组指令的最后一个指令的期间所存取的存储单元相对应,该启动动值有选择地启动存储单元以便参与该组指令之一的执行;以及
ⅶ)否定一历史值,该历史值与在执行该组指令的最后一个指令的期间所存取的存储单元相对应,该历史值指示存储单元先前是否用于指令的执行。
404、如权利要求403所述的方法,其中重复指令有助记形式“repeate”。
405、如权利要求403所述的方法,其中当该组指令的最后一个是一矢量指令时,数据处理机不执行由该组指令的最后一个所规定的操作。
406、如权利要求403所述的方法,其中第二操作数被存储在数据处理机中的一个标量寄存器里。
407、如权利要求403所述的方法,其中第一操作数是一个加在程序计数值上的偏移值。
408、如权利要求403所述的方法,该方法还包括步骤:
在第三地址之后的第四地址处执行下一条指令。
409、如权利要求403所述的方法,其中第一操作数被规定作为重复指令中的一个字段。
410、如权利要求403所述的方法,其中当第二操作数等于零值时,不执行步骤ⅳ)至ⅶ)。
411、如权利要求403所述的方法,其中该组指令的最后一个、步骤ⅵ)和步骤ⅶ)都是并行地执行的。
412、如权利要求403所述的方法,该方法还包括步骤:
在执行重复指令期间认定一状态值。
CN94103297A 1993-03-31 1994-03-30 一种数据处理系统及其方法 Expired - Fee Related CN1080906C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/040,779 US5717947A (en) 1993-03-31 1993-03-31 Data processing system and method thereof
US040779 1993-03-31
US040,779 1993-03-31

Publications (2)

Publication Number Publication Date
CN1107983A true CN1107983A (zh) 1995-09-06
CN1080906C CN1080906C (zh) 2002-03-13

Family

ID=21912891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN94103297A Expired - Fee Related CN1080906C (zh) 1993-03-31 1994-03-30 一种数据处理系统及其方法

Country Status (6)

Country Link
US (18) US5717947A (zh)
EP (1) EP0619557A3 (zh)
JP (2) JPH0773149A (zh)
KR (1) KR940022257A (zh)
CN (1) CN1080906C (zh)
TW (1) TW280890B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103002276A (zh) * 2011-03-31 2013-03-27 Vixs系统公司 多格式视频解码器及与其使用方法
CN107423816A (zh) * 2017-03-24 2017-12-01 中国科学院计算技术研究所 一种多计算精度神经网络处理方法和系统
CN108153190A (zh) * 2017-12-20 2018-06-12 福建新大陆电脑股份有限公司 一种人工智能微处理器
CN108228238A (zh) * 2016-12-22 2018-06-29 英特尔公司 用于确定两个最小值和两个最大值的处理器指令
CN109416757A (zh) * 2017-12-29 2019-03-01 深圳市大疆创新科技有限公司 用于处理数值数据的方法、设备和计算机可读存储介质
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN110609706A (zh) * 2019-06-13 2019-12-24 眸芯科技(上海)有限公司 配置寄存器的方法及应用
CN111656367A (zh) * 2017-12-04 2020-09-11 优创半导体科技有限公司 神经网络加速器的系统和体系结构
CN112241613A (zh) * 2019-07-19 2021-01-19 瑞昱半导体股份有限公司 检测电路的引脚关联性的方法及其计算机处理系统
CN113033789A (zh) * 2019-12-24 2021-06-25 中科寒武纪科技股份有限公司 用于保序的总线系统、集成电路装置、板卡及保序方法

Families Citing this family (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5354695A (en) * 1992-04-08 1994-10-11 Leedy Glenn J Membrane dielectric isolation IC fabrication
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH10502196A (ja) * 1994-06-29 1998-02-24 インテル・コーポレーション アップグレード可能なマルチプロセッサ・コンピュータシステムでシステムバス所有権を指示するプロセッサ
CN1326033C (zh) 1994-12-02 2007-07-11 英特尔公司 可以对复合操作数进行压缩操作的微处理器
CN103064650B (zh) * 1995-08-31 2016-02-24 英特尔公司 控制移位分组数据的位校正的装置
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5727229A (en) * 1996-02-05 1998-03-10 Motorola, Inc. Method and apparatus for moving data in a parallel processor
JP2904099B2 (ja) * 1996-02-19 1999-06-14 日本電気株式会社 コンパイル装置およびコンパイル方法
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
DE69720922T2 (de) * 1996-11-29 2003-11-13 Matsushita Electric Ind Co Ltd Prozessor mit verbessertem Rundungsprozess
DE19782200T1 (de) 1996-12-19 1999-11-18 Hyundai Electronics America Maschine zur Videovollbildaufbereitung
US6112291A (en) * 1997-01-24 2000-08-29 Texas Instruments Incorporated Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting
US6551857B2 (en) 1997-04-04 2003-04-22 Elm Technology Corporation Three dimensional structure integrated circuits
US6430589B1 (en) 1997-06-20 2002-08-06 Hynix Semiconductor, Inc. Single precision array processor
US6044392A (en) * 1997-08-04 2000-03-28 Motorola, Inc. Method and apparatus for performing rounding in a data processor
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
FR2772949B1 (fr) * 1997-12-19 2000-02-18 Sgs Thomson Microelectronics Partage de l'adressage indirect des registres d'un peripherique dedie a l'emulation
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JPH11282683A (ja) * 1998-03-26 1999-10-15 Omron Corp エージェントシステム
JPH11338844A (ja) * 1998-05-22 1999-12-10 Nec Corp 発火数制御型神経回路装置
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
WO2000022511A1 (en) * 1998-10-09 2000-04-20 Koninklijke Philips Electronics N.V. Vector data processor with conditional instructions
US6574665B1 (en) * 1999-02-26 2003-06-03 Lucent Technologies Inc. Hierarchical vector clock
US6308253B1 (en) * 1999-03-31 2001-10-23 Sony Corporation RISC CPU instructions particularly suited for decoding digital signal processing applications
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
US7802079B2 (en) * 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US7526630B2 (en) * 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) * 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US7627736B2 (en) * 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
JP5285828B2 (ja) * 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
GB2348982A (en) * 1999-04-09 2000-10-18 Pixelfusion Ltd Parallel data processing system
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US8171263B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
JP2003500740A (ja) * 1999-05-19 2003-01-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デバッグ回路を有するデータプロセッサ
US7401205B1 (en) * 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
JP2001175933A (ja) * 1999-12-15 2001-06-29 Sanden Corp 自動販売機の制御プログラム書換システム及び自動販売機の制御装置
DE10001874A1 (de) * 2000-01-18 2001-07-19 Infineon Technologies Ag Multi-Master-Bus-System
US7191310B2 (en) * 2000-01-19 2007-03-13 Ricoh Company, Ltd. Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
WO2002007000A2 (en) 2000-07-13 2002-01-24 The Belo Company System and method for associating historical information with sensory data and distribution thereof
US6606614B1 (en) * 2000-08-24 2003-08-12 Silicon Recognition, Inc. Neural network integrated circuit with fewer pins
DE10102202A1 (de) * 2001-01-18 2002-08-08 Infineon Technologies Ag Mikroprozessorschaltung für tragbare Datenträger
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
CA2344098A1 (fr) * 2001-04-12 2002-10-12 Serge Glories Systeme de processeur modulaire a elements configurables et intereliables permettant de realiser de multiples calculs paralleles sur du signal ou des donnees brutes
US6725233B2 (en) 2001-05-15 2004-04-20 Occam Networks Generic interface for system and application management
US7685508B2 (en) * 2001-05-15 2010-03-23 Occam Networks Device monitoring via generalized markup language
US7155496B2 (en) * 2001-05-15 2006-12-26 Occam Networks Configuration management utilizing generalized markup language
US6666383B2 (en) 2001-05-31 2003-12-23 Koninklijke Philips Electronics N.V. Selective access to multiple registers having a common name
US7088731B2 (en) * 2001-06-01 2006-08-08 Dune Networks Memory management for packet switching device
WO2003003197A2 (en) * 2001-06-28 2003-01-09 Oak Technology, Inc. System-on-a-chip controller
US7007058B1 (en) 2001-07-06 2006-02-28 Mercury Computer Systems, Inc. Methods and apparatus for binary division using look-up table
US7027446B2 (en) * 2001-07-18 2006-04-11 P-Cube Ltd. Method and apparatus for set intersection rule matching
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US7000226B2 (en) * 2002-01-02 2006-02-14 Intel Corporation Exception masking in binary translation
US7349992B2 (en) * 2002-01-24 2008-03-25 Emulex Design & Manufacturing Corporation System for communication with a storage area network
US6934787B2 (en) * 2002-02-22 2005-08-23 Broadcom Corporation Adaptable switch architecture that is independent of media types
US7159099B2 (en) * 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
US7415601B2 (en) * 2002-06-28 2008-08-19 Motorola, Inc. Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
US7140019B2 (en) * 2002-06-28 2006-11-21 Motorola, Inc. Scheduler of program instructions for streaming vector processor having interconnected functional units
WO2004015764A2 (en) 2002-08-08 2004-02-19 Leedy Glenn J Vertical system integration
US7231552B2 (en) * 2002-10-24 2007-06-12 Intel Corporation Method and apparatus for independent control of devices under test connected in parallel
US20040098568A1 (en) * 2002-11-18 2004-05-20 Nguyen Hung T. Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method
US6912646B1 (en) * 2003-01-06 2005-06-28 Xilinx, Inc. Storing and selecting multiple data streams in distributed memory devices
US20060167435A1 (en) * 2003-02-18 2006-07-27 Adamis Anthony P Transscleral drug delivery device and related methods
US20040215924A1 (en) * 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
US7191432B2 (en) * 2003-06-05 2007-03-13 International Business Machines Corporation High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit
US7725681B2 (en) * 2003-08-15 2010-05-25 Nxp B.V. Parallel processing array
US20050043872A1 (en) * 2003-08-21 2005-02-24 Detlef Heyn Control system for a functional unit in a motor vehicle
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7315932B2 (en) * 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US7107436B2 (en) * 2003-09-08 2006-09-12 Freescale Semiconductor, Inc. Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7818729B1 (en) * 2003-09-15 2010-10-19 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
WO2005037326A2 (en) * 2003-10-13 2005-04-28 Clearspeed Technology Plc Unified simd processor
US7526691B1 (en) * 2003-10-15 2009-04-28 Marvell International Ltd. System and method for using TAP controllers
EP1544631B1 (en) 2003-12-17 2007-06-20 STMicroelectronics Limited Reset mode for scan test modes
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
JP4728581B2 (ja) * 2004-02-03 2011-07-20 日本電気株式会社 アレイ型プロセッサ
JP4547198B2 (ja) * 2004-06-30 2010-09-22 富士通株式会社 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体
US20060095714A1 (en) * 2004-11-03 2006-05-04 Stexar Corporation Clip instruction for processor
US7650542B2 (en) * 2004-12-16 2010-01-19 Broadcom Corporation Method and system of using a single EJTAG interface for multiple tap controllers
US7370136B2 (en) * 2005-01-26 2008-05-06 Stmicroelectronics, Inc. Efficient and flexible sequencing of data processing units extending VLIW architecture
US7873947B1 (en) * 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
US20060218377A1 (en) * 2005-03-24 2006-09-28 Stexar Corporation Instruction with dual-use source providing both an operand value and a control value
EP1870803A4 (en) * 2005-03-31 2008-04-30 Matsushita Electric Ind Co Ltd PROCESSOR
US7757048B2 (en) * 2005-04-29 2010-07-13 Mtekvision Co., Ltd. Data processor apparatus and memory interface
US7805709B2 (en) * 2005-05-27 2010-09-28 Delphi Technologies, Inc. System and method for bypassing execution of an algorithm
US7543136B1 (en) * 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
CN101312964A (zh) * 2005-11-21 2008-11-26 普渡制药公司 4-噁二唑基哌啶化合物及其用途
US7404065B2 (en) * 2005-12-21 2008-07-22 Intel Corporation Flow optimization and prediction for VSSE memory operations
US7602399B2 (en) * 2006-03-15 2009-10-13 Ati Technologies Ulc Method and apparatus for generating a pixel using a conditional IF—NEIGHBOR command
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
EP2119253B1 (en) * 2007-02-09 2011-04-06 Nokia Corporation Forbidden tracking area optimization for private/home networks
US8917165B2 (en) * 2007-03-08 2014-12-23 The Mitre Corporation RFID tag detection and re-personalization
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
US8131909B1 (en) 2007-09-19 2012-03-06 Agate Logic, Inc. System and method of signal processing engines with programmable logic fabric
US7970979B1 (en) * 2007-09-19 2011-06-28 Agate Logic, Inc. System and method of configurable bus-based dedicated connection circuits
FR2922663B1 (fr) * 2007-10-23 2010-03-05 Commissariat Energie Atomique Structure et procede de sauvegarde et de restitution de donnees
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US8527742B2 (en) * 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8417921B2 (en) * 2008-08-15 2013-04-09 Apple Inc. Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8447956B2 (en) * 2008-08-15 2013-05-21 Apple Inc. Running subtract and running divide instructions for processing vectors
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
TWI417798B (zh) * 2008-11-21 2013-12-01 Nat Taipei University Oftechnology High - speed reverse transfer neural network system with elastic structure and learning function
JP5321806B2 (ja) * 2009-01-13 2013-10-23 株式会社リコー 画像形成装置の操作装置及び画像形成装置
US8832403B2 (en) 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
US8693788B2 (en) * 2010-08-06 2014-04-08 Mela Sciences, Inc. Assessing features for classification
US9141386B2 (en) * 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
GB2484729A (en) * 2010-10-22 2012-04-25 Advanced Risc Mach Ltd Exception control in a multiprocessor system
RU2010145507A (ru) * 2010-11-10 2012-05-20 ЭлЭсАй Корпорейшн (US) Устройство и способ управления микрокомандами без задержки
WO2012156995A2 (en) * 2011-05-13 2012-11-22 Melange Systems (P) Limited Fetch less instruction processing (flip) computer architecture for central processing units (cpu)
CN104081341B (zh) 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
WO2013095659A1 (en) 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
WO2013100989A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Systems, apparatuses, and methods for performing delta decoding on packed data elements
CN104025025B (zh) 2011-12-28 2018-08-28 英特尔公司 用于对打包数据元素执行增量编码的系统、装置和方法
US20130227190A1 (en) * 2012-02-27 2013-08-29 Raytheon Company High Data-Rate Processing System
US20160364643A1 (en) * 2012-03-08 2016-12-15 Hrl Laboratories Llc Scalable integrated circuit with synaptic electronics and cmos integrated memristors
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US8849885B2 (en) * 2012-06-07 2014-09-30 Via Technologies, Inc. Saturation detector
US9558003B2 (en) * 2012-11-29 2017-01-31 Samsung Electronics Co., Ltd. Reconfigurable processor for parallel processing and operation method of the reconfigurable processor
KR102021777B1 (ko) * 2012-11-29 2019-09-17 삼성전자주식회사 병렬 처리를 위한 재구성형 프로세서 및 재구성형 프로세서의 동작 방법
CN103914426B (zh) * 2013-01-06 2016-12-28 中兴通讯股份有限公司 一种多线程处理基带信号的方法及装置
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
US11501143B2 (en) * 2013-10-11 2022-11-15 Hrl Laboratories, Llc Scalable integrated circuit with synaptic electronics and CMOS integrated memristors
FR3015068B1 (fr) * 2013-12-18 2016-01-01 Commissariat Energie Atomique Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal
US20150269480A1 (en) * 2014-03-21 2015-09-24 Qualcomm Incorporated Implementing a neural-network processor
US10042813B2 (en) * 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US9752911B2 (en) 2014-12-29 2017-09-05 Concentric Meter Corporation Fluid parameter sensor and meter
US10789071B2 (en) * 2015-07-08 2020-09-29 Intel Corporation Dynamic thread splitting having multiple instruction pointers for the same thread
US10419501B2 (en) * 2015-12-03 2019-09-17 Futurewei Technologies, Inc. Data streaming unit and method for operating the data streaming unit
WO2017168706A1 (ja) * 2016-03-31 2017-10-05 三菱電機株式会社 ユニット及び制御システム
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
TWI627860B (zh) * 2016-05-31 2018-06-21 晨星半導體股份有限公司 影音處理裝置與方法
US10147035B2 (en) 2016-06-30 2018-12-04 Hrl Laboratories, Llc Neural integrated circuit with biological behaviors
KR20180080463A (ko) * 2017-01-04 2018-07-12 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
CN110059809B (zh) * 2018-10-10 2020-01-17 中科寒武纪科技股份有限公司 一种计算装置及相关产品
US11256503B2 (en) * 2019-03-11 2022-02-22 Untether Ai Corporation Computational memory
US20220171829A1 (en) 2019-03-11 2022-06-02 Untether Ai Corporation Computational memory
US11604972B2 (en) 2019-06-28 2023-03-14 Microsoft Technology Licensing, Llc Increased precision neural processing element
US20220180007A1 (en) * 2019-08-26 2022-06-09 Hewlett-Packard Development Company, L.P. Centralized access control of input-output resources
US11342944B2 (en) 2019-09-23 2022-05-24 Untether Ai Corporation Computational memory with zero disable and error detection
CN110908716B (zh) * 2019-11-14 2022-02-08 中国人民解放军国防科技大学 一种向量聚合装载指令的实现方法
CN113011577B (zh) * 2019-12-20 2024-01-05 阿里巴巴集团控股有限公司 处理单元、处理器核、神经网络训练机及方法
US11468002B2 (en) 2020-02-28 2022-10-11 Untether Ai Corporation Computational memory with cooperation among rows of processing elements and memory thereof
US11309023B1 (en) 2020-11-06 2022-04-19 Micron Technology, Inc. Memory cycling tracking for threshold voltage variation systems and methods
US11182160B1 (en) 2020-11-24 2021-11-23 Nxp Usa, Inc. Generating source and destination addresses for repeated accelerator instruction

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB211387A (en) * 1923-05-22 1924-02-21 Joseph William Guimont Improvements in and relating to radiators for heating buildings and the like
US3287703A (en) * 1962-12-04 1966-11-22 Westinghouse Electric Corp Computer
FR1416562A (fr) * 1964-09-25 1965-11-05 Constr Telephoniques Système de traitement de données simplifié
US3665402A (en) * 1970-02-16 1972-05-23 Sanders Associates Inc Computer addressing apparatus
JPS4871547A (zh) * 1971-12-27 1973-09-27 Hitachi Ltd
US3744034A (en) * 1972-01-27 1973-07-03 Perkin Elmer Corp Method and apparatus for providing a security system for a computer
US4437156A (en) * 1975-12-08 1984-03-13 Hewlett-Packard Company Programmable calculator
US4075679A (en) * 1975-12-08 1978-02-21 Hewlett-Packard Company Programmable calculator
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
US4270170A (en) * 1978-05-03 1981-05-26 International Computers Limited Array processor
US4244024A (en) * 1978-08-10 1981-01-06 Hewlett-Packard Company Spectrum analyzer having enterable offsets and automatic display zoom
US4514804A (en) * 1981-11-25 1985-04-30 Nippon Electric Co., Ltd. Information handling apparatus having a high speed instruction-executing function
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
US4463445A (en) * 1982-01-07 1984-07-31 Bell Telephone Laboratories, Incorporated Circuitry for allocating access to a demand-shared bus
US4470112A (en) * 1982-01-07 1984-09-04 Bell Telephone Laboratories, Incorporated Circuitry for allocating access to a demand-shared bus
US4488218A (en) * 1982-01-07 1984-12-11 At&T Bell Laboratories Dynamic priority queue occupancy scheme for access to a demand-shared bus
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
US4482996A (en) * 1982-09-02 1984-11-13 Burroughs Corporation Five port module as a node in an asynchronous speed independent network of concurrent processors
JPS59111569A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd ベクトル処理装置
US4539549A (en) * 1982-12-30 1985-09-03 International Business Machines Corporation Method and apparatus for determining minimum/maximum of multiple data words
US4546428A (en) * 1983-03-08 1985-10-08 International Telephone & Telegraph Corporation Associative array with transversal horizontal multiplexers
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
US5152000A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Array communications arrangement for parallel processor
US4814973A (en) * 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
JPS606429A (ja) * 1983-06-27 1985-01-14 Ekuseru Kk 異径中空成形品の製造方法及びその製造装置
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4589087A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Condition register architecture for a primitive instruction set machine
JPS6015771A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
FR2557712B1 (fr) * 1983-12-30 1988-12-09 Trt Telecom Radio Electr Processeur pour traiter des donnees en fonction d'instructions provenant d'une memoire-programme
US4588856A (en) * 1984-08-23 1986-05-13 Timex Computer Corporation Automatic line impedance balancing circuit for computer/telephone communications interface
CN85108294A (zh) * 1984-11-02 1986-05-10 萨德利尔计算机研究有限公司 数据处理系统
JPS61122747A (ja) * 1984-11-14 1986-06-10 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ処理装置
US5226171A (en) * 1984-12-03 1993-07-06 Cray Research, Inc. Parallel vector processing system for individual and broadcast distribution of operands and control information
DE3681463D1 (de) * 1985-01-29 1991-10-24 Secr Defence Brit Verarbeitungszelle fuer fehlertolerante matrixanordnungen.
JPS61221939A (ja) * 1985-03-28 1986-10-02 Fujitsu Ltd デイジタル信号処理プロセツサにおける命令機能方式
US5113523A (en) * 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
US5045995A (en) * 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
EP0211179A3 (en) * 1985-06-28 1990-09-05 Hewlett-Packard Company Apparatus for performing variable shift
IN167819B (zh) * 1985-08-20 1990-12-22 Schlumberger Ltd
JPS62180427A (ja) * 1986-02-03 1987-08-07 Nec Corp プログラム制御回路
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
GB8617674D0 (en) * 1986-07-19 1986-08-28 Armitage P R Seismic processor
US4985832A (en) * 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
US5155389A (en) * 1986-11-07 1992-10-13 Concurrent Logic, Inc. Programmable logic cell and array
US5418970A (en) * 1986-12-17 1995-05-23 Massachusetts Institute Of Technology Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content
GB2201015B (en) * 1987-02-10 1990-10-10 Univ Southampton Parallel processor array and array element
US5058001A (en) * 1987-03-05 1991-10-15 International Business Machines Corporation Two-dimensional array of processing elements for emulating a multi-dimensional network
US4891751A (en) * 1987-03-27 1990-01-02 Floating Point Systems, Inc. Massively parallel vector processing computer
JPS63253468A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd ベクトル処理装置
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
US5218712A (en) * 1987-07-01 1993-06-08 Digital Equipment Corporation Providing a data processor with a user-mode accessible mode of operations in which the processor performs processing operations without interruption
JP2509947B2 (ja) * 1987-08-19 1996-06-26 富士通株式会社 ネットワ−ク制御方式
US5168573A (en) * 1987-08-31 1992-12-01 Digital Equipment Corporation Memory device for storing vector registers
US5072418A (en) * 1989-05-04 1991-12-10 Texas Instruments Incorporated Series maxium/minimum function computing devices, systems and methods
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US4942517A (en) * 1987-10-08 1990-07-17 Eastman Kodak Company Enhanced input/output architecture for toroidally-connected distributed-memory parallel computers
US5047975A (en) * 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US5043867A (en) * 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
US4949250A (en) * 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
JPH01320564A (ja) * 1988-06-23 1989-12-26 Hitachi Ltd 並列処理装置
JP2602906B2 (ja) * 1988-07-12 1997-04-23 株式会社日立製作所 解析モデル自動生成方法
EP0360527B1 (en) * 1988-09-19 1995-01-04 Fujitsu Limited Parallel computer system using a SIMD method
EP0390907B1 (en) * 1988-10-07 1996-07-03 Martin Marietta Corporation Parallel data processor
US5083285A (en) * 1988-10-11 1992-01-21 Kabushiki Kaisha Toshiba Matrix-structured neural network with learning circuitry
US5150328A (en) * 1988-10-25 1992-09-22 Internation Business Machines Corporation Memory organization with arrays having an alternate data port facility
US5150327A (en) * 1988-10-31 1992-09-22 Matsushita Electric Industrial Co., Ltd. Semiconductor memory and video signal processing circuit having the same
FR2639461A1 (fr) * 1988-11-18 1990-05-25 Labo Electronique Physique Arrangement bidimensionnel de points memoire et structure de reseaux de neurones utilisant un tel arrangement
US4890253A (en) * 1988-12-28 1989-12-26 International Business Machines Corporation Predetermination of result conditions of decimal operations
EP0378115B1 (en) * 1989-01-06 1998-09-30 Hitachi, Ltd. Neural computer
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
US5187795A (en) * 1989-01-27 1993-02-16 Hughes Aircraft Company Pipelined signal processor having a plurality of bidirectional configurable parallel ports that are configurable as individual ports or as coupled pair of ports
US5168572A (en) * 1989-03-10 1992-12-01 The Boeing Company System for dynamic selection of globally-determined optimal data path
US5140530A (en) * 1989-03-28 1992-08-18 Honeywell Inc. Genetic algorithm synthesis of neural networks
US5020059A (en) * 1989-03-31 1991-05-28 At&T Bell Laboratories Reconfigurable signal processor
DE69021925T3 (de) * 1989-04-26 2000-01-20 Yamatake Corp Feuchtigkeitsempfindliches Element.
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5073867A (en) * 1989-06-12 1991-12-17 Westinghouse Electric Corp. Digital neural network processing elements
US5422881A (en) * 1989-06-30 1995-06-06 Inmos Limited Message encoding
JPH0343827A (ja) * 1989-07-12 1991-02-25 Omron Corp ファジーマイクロコンピュータ
US5173947A (en) * 1989-08-01 1992-12-22 Martin Marietta Corporation Conformal image processing apparatus and method
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JP2659436B2 (ja) * 1989-08-25 1997-09-30 富士通株式会社 半導体記憶装置
US5140523A (en) * 1989-09-05 1992-08-18 Ktaadn, Inc. Neural network for predicting lightning
US5140670A (en) * 1989-10-05 1992-08-18 Regents Of The University Of California Cellular neural network
DE58908974D1 (de) * 1989-11-21 1995-03-16 Itt Ind Gmbh Deutsche Datengesteuerter Arrayprozessor.
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
JP2559868B2 (ja) * 1990-01-06 1996-12-04 富士通株式会社 情報処理装置
US5067095A (en) * 1990-01-09 1991-11-19 Motorola Inc. Spann: sequence processing artificial neural network
JP3260357B2 (ja) * 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
KR920008271B1 (ko) * 1990-04-03 1992-09-26 정호선 신경회로망을 이용한 부동소수점방식 가산기회로
KR920006322B1 (ko) * 1990-04-03 1992-08-03 정호선 나눗셈기
KR930001024B1 (ko) * 1990-04-03 1993-02-12 정호선 신경회로망을 이용한 제곱근 연산용 집적회로
US5148515A (en) * 1990-05-22 1992-09-15 International Business Machines Corp. Scalable neural array processor and method
US5146420A (en) * 1990-05-22 1992-09-08 International Business Machines Corp. Communicating adder tree system for neural array processor
WO1991019259A1 (en) * 1990-05-30 1991-12-12 Adaptive Solutions, Inc. Distributive, digital maximization function architecture and method
CA2043505A1 (en) * 1990-06-06 1991-12-07 Steven K. Heller Massively parallel processor including queue-based message delivery system
US5182794A (en) * 1990-07-12 1993-01-26 Allen-Bradley Company, Inc. Recurrent neural networks teaching system
US5418915A (en) * 1990-08-08 1995-05-23 Sumitomo Metal Industries, Ltd. Arithmetic unit for SIMD type parallel computer
JPH04107731A (ja) * 1990-08-29 1992-04-09 Nec Ic Microcomput Syst Ltd 乗算回路
US5208900A (en) * 1990-10-22 1993-05-04 Motorola, Inc. Digital neural network computation ring
US5216751A (en) * 1990-10-22 1993-06-01 Motorola, Inc. Digital processing element in an artificial neural network
US5167008A (en) * 1990-12-14 1992-11-24 General Electric Company Digital circuitry for approximating sigmoidal response in a neural network layer
US5164914A (en) * 1991-01-03 1992-11-17 Hewlett-Packard Company Fast overflow and underflow limiting circuit for signed adder
US5175858A (en) * 1991-03-04 1992-12-29 Adaptive Solutions, Inc. Mechanism providing concurrent computational/communications in SIMD architecture
DE69228980T2 (de) * 1991-12-06 1999-12-02 Nat Semiconductor Corp Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5440702A (en) * 1992-10-16 1995-08-08 Delco Electronics Corporation Data processing system with condition code architecture for executing single instruction range checking and limiting operations
US5422805A (en) * 1992-10-21 1995-06-06 Motorola, Inc. Method and apparatus for multiplying two numbers using signed arithmetic
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH0756892A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd マスク付きベクトル演算器を持つ計算機

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103002276A (zh) * 2011-03-31 2013-03-27 Vixs系统公司 多格式视频解码器及与其使用方法
CN103002276B (zh) * 2011-03-31 2017-10-03 Vixs系统公司 多格式视频解码器及解码方法
CN108228238B (zh) * 2016-12-22 2023-07-28 英特尔公司 用于确定具有多个数据元素的数据集合中的最小的两个值的方法及装置
CN108228238A (zh) * 2016-12-22 2018-06-29 英特尔公司 用于确定两个最小值和两个最大值的处理器指令
CN107423816A (zh) * 2017-03-24 2017-12-01 中国科学院计算技术研究所 一种多计算精度神经网络处理方法和系统
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN111656367A (zh) * 2017-12-04 2020-09-11 优创半导体科技有限公司 神经网络加速器的系统和体系结构
CN108153190A (zh) * 2017-12-20 2018-06-12 福建新大陆电脑股份有限公司 一种人工智能微处理器
CN109416757B (zh) * 2017-12-29 2022-05-03 深圳市大疆创新科技有限公司 用于处理数值数据的方法、设备和计算机可读存储介质
CN109416757A (zh) * 2017-12-29 2019-03-01 深圳市大疆创新科技有限公司 用于处理数值数据的方法、设备和计算机可读存储介质
CN110609706A (zh) * 2019-06-13 2019-12-24 眸芯科技(上海)有限公司 配置寄存器的方法及应用
CN112241613A (zh) * 2019-07-19 2021-01-19 瑞昱半导体股份有限公司 检测电路的引脚关联性的方法及其计算机处理系统
CN112241613B (zh) * 2019-07-19 2023-12-29 瑞昱半导体股份有限公司 检测电路的引脚关联性的方法及其计算机处理系统
CN113033789A (zh) * 2019-12-24 2021-06-25 中科寒武纪科技股份有限公司 用于保序的总线系统、集成电路装置、板卡及保序方法
CN113033789B (zh) * 2019-12-24 2024-03-26 中科寒武纪科技股份有限公司 用于保序的总线系统、集成电路装置、板卡及保序方法

Also Published As

Publication number Publication date
TW280890B (zh) 1996-07-11
US5790854A (en) 1998-08-04
EP0619557A3 (en) 1996-06-12
JP2006012182A (ja) 2006-01-12
US5572689A (en) 1996-11-05
CN1080906C (zh) 2002-03-13
US5734879A (en) 1998-03-31
US5754805A (en) 1998-05-19
JPH0773149A (ja) 1995-03-17
EP0619557A2 (en) 1994-10-12
US5664134A (en) 1997-09-02
US5598571A (en) 1997-01-28
US5737586A (en) 1998-04-07
US6085275A (en) 2000-07-04
US5559973A (en) 1996-09-24
US5537562A (en) 1996-07-16
US5600811A (en) 1997-02-04
US5752074A (en) 1998-05-12
US5805874A (en) 1998-09-08
US5600846A (en) 1997-02-04
KR940022257A (ko) 1994-10-20
US5706488A (en) 1998-01-06
US5717947A (en) 1998-02-10
US5548768A (en) 1996-08-20
US5742786A (en) 1998-04-21

Similar Documents

Publication Publication Date Title
CN1080906C (zh) 一种数据处理系统及其方法
CN1117316C (zh) 采用多个向量寄存器组的单指令多数据处理方法及其装置
CN1112635C (zh) 多媒体信号处理器中的单指令多数据处理方法及其装置
CN1217262C (zh) 假想分支目标地址高速缓存中置换目标地址的装置及方法
CN1260646C (zh) 附有第二预测装置的假想分支目标地址高速缓存
CN1163833C (zh) 数据处理系统以及在数据处理系统中执行交互操作的方法
CN1246772C (zh) 处理器
CN1135468C (zh) 对存储设备中信号数据字执行数字信号处理的方法和装置
CN1260645C (zh) 假想混合分支方向预测装置和方法
CN1103961C (zh) 协处理器的数据访问控制装置和方法
CN1257452C (zh) 假想分支目标地址高速缓存分支的装置、系统及方法
CN1062426A (zh) 归约处理器
CN1399736A (zh) 用于处理器的转移指令
CN1890630A (zh) 在寄存器和存储器之间移动数据的数据处理设备和方法
CN1584824A (zh) 一种基于cisc结构的微处理器构架及指令实现方式
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1269030C (zh) 高速缓存的快取线选取目标地址的装置及方法
CN1047407A (zh) 在数据处理系统提供附加系统特性的方法和装置
CN1862485A (zh) 数字信号处理器
CN1279435C (zh) 数字信号处理器
CN1993673A (zh) 数据处理装置、数据处理程序及记录了数据处理程序的记录介质
CN1152300C (zh) 多媒体信号处理器中的单指令多数据处理方法及其装置
CN1254740C (zh) 使用协处理器的数据处理
CN1104679C (zh) 数据处理装置和数据处理方法
CN1103467C (zh) 宏指令集对称式并行体系结构微处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: FREEDOM SEMICONDUCTORS CO.

Free format text: FORMER OWNER: MOTOROLA, INC.

Effective date: 20040813

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20040813

Address after: Texas in the United States

Patentee after: FreeScale Semiconductor

Address before: Illinois, USA

Patentee before: Motorola, Inc.

C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee