CN1320236A - 带算术逻辑单元和堆栈的数据处理器 - Google Patents

带算术逻辑单元和堆栈的数据处理器 Download PDF

Info

Publication number
CN1320236A
CN1320236A CN00801715A CN00801715A CN1320236A CN 1320236 A CN1320236 A CN 1320236A CN 00801715 A CN00801715 A CN 00801715A CN 00801715 A CN00801715 A CN 00801715A CN 1320236 A CN1320236 A CN 1320236A
Authority
CN
China
Prior art keywords
instruction
data
processor
mcp
storehouse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN00801715A
Other languages
English (en)
Other versions
CN1160620C (zh
Inventor
M·杜兰顿
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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
Priority claimed from US09/333,633 external-priority patent/US6405301B1/en
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1320236A publication Critical patent/CN1320236A/zh
Application granted granted Critical
Publication of CN1160620C publication Critical patent/CN1160620C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

一种包含一个与一个堆栈装置(STCK)协作的算术逻辑单元(ALU)的处理器,处理器被安排得能执行包含分别用于控制堆栈装置(STCK)和算术逻辑单元(ALU)的一个堆栈控制域(SCF)和一个操作码域(OPF)的指令(INSTR)。

Description

带算术逻辑单元和堆栈的数据处理器
本发明涉及通过与堆栈装置协作的算术逻辑单元进行数据处理。本发明例如可以应用于包含一个以处理器为形式的、向各种功能单元提供控制数据的控制器的多媒体产品。
算术逻辑单元(ALU)一般对两个输入数据(也称操作数)执行运算,以便获得输出数据。ALU执行的操作一般由以位串为形式的,也称作微代码的指令定义。指令能使ALU执行算术运算,例如加法:Z=X+Y,其中X和Y代表输入数据,Z代表输出数据。指令也能使ALU执行逻辑运算,例如AND、OR、NAND或NOR函数。
ALU可以与堆栈协作。堆栈是存储单元的集合体,每个存储单元能容纳数据。将马上要被ALU处理的输入数据暂存在堆栈中。也可以将ALU的输出数据暂存在堆栈中。堆栈指针一般指示构成堆栈顶的存储单元。在堆栈上放置的数据一般被写入堆栈顶,从堆栈移出的数据一般也从堆栈顶读取。以下将向堆栈写入数据和从堆栈读出数据称为压进(pushing)和弹出(popping)。一般来说,ALU的输入数据是通过从堆栈弹出数据而获得的,输出数据是通过向堆栈压进数据而存储的。按这种方式运行的处理器,在公布号为WO95/30954的国际申请中被称作基于堆栈的处理器。
本发明的一个目的是便于降低成本。
本发明考虑到以下各方面。在基于堆栈的处理器中,基本上执行两类操作。第一,ALU执行算术和逻辑运算。第二,操作堆栈,以便向ALU施加预定输入数据。
为每个不同的算术和逻辑运算以及为每个不同的栈处理(stackmanipulation)定义一个特定指令是可能的。如果那样,就可以把基于堆栈的处理器编程得能例如通过下列的指令序列来处理数据。第一,使堆栈向ALU施加预定数据的栈处理指令-例如弹出(pop)指令。第二,使ALU执行算术或逻辑运算的指令-例如加法指令。第三,使算术或逻辑运算的结果被存储到堆栈中的栈处理指令-例如压进(push)指令。
不同算术逻辑运算的数量可能显著地多于不同的栈处理的数量,或者相反。这意味着定义栈处理的指令的编码位数能比定义算术或逻辑运算的指令的编码位数少,或者相反。就是说,定义栈处理的指令的长度能比定义算术或逻辑运算的指令的长度短,或者相反。用可变长度的指令编码不同类型的指令具有的优点是,比较小的存储器就足够存储一个指令集,例如程序。
然而,要使处理器适合执行可变长度的指令,一般要求有比较贵的硬件。这些成本一般要超过用较小的存储器存储指令的成本优势。因此一般来说,如果指令具有固定长度,成本-效益比会更有益。不过,如果那样,用于存储这些指令的存储器的使用效率就不高。例如,假设有16种不同的算术逻辑运算和4种不同的栈处理。这意味着一条定义栈处理的指令的编码位可能比一条定义算术或逻辑运算的指令的编码位少两位。实际上,每个栈处理指令要浪费两个存储位。
按照本发明,将处理器安排得能执行包含分别用于控制堆栈装置和算术逻辑单元的一个堆栈控制域和一个操作码域的指令。
于是,就有可能在一条指令中定义一个算术或逻辑运算以及一个栈处理。因此,这种指令可以具有固定的长度,而对于几乎每个指令来说,构成该指令的所有位以一种方式或另一种方式影响在处理器中执行的操作。因此,一个这种指令的集合将包含很少的不影响数据处理器操作的位,或者根本就不含有这种位。因此,与有(一方面用于算术和逻辑运算,另一方面用于栈处理的)不同的固定长度的指令的指令集相比,存储这种指令的集合将需要更小的存储器。因此,本发明便于降低成本。
本发明的这些和其它方面将在以下参照各附图进行的说明中得到明确的阐述。
图1是表示如权利要求1中所述的本发明基本特征的示意图;
图2是表示按照本发明的多媒体设备的例子的框图;
图3是表示图2中所示的多媒体设备中一个视频输出单元的程序设计方案的矩阵;
图4是表示视频输出单元必须向显示设备提供的帧(frame)的示意图;
图5是表示提供给视频输出单元中的主控处理器的一系列主要指令的流程图;
图6是表示主控处理器的一个实现的框图;
图7是表示主控处理器的各种指令类型与这些指令中含有的位之间的关系的图;
图8是表示主控处理器执行指令的方式的图。
以下说明涉及标注符。在所有附图中,相同的实体由相同的标注字母标明。一个图中可能会出现几个相似的实体。在这种情况下,标注字母上增加数字或后缀,以便区分相似的实体。为了方便,可以省略这种数字或后缀,如果其值不重要(无关紧要值),可以用星号代替。这适用于说明书,也适用于权利要求。
图1表示了本发明的基本特征。数据处理器包含一个与一个堆栈装置STCK协作的算术逻辑单元ALU。处理器被安排得能执行包含分别用于控制堆栈装置STCK和算术逻辑单元ALU的一个堆栈控制域SCF和一个操作码域OPF的指令。
可以将图1中所示的特征应用于一个构成多处理器装置(例如多媒体设备)一部分的控制处理器。该控制处理器执行一个指令集,使控制处理器向多处理器装置中包含的各种处理器施加控制数据。该指令集可以全部或部分地包含在内部程序存储器中。
图2表示一例体现前文所述的图1中所示特征的多媒体设备。该多媒体设备处理包含编码视频数据的输入数据IN,其中一个目的是提供一个适合在显示设备上显示的视频数据流VDS。多媒体设备包含主接口MIF、主总线HWY、中央处理单元CPU、主指令寄存器REG和各种主处理器。图中显示了两个主处理器:视频解码器VDEC和视频输出单元HDVO。视频输出单元HDVO包含主控制处理器MCP和下列数据处理部件:接口IF、读纵横器(crossbar)XB/R、写纵横器XB/W、存储块MB、处理器P和流出(streaming-out)电路SO。流出电路SO包含缓冲器BUF、多路转换器MUX和控制器CON。每个数据处理部件有一个控制寄存器。控制寄存器在图2中未予示出,它们具有图3中所示的结构。就是说,控制寄存器包含一个前端寄存器和一个影子寄存器。
多媒体设备基本按如下方式操作。中央处理单元CPU通过主指令字控制多媒体设备的各种部件。主接口MIF例如从一个外部主存储器提取输入数据IN。该存储器在图2中未予示出。视频解码器VDEC解译输入数据IN中含有的编码的视频数据。相应地获得解码的视频数据,可以将解码的视频数据暂存在该外部主存储器中。视频输出单元HDVO可以将解码的视频数据进行改编,在一个特定的显示设备上显示。另外,该视频输出单元HDVO可以将该解码的视频数据与其它视频数据组合起来,提供诸如画中画或混合(blending)等特征功能。
现在将更详细地解释视频输出单元HDVO的操作。视频输出单元HDVO交替地执行设置步骤和处理步骤。在设置步骤中,主控处理器MCP向数据处理部件的控制寄存器传送一条装载(load)命令。前文提到过,每个控制寄存器都包含如图3中所示的前端寄存器和影子寄存器。所以,影子寄存器根据该装载命令装载前端寄存器中含有的指令字。于是,该指令字将决定在紧接在设置步骤之后的处理步骤期间有关数据处理部件的操作。例如,装载在纵横器XB/W和纵横器XB/R的影子寄存器中的指令字决定作为一方的各存储块MB与作为另一方的接口IF、流出电路SO和各处理器P之间的连接。控制寄存器在其影子寄存器已经装载指令字时向主控处理器MCP传送一个设置完成信号。主控处理器MCP在接收到所有数据处理部件的控制寄存器的设置完成信号时向处理器P传送一个开始处理信号。该开始处理信号标志处理步骤的开始。
在处理步骤中,每个处理器处理在与该处理器P连接的存储块MB中存储的一定数量的象素。一个处理器P在处理步骤中处理的象素数不超过256。要处理的象素数,例如可以由指令字定义。在各处理器P处理象素的同时,主控处理器MCP可以通过向数据处理部件的前端寄存器写入新的指令字而构造(compose)新的VLIW。一旦一个处理器P完成了它的数量的象素,它将停止处理,并向主控处理器MCP传送一个操作结束信号。处理步骤在所有处理器都向主控处理器MCP传送过操作结束信号时结束。作为响应,主控处理器MCP将执行一个新的设置步骤。
相应地,视频输出单元HDVO以按块(block-wise)方式处理解码的视频数据。例如,在第1个处理步骤中,接口IF通过写纵横器XB/W将一个256个象素的块写入存储块MB1。在第2个处理步骤中,处理器P1从存储块MB1中读出该块256个象素并处理之。处理器P1可以是-例如-一个对属于同一行的几个象素进行加权组合的水平视频过滤器。相应地,处理器P1提供一块水平过滤过的象素,并将这块写入存储块MB2。在第3个处理步骤中,处理器P2从存储块MB2中读出经过处理的该块水平过滤过的象素并处理之。处理器P2可以是一例如-一个对属于相邻行的对应象素进行加权组合的垂直视频过滤器。如果垂直过滤过的象素块属于一行,处理器P2将读取属于相邻各行的其它各块垂直过滤过的象素。相应地,处理器P2提供一块水平和垂直过滤过的象素,并将这块写入存储块MB3。可以有进一步的各处理步骤,在这些处理步骤中,处理器P3和P4其中之一或者一起进一步处理在存储块MB3中含有的这块水平和垂直过滤过的象素。举例来说,假设这块水平和垂直过滤过的象素已经准备好构成视频数据流VDS的一部分。于是,在第4处理步骤中,将把有关的块从存储块MB3传输到流出电路SO的缓冲器BUF。
流出电路SO一般以每个处理步骤接收一块处理过的象素,并将该块象素存储在其缓冲器BUF中。流出电路SO从其缓冲器BUF读出用于提供视频数据流VDS的该处理过的象素。控制器CON知道所希望的视频数据流VDS的格式-例如行频、场频(field frequency)、每行象素数、每场行数。控制器CON使处理过的象素在适当的时刻并由此以所希望的速率被从缓冲器BUF读出。控制器CON进一步控制接收象素和若干控制信号(诸如水平同步信号HS和垂直同步信号VS)的多路转换器MUX。相应地,在适当时刻将适当的控制信号***象素之间。
实际上,视频输出单元HDVO就是一个由数据处理部件-接口IF、读纵横器XB/R、写纵横器XB/W存储块MB、处理器P和流出电路SO-组成的数据处理链。主控处理器MCP决定该数据处理链的构成。它也决定该链中每个部件的数据处理特性。主控处理器MCP是通过向数据处理部件的控制寄存器写入适当的指令字而进行这些决定的。从某种意义上讲,可以把主控处理器MCP看作是一个有各种机器的生产车间(production hall)的工长(foreman)。生产车间相当于视频输出单元HDVO,机器相当于视频输出单元HDVO中的数据处理部件。工长组织生产线并指令生产线中的机器做什么。生产线相当于数据处理链。
假设视频输出单元HDVO必须把一个视频信号针对每帧行数和每行象素数从一种格式转换成另一种格式。这可以通过一个包含适当的水平和垂直过滤的数据处理链来完成。在格式转换的开始,数据处理链先要充满象素,才能全程运转。格式转换结束时,数据处理链必须被清空,才能停止并分解如初。
例如,当要作转换的视频信号的第一块象素被传送到视频输出单元HDVO时,只有哪些位于数据处理链的开始的数据处理部件应当是有作用的。此时,存储块MB尚未充满该帧的象素。随着每个处理步骤将有越来越多的存储块被象素填充,越来越多的数据处理部件变得有作用。这一直继续到数据处理链中的每个存储块MB充满象素为止。于是,数据处理链全程运转,流出电路SO就能开始提供象素。
图3表示视频输出单元HDVO的程序设计方案。图3是个矩阵。该矩阵的列代表数据处理部件。更具体来说,一个列代表有关数据处理部件的一个影子寄存器。矩阵的行代表处理步骤PS。矩阵的元素代表指令字。一个VLIW是属于矩阵的某行的元素的合成,就是说,VLIW是某处理步骤PS的指令字的合成。VLIW定义有关数据处理部件应当并行执行的操作。
主控处理器MCP可以以各种方式构成VLIW。例如,主控处理器MCP可以通过向每个控制寄存器写入一个指令字而为特定的处理步骤构造一个VLIW。然而,主控处理器MCP也可以通过向一个或多个特定的控制寄存器写入指令字而构造一个VLIW,而它不向其它控制寄存器写入指令字。后一类控制寄存器保留它们在前面的处理步骤中含有的指令字。
图3所示的矩阵可对应于例如一个帧的显示。处理步骤[PS1]是为了显示一帧而要执行的第1个处理步骤,处理步骤[PSN]是最后一个处理步骤。例如,假设一帧有700行,每行1024个象素。进一步假设,在一个处理步骤中,通常向流出电路SO传送256个输出象素。这意味着视频信号中每行通常有4个处理步骤PS,因此,每帧有4×700个处理步骤,即每帧2800个处理步骤:N=2800。
头几个处理步骤PS构成一帧的显示的初始化阶段,后几个处理步骤PS构成结束阶段。如前文所解释的那样,要逐步地对处理链填充和清空。这意味着,在初始化阶段和结束阶段中,至少有一个数据处理部件在一个处理步骤中的指令字被后继处理步骤中的不同指令字替换。这进而意味着,在初始化阶段和结束阶段中,每个处理步骤将有一个不同的VLIW。在初始化阶段与结束阶段之间的处理步骤可能也需要各种不同的VLIW。如果在整个帧中使用相同的处理链,在初始化阶段与结束阶段之间的全部处理步骤中就能使用一个VLIW。例如当视频输出单元HDVO只要把一个视频信号从一种格式转换成另一种格式时,情况可能就是这样。
图4表示视频输出单元HDVO必须向显示设备传送的帧。该帧由一个在其中***一个子图象SPIG的主图象MPIC构成。图4进一步显示了帧中的不同帧区FZ1-FZ6。对于要由图2中所示的主控处理器MCP执行的控制操作每个帧区FZ涉及一个特定阶段。
在帧区FZ1中,主控处理器MCP为主图象MPIC的显示而建立一个处理链。在帧区FZ2中,主控处理器MCP保持后面的处理链。帧区FZ2含有X行-X是整数。在帧区FZ3中,主控处理器MCP分解用于显示主图象MPIC的处理链,建立一个用于显示主图象MPIC和其中***的子图象的处理链。在帧区FZ4中,主控处理器MCP保持后面的处理链。帧区FZ4含有Y行-Y是整数。在帧区FZ5中,主控处理器MCP分解用于显示主图象MPIC和其中***的子图象的处理链,再次建立一个用于显示主图象MPIC的处理链。在帧区FZ6中,主控处理器MCP保持后面的处理链。帧区FZ6含有Z行-Z是整数。
图5表示一系列向主控处理器MCP传送的主指令MI1-MI8以便它执行前文所述的控制操作。主指令MI1使主控处理器MCP执行一个在内部存储器中存储的子例程STRT_MAIN。主指令MI1例如可以是子例程STRT_MAIN的起始地址。子例程STRT_MAIN的执行,生成一系列用于帧区FZ1中所包含的处理步骤的VLIW。对于每个处理步骤,生成一个不同的VLIW,将其传送到视频输出单元HDVO的数据处理部件。该VLIW系列使用于显示主图象的处理链按处理步骤逐步地被建立。
主指令MI2使主控处理器MCP连续X次执行子例程MAIN:X×MIAN。子例程MAIN的执行,生成一个用于在一行中所包含的处理步骤的VLIW。于是,该VLIW被应用于整个帧区FZ2中。它使数据处理部件执行显示主图象MPIC所需的处理。
主指令MI3使主控处理器MCP执行子例程END_MAIN。子例程END_MAIN的执行,生成一系列用于帧区FZ3的上部中所包含的处理步骤的VLIW。对于每个处理步骤,生成一个不同的VLIW,将其传送到视频输出单元HDVO的数据处理部件。该VLIW系列使用于显示主图象的处理链按处理步骤逐步地被分解。
主指令MI4使主控处理器MCP执行子例程STAR_PIP。子例程STAR_PIP的执行,生成一系列用于帧区FZ3的下部中所包含的处理步骤的VLIW。对于每个处理步骤,生成一个不同的VLIW,将其传送到视频输出单元HDVO的数据处理部件。该VLIW系列使用于显示主图象和其中***的子图象SPIC的处理链按处理步骤逐步地被建立。
主指令MI5使主控处理器MCP连续Y次执行子例程PIP:Y×PIP。子例程PIP的执行,生成一个用于在一行中所包含的处理步骤的VLIW。于是,该VLIW被应用于整个帧区FZ4中。它使数据处理部件执行显示主图象MPIC和其中***的子图象SPIC所需的处理。
主指令MI6使主控处理器MCP执行子例程END_PIP。子例程END_PIP的执行,生成一系列用于帧区FZ5的上部中所包含的处理步骤的VLIW。对于每个处理步骤,生成一个不同的VLIW,将其传送到视频输出单元HDVO的数据处理部件。该VLIW系列使用于显示主图象和其中***的子图象SPIC的处理链按处理步骤逐步地被分解。
主指令MI7使主控处理器MCP执行子例程STRT_MAIN,该子例程已经在前文作过说明。主指令MI8使主控处理器MCP连续Z次执行子例程MAIN:Z×MIAN。子例程MAIN已经在前文作过说明。
前面提到过,从某种意义上讲,可以把主控处理器MCP看作是一个有各种机器的生产车间的工长。生产车间相当于视频输出单元HDVO,机器相当于视频输出单元HDVO中的数据处理部件。按照这种比喻,可以把主指令MI看作是工长从厂长接受的生产命令。工长把生产命令翻译成机器指令。同时执行的-因此就是并行执行的-一组指令,相当于一个VLIW。
可以把主指令MI1看作是一条启动产品A的生产线的命令。可以把主指令MI2看作是一条在该生产线上生产产品A的X个样品的命令。可以把主指令MI3和MI4看作是停止产品A的生产线并启动产品B的生产线的命令。可以把主指令MI5看作是一条在该生产线上生产产品B的Y个样品的命令,如此等等。
图6表示图2中所示主控处理器MCP的一个实现。主控处理器MCP通过也在图2中显示的主总线HWY与视频输出单元HDVO外部的部件通信。例如,主控处理器MCP可以通过主总线HWY接收主指令。主控处理器MCP通过控制总线CBUS与视频输出单元HDVO中的数据处理部件通信。例如,主控处理器MCP可以通过控制总线CBUS向数据处理部件发送指令字。主控处理器MCP进一步能通过连接XC从视频输出单元HDVO中的存储块MB接收数据或向视频输出单元HDVO中的存储块MB发送数据。
主控处理器MCP包含主总线接口HWYINT,控制总线接口CBUSINT,算术逻辑单元ALU,一组包含程序计数器PC在内的寄存器REG,一组中断单元IU,计算堆栈CSTCK,返回堆栈RSTCK,程序存储器PMEM,数据存储器DMEM和直接存储器存取电路DMAC。计算堆栈CSTCK和返回堆栈RSTCK各有一个堆栈指针。堆栈指针定义在有关堆栈中的各个存储单元的位置。下文将把计算堆栈中的堆栈顶位置和堆栈第二位置分别称作TOS和SOS,把返回堆栈RSTCK中的堆栈顶位置和堆栈第二位置分别称作TOR和SOR。
主控处理器MCP基本上按下述方式运行。程序计数器PC含有一个一般按每个时钟周期递增的程序计数值。通过向程序计数器写入新的程序计数值可以改变程序计数值。程序计数值构成其中存储着主控处理器MCP的指令的程序存储器PMEM的一个地址。以下将把这些指令称作MCP指令。MCP指令定义算术逻辑单元ALU执行的操作。它进一步定义如下文将作更详细解释的控制返回堆栈RSTCK和计算堆栈CSTCK的操作。前文所说明的用于生成VLIW的子例程,是由一组MCP指令组成的。
可以按以下方式在程序存储器PMEM中存储一组指令。首先通过主总线HWY把该组指令从多媒体设备外部的源装入存储块MB中。然后通过连接XC把该组指令或其一部分从存储块MB复制到程序存储器PMEM。程序存储器PMEM可以含有几个存储体(bank)。如果是那样,就有可能将指令从存储块MB复制到一个存储体,与此同时,主控处理器MCP执行在另一个存储体中含有的指令。
可以按以下方式在存储块MB中存储一条指令。第一个存储块MB1包含指令的最高有效部分,第二个存储块MB2包含指令的次高有效部分,第三个存储块MB3包含指令的最低有效部分,每个部分例如含有8位。在向程序存储器PMEM传输这些部分时,它们就象以前一样被连接到一起,构成一条含有24位的指令。应当注意到,可以在存储待处理数据的存储块以外另有存储指令的存储块MB。就是说,多媒体设备可以包含若干组存储块(例如,一组用于数据,另一组用于控制),每组存储块有其自己的纵横器。
以下是一例MCP指令的语义。一条MCP指令包含24位:b23-b0。位b23定义MCP指令是无条件的还是有条件的。如果MCP指令的位b23有值0(零),指令是无条件的。无条件的MCP指令总是得到执行。如果MCP指令的位b23有值1(壹),指令是有条件的。有条件的MCP指令仅当某寄存器中的最低有效位有值0(零)时总才得到执行。位b22、b21和b12被用来区分不同类型的MCP指令。任何类型的MCP指令可能是无条件的,也可能是有条件的。如果MCP指令的位b22有值1(壹),该MCP指令是0类型的。0类型指令的作用是将数据写入内部存储单元-存储单元例如可以是寄存器。0类型指令的位b21-b12构成要被写的数据。位b11-b0定义该数据要被写入的存储单元。如果该存储单元的长度大于10位,该数据就被符号扩展(sign-extended)。
如果MCP指令的位b22和b21都是零(0),则MCP指令要么是1类型的,要么是1A类型的。1类型和1A类型的指令的作用是处理数据。如果位b12还有值零(0),则该MCP指令是1类型的指令。1类型的指令的位b11-b0定义一个地址。在该地址下存储的数据构成算术逻辑单元ALU的输入数据。如果位b12有值壹(1),则该MCP指令是1A类型的指令。1A类型的指令的位b11-b0代表数据。该数据构成算术逻辑单元ALU的输入数据。可以将该数据进行符号扩展,形成一个16位二进制字后再传送到算术逻辑单元ALU。
1类型或1A类型的指令包括一个由位b20-b17构成的操作码部分。操作码部分决定算术逻辑单元对输入数据执行哪个处理操作以及在哪里存储这个处理操作的结果的运算。结果或者写入TOS,或者写入程序计数器PC。1类型的指令有16种不同的运算,1A类型的指令也有16种不同的运算。例如,一个运算是对输入数据和TOS的内容进行AND组合并将该AND组合的结果写入TOS。其它运算可以进行NOR、XOR、NAND、OR、XNOR组合。
如果MCP指令的位b22有值零(0),b21有值壹(1),则该MCP指令是2类型的。2类型的指令的作用是传输数据。2类型的指令包含由位b20-b17构成的传输-控制部分。传输-控制部分定义要被传输的数据的源和目的地。更具体来说,位b18-b17定义源,位b20-b19定义数据的目的地地址。有四个数据源:TOS、SOS、TOR或程序计数器PC。有四个目的地地址:TOS的内容、SOS的内容、MCP指令本身的位b11-b0附加下标值(index value)、MCP指令本身的位b11-b0不带下标值。
0类型、1类型和1A类型的指令主要的作用是为图2中所示的视频输出单元HDVO中的数据处理部件生成指令字。2类型的指令的作用主要是传输如此生成的指令字,以控制数据处理部件的寄存器。后一种MCP指令可以说是输出(export)MCP指令。
1类型、1A类型和2类型的MCP指令包含一个由位b16-b13构成的堆栈控制部分。计算堆栈CSTCK依据位b16-15而受控制。返回堆栈RSTCK依据位b14-13而受控制。有四个对应于计算堆栈CSTCK的控制操作和四个对应于返回堆栈RSTCK的控制操作。b16-15和b14-13的值各决定执行相应的四个控制操作中的哪一个。
图7表示上文所述各种类型的MCP指令与这些指令中含有的位b23-b21和b12之间的关系。图7中用标注字母来代表各种类型的MCP指令:UNCOND代表无条件指令,COND代表条件指令,TP0、TP1、TP1A和TP2分别代表0类型、1类型、1A类型和2类型的指令。图7进一步包含指示后四种MCP指令的类型的标注字母。0类型指令的作用是写数据:WRT。1类型指令的作用是从内部存储器读数据并处理该数据:RD&PROC。1A类型指令的作用是处理指令中含有的数据,就是说,它的作用是直接地处理数据:IPROC。2类型指令的作用是传输数据:TRNSFR。图7进一步包含指示操作码部分的标注字母OPC,指示传输-控制部分的标注字母WOPC和指示堆栈-控制部分的标注字母STC。
如前文所述,位b16、b15为计算堆栈CSTCK定义四种控制操作。有Nop、Cpy、Psh和Pop控制操作。Nop控制操作不修改计算堆栈CSTCK。Cpy控制操作把TOS的内容复制到SOS。这种复制在算术逻辑单元执行该指令之前完成。Psh控制操作递增堆栈指针。其结果是,在指令之前是TOS的存储单元在该指令后变成SOS。在指令之前是TOS的存储单元的内容按缺省被复制到在该指令后是TOS的存储单元。所以,在该指令之前的TOS的内容就是在该指令之后的TOS的内容。然而,如果该指令导致算术逻辑单元向TOS写入数据,在该指令之后的TOS的内容就将是该数据。Pop控制操作递减堆栈指针。其结果是,在该指令之前是SOS的存储单元,在该指令后变成TOS。
如前文所述,位b14、b13为返回堆栈RSTCK定义四种控制操作。有Rnop、Rpc、Rpsh和Rpop控制操作。Rnop控制操作不修改返回堆栈RSTCK。Rpc控制操作递增堆栈指针。将一个常数值加到程序计数值,然后将相加的结果复制到TOR。常数值是视具体实现而定的。Rpsh控制操作递增堆栈指针。其结果是,在指令之前是TOR的存储单元在该指令后变成SOR。在该指令之前是TOS的存储单元中含有的数据,按缺省被压进到返回堆栈RSTCK上。就是说,在该指令之后的TOR的内容就是在该指令之前的TOS的内容。然而,如果该指令导致算术逻辑单元ALU向TOR写入数据,在该指令之后的TOR的内容就将是该数据。Rpop控制操作递减堆栈指针。其结果是,堆栈中在该指令之前是SOR的存储单元,在该指令后变成TOR。就是说,在该指令之后的TOR的内容就是在该指令前的SOR的内容。
原则上,前文所述的任何与堆栈有关的控制操作,是独立于在1类型和1A类型指令的操作码部分中所定义的操作而执行的。任何与堆栈有关的控制操作,也是独立于在2类型指令的传送控制部分中所定义的数据传输而执行的。因此,多个组合是可能的。
计算堆栈CSTCK和返回堆栈RSTCK二者都按下列规则被控制,在算术逻辑单元ALU执行有关指令之前递增堆栈指针,而之后则递减堆栈指针。因此,如果一个弹出型指令后紧跟一个压进型指令,将使堆栈指针保持不变。如果堆栈控制涉及从一个堆栈位置向另一个复制数据,被复制的数据总是在该指令之前的该堆栈位置中所含有的数据。
当主控处理器MCP执行指令时,可能发生算术逻辑单元ALU想要写入一个堆栈位置而该指令的堆栈控制部分想要写入同一个堆栈位置的情况。假如那样,就有冲突。该冲突因算术逻辑单元ALU有优先权而解决。算术逻辑单元ALU的输出数据被写入有关的堆栈位置。无论如何,堆栈指针要按指令的堆栈控制部分修改,即使在有冲突时也是如此。
有各种方式能实现计算堆栈CSTCK和返回堆栈RSTCK如上文所述地分别根据MCP指令的位b16、b15和位b14、b13而工作。例如,每个堆栈可以由安排成先进后出(FILO)存储器的存储单元构成。这种存储器通常响应一个时钟的正边沿或负边沿而将它含有的数据移动一个位置。数据被移动的方向通常由施加到FILO存储器的控制输入的控制数据定义。用比较简单的逻辑电路一般就足以能由指令中的有关位产生适当的控制数据。
图8表示主控处理器MCP执行指令的方式。图8中,水平方向代表时间,垂直方向代表指令INSTR。一条指令INSTR分8个不同步骤S1-S8执行。每个步骤对应一个时钟周期CC。因此,完全执行一条指令需要8个时钟周期。主控处理器MCP每个时钟周期开始执行一条新指令。所以,在给定的时钟周期,主控处理器MCP并行执行不同的步骤,每个步骤属于一条不同的指令。
在步骤S1,主控处理器MCP提取一条指令。程序计数器就是在该步骤中被读取的。在步骤S2中,指令被解译。就是在这个步骤中,指令译码器根据位b16、b15和b14、b13为构成计算堆栈CSTCK和返回堆栈RSTCK的物理单元生成控制信号。在步骤S3中,从内部存储单元读取算术逻辑单元的输入数据。步骤S4是一个内部数据延迟。在步骤S5中,执行一个如指令中所定义的算术或逻辑运算。在步骤S6中,该算术或逻辑运算的结果被写入一个内部存储单元。正是在该步骤中,TOS实际上被写回。此外,程序计数器被更新。步骤S7是一个延迟。在步骤S8中,能将任何数据有效地施加到把主控处理器MCP连接到多媒体设备中含有的各种数据处理器的控制总线(CBUS)。
主控处理器MCP包含堆栈写所必需的流水线阶段和旁路,使得不增加额外的等待周期就能一个接一个地执行堆栈指令。例如,主控处理器MCP包含一个在算术逻辑单元ALU的输出端和一个输入端之间的数据传输通路,使得能将一个算术或逻辑运算的结果作为一个用于后继的算术或逻辑运算的TOS数据。对返回堆栈采用一个类似的数据通路。
MCP指令可以使图6中所示的直接存储器存取电路DMAC执行一个直接存储器存取会话。在直接存储器存取会话中,直接存储器存取电路DMAC自动地把存储器中的一块指令字传输到图4中所示的视频输出单元HDVO中的各种数据处理部件的控制寄存器。MCP指令为直接存储器存取会话定义一个起始地址和方式。有三种不同的直接存储器存取方式。
在第一种直接存储器存取方式中,直接存储器存取电路DMAC把指令字写入地址连续的控制寄存器序列。该块中的第一个指令字被写入其地址是起始地址的控制寄存器,第二个指令字被写入其地址是起始地址加1的控制寄存器,依此类推。
在第二种直接存储器存取方式中,直接存储器存取电路DMAC首先读一个模板。该模板是一个二进制字,字中的每位对应于地址连续的控制寄存器序列中的一个不同的控制寄存器。该序列从起始地址开始。实际上,直接存储器存取电路DMAC逐位地读模板,把该块的第一个指令字写入对应于第一个被读的、其值为壹(1)的位的控制寄存器,把第二个指令字写入对应于第二个被读的、其值为壹(1)的位的控制寄存器,依此类推。
在第三种直接存储器存取方式中,直接存储器存取电路DMAC在把一个指令字写入一个控制寄存器之前先读出一个偏置值。指令字被写入其地址是上一个被写入的控制寄存器的地址加该偏置值的控制寄存器。该块中的第一个指令字被写入其地址是起始地址加第一个被读的偏置值的控制寄存器。
主控处理器MCP最好用直接存储器存取电路DMAC来构造一个与居先的VLIW非常不同的VLIW,或者在没有居先的VLIW时构造一个VLIW。例如,可以用一个直接存储器存取会话来初始化视频输出单元HDVO。直接存储器存取会话防止主控处理器MCP自身不得不把较多的指令字写入控制寄存器。主控处理器MCP可以说是把这个任务委托给直接存储器存取电路DMAC。直接存储器存取电路DMAC然后将利用控制总线CBUS来把指令字写入控制寄存器。所以,在直接存储器存取会话期间,主控处理器MCP中的其它部件不能访问控制总线CBUS。
主控处理器MCP不需要用直接存储器存取电路DMAC来构造一个与居先的VLIW相似的VLIW。这种相似的VLIW可以通过修改较少几个控制寄存器的内容来构造。主控处理器MCP然后可以把新的指令字直接地写入适当的控制寄存器。
所以,从程序设计的角度看来,有两种构造VLIW的技术。第一种技术是使用一个或多个使主控处理器MCP把新的指令字写入特定控制寄存器的MCP指令。该技术最好被用于构造相似的VLIW。第二种技术是使用一个使主控处理器MCP启动一个直接存储器存取会话的MCP指令。该技术最好被用于构造一个与居先的VLIW非常不同的VLIW,或者用于初始化视频输出单元HDVO。
至此以前的附图和说明是为了解释而不是限制本发明。在后附的权利要求的范围显然有许多可选择的方案。兹就此作下述结语。
图1所示的指令字构造软件IWCS,例如可以包含在存储器中。指令字可能在工厂中就已经被写入存储器。然而,也可能用户把指令字构造软件IWCS从某信息载体复制到存储器。相应地,用户能使图1中所示的数据处理设备PDA执行某功能。含有指令字构造软件IWCS的信息载体例如可以是个软盘。指令字构造软件也能通过诸如因特网的通信网络而提供。
在物理上将各功能或功能部件分布于各种单元的方式有多种多样。就此而言,各附图是非常概略的,每幅附图只代表本发明的一个可能的实施例。因此,各附图以不同的方框的形式表示不同的功能部件,然而这决不排除有些功能部件或全部功能部件是作为一个物理单元而实现的。
权利要求中的标注符不应被解释为是对该权利要求的限定。

Claims (4)

1.一个包括一个与一个堆栈装置协作的算术逻辑单元的处理器,其中该处理器被安排得能执行包括分别用于控制堆栈装置和算术逻辑单元的一个堆栈控制域和一个操作码域的指令。
2.如权利要求1中所要求的处理器,其中,堆栈装置包括一个计算堆栈和一个返回堆栈,堆栈控制域包括一个用于控制计算堆栈的计算堆栈子域和一个用于控制返回堆栈的返回堆栈子域。
3.一种包括多个数据处理器和一个控制处理器的多媒体设备,用于根据控制处理器中包含的、含有分别用于控制一个堆栈装置和一个算术逻辑单元的一个堆栈控制域和一个操作码域的指令,向该多个数据处理器提供控制数据。
4.一种用于包括一个与一个堆栈装置协作的算术逻辑单元的处理器的计算机程序产品,该计算机程序产品包括当指令被处理器执行时分别用于控制该堆栈装置和该算术逻辑单元的一个堆栈控制域和一个操作码域的指令。
CNB008017158A 1999-06-15 2000-06-13 带算术逻辑单元和堆栈的数据处理器 Expired - Fee Related CN1160620C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/333,633 1999-06-15
US09/333,633 US6405301B1 (en) 1999-06-15 1999-06-15 Parallel data processing
US09/493,960 2000-01-28
US09/493,960 US6542989B2 (en) 1999-06-15 2000-01-28 Single instruction having op code and stack control field

Publications (2)

Publication Number Publication Date
CN1320236A true CN1320236A (zh) 2001-10-31
CN1160620C CN1160620C (zh) 2004-08-04

Family

ID=26988826

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008017158A Expired - Fee Related CN1160620C (zh) 1999-06-15 2000-06-13 带算术逻辑单元和堆栈的数据处理器

Country Status (7)

Country Link
US (1) US6542989B2 (zh)
EP (1) EP1104559A1 (zh)
JP (1) JP2003501773A (zh)
KR (1) KR100765567B1 (zh)
CN (1) CN1160620C (zh)
TW (1) TW479196B (zh)
WO (1) WO2000077623A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107478B2 (en) * 2002-12-05 2006-09-12 Connex Technology, Inc. Data processing system having a Cartesian Controller
US7069386B2 (en) * 2001-08-10 2006-06-27 Connex Technology, Inc. Associative memory device
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
CN101371264A (zh) * 2006-01-10 2009-02-18 光明测量公司 用于在并行处理***中处理多媒体数据的子块的方法和装置
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US8595473B2 (en) * 2010-10-14 2013-11-26 Via Technologies, Inc. Method and apparatus for performing control of flow in a graphics processor architecture

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043870A (en) * 1982-02-24 1991-08-27 At&T Bell Laboratories Computer with automatic mapping of memory contents into machine registers during program execution
US5522051A (en) 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
WO1994015280A2 (en) * 1992-12-18 1994-07-07 European Institute Of Technology Computer architecture for parallel data transfer in declarative computer languages
GB9409148D0 (en) 1994-05-09 1994-06-29 Secr Defence Data cache
WO1997009679A1 (en) * 1995-09-01 1997-03-13 Philips Electronics North America Corporation Method and apparatus for custom processor operations
ATE244417T1 (de) 1996-11-13 2003-07-15 Paran Arik Echtzeitprogramm-sprachbeschleuniger
US6009509A (en) * 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US6134573A (en) * 1998-04-20 2000-10-17 Ip-First, L.L.C. Apparatus and method for absolute floating point register addressing

Also Published As

Publication number Publication date
KR20010072491A (ko) 2001-07-31
US20030033503A1 (en) 2003-02-13
KR100765567B1 (ko) 2007-10-09
JP2003501773A (ja) 2003-01-14
EP1104559A1 (en) 2001-06-06
WO2000077623A1 (en) 2000-12-21
CN1160620C (zh) 2004-08-04
TW479196B (en) 2002-03-11
US6542989B2 (en) 2003-04-01

Similar Documents

Publication Publication Date Title
CN1160620C (zh) 带算术逻辑单元和堆栈的数据处理器
CN110149802B (zh) 用于在虚拟图像处理器指令集架构(isa)与具有二维移位阵列结构的目标硬件之间进行转译的编译器
CN1148647C (zh) 数据处理***及其控制方法
US11080227B2 (en) Compiler flow logic for reconfigurable architectures
CN109690475A (zh) 用于转移操作的硬件加速器和方法
TWI236616B (en) Storing stack operands in registers
WO2013054468A1 (ja) 転置演算装置とその集積回路、および転置処理方法
CN117724763A (zh) 用于矩阵操作加速器的指令的装置、方法和***
CN109992304A (zh) 用于加载片寄存器对的***和方法
JP2021057004A (ja) 行列演算アクセラレータの命令のための装置、方法、及びシステム
WO2010086871A1 (en) A modularized micro processor design
JP4801605B2 (ja) Simd型マイクロプロセッサ
CN1151432C (zh) 包含寄存器堆栈的数据处理器 、数据处理方法以及一种控制器
JP2009282744A (ja) 演算器及び半導体集積回路装置
JP2002063025A (ja) 可変長データ処理用プロセッサ
EP1220091A2 (en) Circuit and method for instruction compression and dispersal in VLIW processors
CN1146785C (zh) 并行数据处理
CN109992303A (zh) 用于将片寄存器对存储到存储器的***和方法
TWI617987B (zh) 實現線速互連結構的方法、電腦系統、與非暫時性電腦可讀取記憶體
US20040193835A1 (en) Table lookup instruction for processors using tables in local memory
US6405301B1 (en) Parallel data processing
JP5292934B2 (ja) メモリ制御装置および情報処理装置
JP2006506727A (ja) コピーレジスタファイルを有するvliw
CN1331043C (zh) 在移动微处理器中支持mmx指令的方法及扩展的微处理器
US20240249127A1 (en) Neural network processing

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: NXP CO., LTD.

Free format text: FORMER OWNER: ROYAL PHILIPS ELECTRONICS CO., LTD.

Effective date: 20070831

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

Effective date of registration: 20070831

Address after: Holland Ian Deho Finn

Patentee after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Patentee before: Koninklike Philips Electronics N. V.

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

Granted publication date: 20040804

Termination date: 20150613

EXPY Termination of patent right or utility model