CN1076378A - 用于电视游戏系统等具有可编程图形处理器的外部存储系统 - Google Patents

用于电视游戏系统等具有可编程图形处理器的外部存储系统 Download PDF

Info

Publication number
CN1076378A
CN1076378A CN92112795A CN92112795A CN1076378A CN 1076378 A CN1076378 A CN 1076378A CN 92112795 A CN92112795 A CN 92112795A CN 92112795 A CN92112795 A CN 92112795A CN 1076378 A CN1076378 A CN 1076378A
Authority
CN
China
Prior art keywords
instruction
register
ram
program
address
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
CN92112795A
Other languages
English (en)
Other versions
CN1048564C (zh
Inventor
杰里米E·桑
本·奇斯
卡尔N·格雷汉姆
彼特R·沃内斯
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.)
A/N Inc
Original Assignee
A/N 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 A/N Inc filed Critical A/N Inc
Publication of CN1076378A publication Critical patent/CN1076378A/zh
Application granted granted Critical
Publication of CN1048564C publication Critical patent/CN1048564C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/203Image generating hardware

Abstract

本发明公开了一种全编程图形微处理器,它配置 在外部存储单元(例如插入式电视游戏卡)中,与配置 于游戏卡上的三总线结构结合使用。该图形协处理 器可执行来自程序ROM,外部RAM或其本身内部 的超高速缓存RAM的程序,具有实现有关3—D图 形算术运算的指令集,例如包括由专用硬件执行将单 个像素标绘在主系统字符映像显示中的指令,建立 “虚拟的”位映像,并与主处理器交互作用使其16个 通用寄存器都可由主处理器存取。

Description

本发明概括地说涉及一种包括其中配备有可编程处理器的独特外部存储单元的信息处理装置。本发明具体地说涉及一种具有程序存储器的可拆卸的外部存储单元,程序存储器存储的程序一部分由主处理系统如电视游戏系统执行,一部分由为增强主系统的高速图形处理能力而设计的可编程微处理器执行。
本专利申请与同时由桑等人提交的申请顺序号为_,_题为“用于电视游戏系统等具有像素至字符变换硬件的可编程图形处理器”的专利申请(代理人案卷号为1248-4),和同时由桑等人提交的申请顺序号为_,_题为“用于电视游戏系统等具有增强的存储器控制电路的图形处理器”的专利申请(代理人案卷号为1248-5)有关。
在电视游戏控制台中配备有8位微处理器和相应的显示处理子系统的已有技术的电视游戏机。一般通过在游戏卡中以8位乘8位方阵形式预先存储字符,并利用这些预先存储的字符的各种可编程组合建立起屏面显示来产生图形。这类已有技术的电视游戏系统一般具有使整个显示背景和游戏者控制的若干“活动目标”或“子画面”移动的能力。
这类已有技术的系统不能实现这样的电视游戏:在这些游戏中包含由多边形组合构成的活动目标,而且这些目标必须能被操纵(如旋转)并在每帧“重新绘制”。例如,这类系统中的已有技术的8位处理器和相关的显示处理电路无法进行所需的运算来使三维的、基于多边形的目标有效地旋转或使这类旋转的目标合适地缩放以产生3-D型特殊效果。本申请发明人认识到精致的图形需要逐个像素地更新屏面和在实时基础上完成复杂的数学运算。这类已有技术的基于字符的电视游戏机是无法完成这些任务的。
已有技术的8位电视游戏机也不能有效地完成需要逐个像素地迅速更新屏面的其他图形技术。例如,这类系统无法有效地在三维空间使一个目标映像到作为另一个显示目标一部分显示的多边形上(此后称为质地映像(texture  mapping))。
为了超过已有技术的8位机器的图形能力,电视游戏系统已被设计成采用功能更强的16位处理器。这类16位处理器可为电视游戏系统提供处理更精致的图形所需的数学机能。例如,这些系统可生成更高级的彩色和得到更好的图形分辨率。这类16位电视游戏机是基于字符的系统,能够实现可预先绘制成基于字符或子画面的图形的多种电视游戏。这类16位电视游戏机还能使具有多种色彩的背景平面高速移动并在这些平面的后面或前面配置有活动目标。
然而,这类已有技术的16位电视游戏机实现不了具有3-D型特殊效果的高级电视游戏,这些游戏要显示由多边形所组成并需每帧变化的复杂目标。例如,这类已有技术的基于字符的16位机器无法实现需要许多须逐帧地放大或缩小的全方位旋转的目标或子画面的游戏。本申请发明人认识到要有效地实现涉及全方位旋转和缩放的基于多边形的目标的这类游戏,必需绘制多边形的边界并逐个像素地将合适数据填入这类基于多边形的目标。这类任务必须逐个像素地进行,故要花去大量的时间处理。
在已有技术中,已对可拆卸的游戏卡作了改进,使现行处理器可访问比与主微处理器相联的现有地址线数目所允许的范围更大的程序存储器地址空间,从而得到更高级的游戏。例如,这类已有技术的8位系统采用了包括可执行存储体切换和其他附加功能的多存储器控制器芯片的游戏卡。然而这类涉及存储体切换的芯片无法使电视游戏系统胜任上述性质的高速图形处理。
本发明针对已有技术的上述问题,提供一种独特的、全编程的、设计成配备在与主信息处理系统连接的可拆卸的外部存储单元中的图形微处理器。在这里所述的示范性实施例中,本发明是在一包括主电视游戏系统和装有图形微处理器的电视游戏卡的电视游戏系统中实现的。
这里所述的图形微处理器和电视游戏系统具有许多独特的、优异的特征,下面综述这些特征。
按照本发明,独特的图形处理器以插件方式与主微处理器连接。为使处理速度最大,图形处理器可以与主微处理器以并行方式工作。在一个示范性实施例中,装有图形协处理器的游戏卡还包括只读存储器(ROM)和随机存取存储器(RAM)。
本发明的图形协处理器对存储事务在本身需要与从主微处理器读取数据这两者之间作出仲裁。该处理器能与主微处理器同时执行程序以允许高速处理,在此之前已有技术的电视游戏系统是无法达到的。
本发明的图形协处理器与配置在游戏卡上的三总线结构结合在一起工作,从而通过优化主处理器和游戏卡处理器有效使用卡内RAM和ROM存储设备的能力以使这些存储器得到有效利用。
本发明的全用户编程图形协处理器包括一设计成允许高速处理的独特指令集。该指令集能有效地实施与3-D图形相关的运算操作,例如拥有由专用硬件执行的用以在主电视游戏系统的字符映像的显示中标绘单个像素的专用指令。
该指令集中的许多指令能够在一个机器周期中执行,并设计成存储在程序ROM的一个字节中。当然,这些指令通过采用专用的前缀指令可以具有更强的功能。
该指令集拥有独特的基于像素的指令,按程序员的观点来看,即使主系统是基于字符的,这些指令也能通过允许对单个像素的编址来建立一“虚拟的”位映像。该像素数据在扫描时由图形处理器转换为主系统基于字符的16位机器一般所采用的形式的字符数据。这样,例如程序员虽然使用独特的“标绘(PLOT)”指令来标绘像素,但当有关数据读到RAM时,该数据转换为16位主机器所能采用的基于字符的格式。专用像素标绘硬件执行该指令以有效地使高速3-D型图形得以实施。
本发明的图形协处理器还具有独特的“超高速缓存(CACHE)”指令和超高速缓冲存储机能以允许存储在程序ROM的程序指令由图形协处理器高速地从超高速缓存RAM取出执行。该高速缓存指令允许程序员通过指出所要高速执行的那部分程序就可自动地开始从图形协处理器内部的高速缓冲存储器执行程序。
该指令集还具有用来辅助对具有高品质3-D型特征的电视游戏所需的图形技术进行编程的专用指令。这类指令包括上述的像素标绘指令和合并(MERGE)指令,用来使存储在不同的寄存器中的子画面数据并接,以更有效地满足显示目标的旋转或/和质地映像。
专用指令可缓冲数据,以允许本发明的主微处理器和图形协处理器并行处理。例如,采用一专用指令来提高运行速度,以补偿在游戏卡中采用存取时间相对慢的ROM。在这种情况下,图形处理器使用一种只要引用预定的通用寄存器(例如,示范性实施例中寄存器R14)就会自动开始从ROM读取数据的指令。当发生这类ROM存取时,也可以执行别的代码。一些周期之后,读取的数据就可供使用了。当然,与此同时处理器无需等候此数据,而能够完成其他任务,因此可以写入执行很快的代码。
为有效地处理子程序连接,本发明的图形协处理器还包括连接(LINK)指令,用以将子程序结束后所要执行的指令的地址在这结束时刻装入程序计数器R15。
指令集具有RAM回存(store-back)指令。按照该指令,在数据从RAM读出并用该数据进行操作后,在图形协处理器中的RAM控制器在相应的上次使用的RAM地址开始已更新数据的回存操作。这一个周期的回存指令可以方便地用于有效地更新数据块。
本发明的图形协处理器还拥有能利用最低有效字节后跟着最高有效字节而自动地从RAM读出或写入的指令。该机能可有助于在编程时为以不同格式存储的数据提供兼容而无需进行任何数据转置。
本发明的图形处理器可以通过修改内部处理器状态寄存器而设定为各种不同的标绘方式。这些方式包括每个交替的像素具有不同颜色的能产生可编程明暗效果的晃动方式。另一可选择方式允许对颜色进行高半字节和低半字节选择,使两个子画面能够存储在存储器中某一原来由一个子画面占据的空间。
本发明拥有许多独特的硬件特征。例如,图形协处理器具有专用标绘电路,它通过利用单片RAM拥有增强的像素数据缓冲。这种数据缓冲可使对外部数据RAM读出或写入处理量减至最小,并提高将显示的多边形填以合适数据的速度。
除了如上所述一旦有对寄存器R14的任何访问就起动的读出缓冲特征外,本发明的图形协处理器还具有写入缓冲特征,可缓冲想要写到游戏卡RAM的数据,以使马里奥芯片(Mario  chip)的中央处理器尽快地执行别的指令。
本发明的图形协处理器还包括图形处理器和主处理系统均可存取的16个寄存器,R0-R15。寄存器R0是无需在指令中特地注明和起累加器作用的缺省寄存器。R15作为程序计数器。寄存器R14是上面提及的,若被访问便自动开始从ROM读取数据的寄存器。专用前缀指令可用来定义源和/或目的寄存器。本发明的图形协处理器与主协处理器的交互作用使得图形协处理器的寄存器可由主处理器存取。
与图形协处理器相关联的独特的三条总线结构允许较高的并行度。这3条总线包括主处理器总线,ROM总线和RAM总线。这些总线在物理上是分开的并可以同时使用。每条总线包括地址线、数据线和控制线。主处理器总线包括地址线、数据线和控制线,提供图形协处理器中所需的较宽范围的信号。采用该总线结构的本发明的图形处理器可以执行来自程序ROM,外部RAM或它本身内部的高速缓存RAM的程序。
图形协处理器与主微处理器用种种仲裁方式进行接口。在这方面,通过在一预定的图形处理器状态寄存器位置上装入逻辑“1”,就由主处理器设定一种仲裁方式,表明主处理器放弃了对游戏卡的ROM和RAM进行访问。
本申请发明人认识到,尽管在主处理器因相应地对状态寄存器置位而放弃了对ROM和RAM访问这种场合下,中断还是可以发生,主处理器可以开始对ROM的访问以读取处理这一中断的程序的地址。在这种情况下,图形处理器提供给主微处理器的不是程序ROM的地址而是工作RAM的地址,让主处理器访问它本身内部的工作RAM。该顶技术阻止主处理器在图形协处理器正执行来自程序ROM的程序时对该程序ROM进行寻址。
当主处理器需对游戏卡RAM访问时,使图形协处理器状态寄存器置位使得图形协处理器不能访问RAM,藉此使主处理器从RAM存取任何所需要的信息,之后再将图形协处理器切换到可对RAM访问的状态。然而,因其处理速度更快故希望协处理器最大限度地利用卡上的ROM和RAM。
本发明的图形协处理器设计为将装载于字符数据RAM中的像素信息有效地转送到主处理器图像RAM供显示。但图像RAM不能通过任何游戏卡总线由图形协处理器直接存取。必须利用主处理器的存储器直接存取(DMA)电路进行这种转送。
本发明的图形协处理器接收来自主信息处理系统的若干时钟信号。图形协处理器中的定时由这些时钟中的一个驱动。
作为本发明的可选配特征,图形协处理器中的电路允许处理器重新配置,以考虑到将来的变动,而这些变动取决于通过输出地址线(它们在紧接着加电复位之后用作配置设定输入线)收到的信号状态。与这些地址线连接的选配项设定电阻的值由图形协处理器读出。这些信号可用来定义例如与图形处理器一起使用的RAM芯片的种类,如静态RAM或动态RAM。
结合附图对下面的本发明示范性实施例的详细说明会使本发明的所有形式和优点更易于理解。
图1是根据本发明示范性实施例的示范性外部存储系统的方框图;
图2是与目前较佳的示范性实施例的图形协处理器一起使用的示范性主处理系统的方框图;
图3是内置图形协处理器的游戏卡和内置主处理系统的底座部件的示范性物理配置的透视图;
图4A和图4B是根据目前较佳示范性实施例的图形协处理器的方框图;
图5是叙述为起动图形协处理器操作而由主处理系统执行的操作序列的流程图;
图6是图4A所示的算术逻辑单元的更详细方框图;
图7是图4A所示类型的示范性像素标绘电路的更详细方框图;
图8A是示出标绘控制器接收的输入信号和标绘控制器产生的输出信号的方框图;
图8B是像素标绘电路的彩色矩阵中的彩色矩阵单元;
图8C描述有关像素标绘电路的定时、控制和数据信号;
图9是图4A所示的RAM控制器的更详细方框图;
图9A示出有关图9所示的RAM控制器的示范性定时、控制和数据信号;
图10是图9所示的仲裁逻辑的电路图;
图11是本发明图形协处理器的示范性实施例中的再同步电路图;
图12是有关图11的再同步电路的定时信号;
图13是本发明图形协处理器的ROM控制器的更详细的方框图;
图14是根据本发明示范性实施例的图形协处理器的超高速缓存控制器的方框图;
图15A是本发明图形协处理器中与指令译码有关的电路的方框图;
图15B示出说明图15A中的先行逻辑的工作用的示范性定时信号;
图16和17是示出根据本发明示范性实施例的图形协处理器的寄存器控制逻辑的方框图;
图18是叙述在完成多边形生成任务中图形协处理器的操作程序的流程图;
图19、20和21是用来说明按照本发明示范性实施例可以生成的基于多边形的目标的缩放和旋转特征的示范性显示。
根据本发明的示范性实施例,本发明的图形协处理器与任天堂(美国)股份有限公司在市场销售的商品名为超级任天堂娱乐系统(Super  NES)的16位电视游戏系统交互作用。该超级任天堂娱乐系统在1991年4月10日提交的申请号为07/651,265的题为“视频处理装置”的专利申请和1991年8月26日提交的申请号为07/749,530的题为“存储器直接存取装置和其所使用的外部存储设备”中得到部分的说明。这些申请通过引用而明显地归并在本申请中。应该理解本发明不仅仅限于与Super  NES有关的应用,还可以用于别的电视游戏系统或别的非电视游戏用的信息处理系统。
仅为了引用的方便,根据本示范性实施例的图形处理器在此之后称为“Mario芯片(Mario  Chip)”。目前较佳的示范性实施例中所述的Mario芯片封装在电视游戏卡中。应该理解只要Mario芯片在使用时与程序存储器和主处理单元连接,将Mario芯片与程序存储器置于相同卡盒内并不是本发明所必须的。
图1示出根据本发明示范性实施例的示范性电视游戏卡/外部存储系统。该游戏卡具有其上安装有图1全部元件的印刷电路板(图上未画出)。该卡具有排列在印刷电路板插入端的接插件电极阵列1以将信号传送到或传送出Super  NES主控制台。接插件电极阵列1由安装在Super  NES主控制台内的相配的接插件容纳。
根据本示范性实施例,配备在游戏卡上的Mario芯片(图形协处理器)2是100至128插脚的集成电路芯片。Mario芯片接收许多从主处理系统(例如Super  NES)来的控制、地址和数据信号。例如,Mario芯片由插脚P112接收来自主处理系统的21MHz时钟输入,经插脚P117接收可以为21MHz(或另一预定频率)的系统时钟输入。该系统时钟输入例如可用来向Mario芯片提供用于主CPU存储器存取的存储器定时信息和提供为Mario芯片内的操作定时的时钟信息。Mario芯片2还包括可选配的外部时钟输入(插脚P110),将Mario芯片与外部晶振4连接起来,以比从主系统接收的21MHz更高的时钟频率驱动MarioCPU。
主CPU的地址输入(HA)从主处理系统(例如Super  NES/图像处理单元PPU)的地址总线经插脚P37至插脚P62连接到Mario芯片2。来自主系统的数据输入(HD)类似地从主CPU数据总线经插脚P65-P72连接到Mario芯片2。另外Mario芯片2经P119从主CPU接收存储器更新信号RFSH,经插脚P118接收复位信号,经插脚P104、P105接收读出和写入控制信号。该Mario芯片可产生中断请求信号IRQ并将该信号IRQ经插脚P120连接到Super  NES。也可从Super  NES接受其它控制信号,例如经插脚P106接收可起动对主程序ROM10访问的ROM  SEL信号。另外该游戏卡拥有与Super  NES的认证处理器在输入线I、输出线O和复位线R交换数据的认证处理器3。用来认证游戏卡的认证处理器3和安全系统可以为美国专利USP4,799,635示出的那种,该专利通过引用而归并于此。
Mario芯片经RAM地址总线(RAM  A)、及RAM地址插脚P74-P91和RAM数据总线(RAM  D)及数据插脚P93-P100与RAM6和RAM8连接。这些RAM可以是利用分别经插脚P90-P91连接的行地址和列地址选通信号(RAS,CAS)进行部分控制的动态存储器件。可采用一个或多个静态RAM来取代动态RAM,这时插脚P90和P91将被用来在没有行地址和列地址选通信号的情况下,将地址信号连接到它们各自的RAM。允许写入控制信号WE可经插脚P107相应地送到RAM6和RAM8。
读、写控制信号(R,W)由主CPU产生并经插脚P104和P105与Mario芯片连接。Mario芯片通过监测这些读出和写入线能够确定Super  NES  CPU所要执行的存储器存取操作的种类。实质上来自主机的所有地址线和控制线都类似地由Mario芯片监测,以掌握主CPU所要进行的操作。由Mario芯片接收的ROM和RAM寻址信号受到监测,并将它们送到相应的存储装置。在这方面,ROM地址经ROM地址总线和插脚P2至P26与程序ROM10相连,而 RAM地址经插脚P74至P91与RAM6和RAM8相连。从主CPU出来的ROM和RAM数据输入分别经ROM数据总线和插脚P28-P35送到ROM10和经RAM数据总线和插脚P93至P100与送到RAM6和RAM8。
应该认识到Mario芯片除了与这里所述的ROM和RAM外还可以与较宽度范围的不同存储设备结合一起使用。例如可以期待Mario芯片与采用CD  ROM的电视游戏系统便利地结合一起使用。
例如在图1中不是采用ROM10,而是使用CD  ROM(未图示)来存储字符数据,程序指令,图像、图形和声音数据。将一种常规类型的CD机座(也未图示)与Mario芯片2合适地连接起来,通过地址总线P2-P26为存取数据接收存储器地址信号和/或通过数据总线P28-P35接收指令。至于CD机座和CD  ROM存储系统具体的结构和操作细节是本技术领域的技术人员众所周知的。CD  ROM存储带来的优点在于使每字节信息的存储成本显著地降低。存储数据的成本可以比存储在半导体ROM上低百分之一百到一千。不幸的是CD  ROM存储器存取/读出时间比半导体ROM的还长。
Mario芯片采用在至少三条总线上的信息允许并行利用的三总线结构。在这方面,在图1所示的游戏卡中,Mario芯片同ROM总线(包括ROM数据线、ROM地址线和控制线),RAM总线(包括RAM地址线、数据线和控制线)和主处理器总线(包括主机地址线、数据线和控制线)相连。
Mario芯片结构允许发生流水线操作以优化吞吐量。在这方面,Mario芯片可以在从ROM读取一个数据字节时,同时处理其它数据,还同时向RAM写入另外的数据,因而能非常有效地处理有关3-D型的图形。如下面进一步说明的那样,Mario芯片2内部采用16位结构,还设计为与8位的ROM10和RAM6、RAM8等芯片接口。在内部,所有的内部数据总线和内部寄存器均为16位。从ROM10读出和写入RAM6、RAM8均被“缓冲”并且一般不会放慢程序执行。
类似地,Mario芯片2可以从CD  ROM存取指令和图形数据并将该信息写入RAM6、RAM8以便以后通过DMA(存储器直接存取方法)转送到主处理器(例如Super  NES的图像处理单元PPU)的图像RAM中。本技术领域的技术人员会理解可以对Mario芯片2进行编程绕过RAM的存储和存取操作而协调从CD  ROM直接转送数据给PPU的图像RAM。
尽管CD  ROM的读出存取时间较长,但Mario芯片2极快的处理速度使CD  ROM存储可实际用于图形应用。视频和音频数据在存储于CD  ROM上之前采用常规的数据压缩技术进行压缩。数据压扩技术对本领域技术人员是众所周知的。在从CD  ROM取出压缩的数据之后,Mario芯片2运用常规的数据解除压缩算法使数据扩展所需时间比常规图形处理器所能达到的短得多。Mario芯片2用21MHz时钟信号进行工作,故而Mario芯片2可在规定期间内完成扩展以转送给RAM6、RAM8。
这样有大量的视频和音频数据(以压缩形式)在典型的CD  ROM存取周期内存取。由于在Mario芯片2进行数据扩展后,每数据字节的实际存取时间显著地减小,因而使其相对长的存取时间的影响减至最小。在Mario芯片2执行扩展的同时,主图形处理例如Super  NES  PPU可自由地进行其他处理任务。当然,对于某一特殊应用,如果速度不成为其问题,Mario芯片2可以以不压缩的形式从CD  ROM存取数据。
当使用静态RAM时该游戏卡还可以包括一后备电池。后备电池12经电阻R连接到后备电池电路14以在电源失效时提供静态RAM的后备电压(VSRAM)和静态RAM芯片选择信号RAMCS以保全数据。
另外,在选配项设定电阻16与RAM地址总线连接。在平常操作中,Mario芯片地址线输出到RAM6和RAM8。然而在复位或加电操作期间,这些地址线根据它们是连在预定的电压Vcc还是接地而用作输入线以产生高或者低信号。在这种方式下,“1”或“0”合适地读进内部的Mario芯片寄存器。在复位后,Mario芯片(在执行程序期间)根据这些电阻的置值,例如可确定与Mario芯片关联的乘法器时钟频率、RAM的存取时间、要用于Mario芯片内的其他操作的时钟频率等。Mario芯片通过利用这些选配项设定电阻,例如,无需对Mario芯片的设计作任何改动,就可适合同若干不同类型的存储设备一起使用。例如,如果检测出动态RAM置值就要在各相应时刻加上更新信号。另外,可选配设定可以用来控制例如处理器乘法器电路的运行速度,和允许图形处理器以比所能执行某些乘法指令还快的速率执行到的指令。这样,通过启动延迟的乘法操作,能以比其它方法可用的频率更快的时钟频率运行余下的指令(例如处理器时钟为30MHz,而可选配设定会有效地以15MHz来执行乘法指令)。
图2是设计为与图1中示出的示范性游戏卡相连的示范性主电视游戏系统的方框图。图2可以代表例如由美国任天堂目前销售的Super  NES。但本发明不限于与Super  NES有关的应用或具有图2所示的这种方框图的系统。
该Super  NES在控制台20内包括例如可以是65816兼容型微处理器的16位主CPU。CPU22与例如可以包括存储容量128K字节的工作RAM32相连。CPU22与图像处理单元(PPU)24相连,PPU又与例如可包括存储容量32K字的图像RAM30相连。CPU22在垂直或水平回扫消隐间隔期间经PPU24对图像RAM进行存取。这样,CPU22只能在PPU24对图像RAM存取在进行线扫描期间以外的时间通过PPU24对图像RAM30进行存取。PPU24从图像RAM30产生在用户电视36上的图像显示。CPU还与连接到工作RAM28上的音频处理单元相连。可以包括市售的音响芯片在内的APU26产生与存储在游戏卡上ROM10内的电视游戏程序相关的声音。CPU22只能经APU26对工作RAM28进行存取。PPU24和APU26经射频调制器单元34与用户家用电视36连接。
Super  NES中的图像RAM30必须装载存储在游戏卡中的程序ROM10(它不仅存储游戏程序,还存储玩游戏时所用到的字符数据)内的合适的字符数据。任何活动目标,譬如所要显示的子画面信息、或背景信息在使用前必须存入图像RAM30内。该程序ROM10经与图1中示出的印刷电路板边缘接插件相连的相配的接插件18由CPU22存取。PPU经共用的主CPU数据总线、地址总线和接头23与游戏卡连接以提供让PPU数据和控制信号与游戏卡相连的通路。APU26经共用的主CPU总线和音频总线27与游戏卡连接。
CPU22地址空间的分配,是使得程序ROM10存储单元从位置0开始并一般分成32K字节的各个区段。程序ROM使用近一半的CPU地址空间。每个CPU地址空间32K字节区段的顶端位置一般用来对工作RAM32和各种寄存器编址。程序ROM10一般是4兆字节。用在Super  NES中的CPU22能够对程序ROM10的全体进行寻址。另一方面,Mario芯片2只包括一16位程序计数器,因而还包括用以选择程序ROM10中的32K字节存储区的存储区寄存器。
在本示范性实施例中,Mario芯片具有与Super  NES存储器分配图相对应的全24位地址空间。在从位置$00∶8000开始的位置上含有ROM10,而游戏卡上的RAM芯片6、8则从位置$70∶0000开始。
既然游戏卡上的ROM10和RAM6,RAM8连在分开的总线上,他们就能由Mario芯片并行存取。而且对RAM6,RAM8的存取频率比对ROM快,Mario芯片就是设计成利用这性能优点的。Mario芯片无法对Super  NES中的任何存储器进行存取,即无法对工作RAM32或PPU图像RAM30存取。
为使Mario芯片处理数据或绘入位映像中,数据必须存放在该Mario芯片的RAM芯片6、8内。这样,在NES  CPU程序和马里奥芯片程序间共用的任何变量一定要在Mario芯片的RAM芯片6、8内。Mario芯片需要用的任何预先存储的数据可以在ROM10中,任何变量则在RAM6、RAM8中。
仅仅是Super  NES所需要的任何专用变量无需放在游戏卡RAM6、RAM8中。事实上,RAM6、8的存储空间很宝贵,所以最好将最优先需要的内容分配给RAM6、RAM8。任何非必需的变量应该存储在Super  NES的内部RAM32中。
Mario芯片写入的位映像是Mario游戏卡RAM6、RAM8中,并当每一帧位映像已被全部提供时,在Super  NES的控制下,通过DMA转送到PPU的图像RAM30中。
Super  NES的CPU22对Super  NES控制台内的所有内部RAM进行存取,就象没有Mario芯片。Mario芯片无法对这RAM进行存取,故而必须由CPU本身引入MarioROM/RAM芯片和内部Super  NES  RAM间转送的所有数据。通过CPU22编程就可传送数据,或通过DMA传送来移动数据块。对于所有的游戏程序,Mario卡ROM10和RAM6、RAM8都以惯用的方式映入。
CPU22控制哪一个CPU可临时对游戏卡ROM和RAM芯片进行存取。在加电或复位的情况下,Mario芯片被关断,完全由CPU22对游戏卡ROM和RAM芯片进行存取。为使Mario芯片运行程序,有必要使CPU22程序放弃对ROM或RAM芯片,最好是对两者的存取,而等待Mario芯片完成其所交给的任务,或者CPU22可将某一程序复制进内部的工作RAM32并在那儿执行它。
Mario芯片有若干可从Super  NES  CPU侧编程和读出的寄存器。这些均被映入从位置$00∶3000开始的CPU22存储器分配图。
如图2所示,Super  NES产生和接收种种控制信号。当Super  NES  CPU22需对程序ROM10进行存取时,它产生一控制信号ROM  SEL。要开始存储器更新,该Super  NES产生一更新信号RFSH。当Mario结束某一操作时,它发送一中断信号到与Super  NES  CPU相联的中断请求线上。CPU22另外还产生读出和写入信号。
系统定时信号是从控制台20中的定时连锁电路21产生出的。加电/复位信号也是在主控制台20中产生并送到游戏卡。
Super  NES还包括认证处理设备25,它按照上面提到的美国专利USP4,799,635同游戏卡上的认证处理设备3在输入线I、输出线O和复位线R上交换数据。美国专利USP4,799,635指出,该处理设备25使CPU22处于复位状态直到认证被证实。
在图2中用方框形式表示的Super  NES电视游戏机在此只是总体上的描述。有关包括PPU24在内的Super  NES的进一步细节,例如可以在1991年4月10日申请的申请顺序号为07/651,265的题为“视频处理装置”的美国专利申请中找到,该申请通过引用而明显地归并在本申请中。诸如Super  NES和游戏卡之间的信息如何传送之类的再进一步细节可以在1991年8月26日申请的申请顺序号为07/749,530的题为“图像处理系统中的存储器直接存取装置和其所使用的外部存储设备”的美国专利申请和1991年11月19日申请的申请顺序号为07/793,735的题为“镶嵌图像显示装置及所用的外部存储单元”的美国专利申请中找到,这些申请在此引用而归并在本申请中。
本申请发明人认识到在一些应用中,需要利用这种主处理器DMA电路在垂直回扫消隐期间传送的信息比实际可能传送的多。因而即使会导致画面尺寸略有收缩,还是希望延长垂直回扫消隐时间。通过采用这一方法,在处理速度和画面更新频率方面就体现出显著的优点。
图3示出容纳图1所示的Mario芯片和游戏卡上其它结构的游戏卡盒的示范性机械外观设计的透视图。图3类似地示出容纳图2示出的Super  NES电视游戏硬件的电视游戏控制台20的示范性外部机座的透视图。这类电视游戏控制台20和相关的可卸下的游戏卡19示于1991年8月23日申请的申请顺序号为07/748,938题为“TV游戏机”的美国专利申请的图2-9中,该申请在此引用而归并在本申请中。
图4A和4B是示于图1中的Mario芯片2的方框图。首先集中看示于图4A和4B中的各种总线,指令总线INSTR是将指令代码送到各种Mario芯片元件的8位总线。X、Y和Z总线是16位数据总线。HA总线是24位的主系统地址总线,在目前较佳实施例中,使用时与Super  NES的地址总线相连。HD总线是使用时与Super  NES的数据总线相连的8位的主系统数据总线。PC总线是将Mario芯片程序计数器(即通用寄存器块76中的寄存器R15)的输出送给各种系统元件的16位总线。ROMA总线是20位ROM地址总线。ROM  D总线是8位ROM数据总线。RAM总线是16位RAM地址总线。RAMD  IN总线是8位RAM读出数据总线,RAMD  OUT总线是8位写入数据总线。
Mario芯片和Super  NES共用游戏卡RAM6、RAM8,起到在Mario芯片和Super  NES之间传递数据的主要机能。Super  NES给地址总线HA和数据总线HD对Mario芯片进行存取。Mario芯片的寄存器76由Super  NES经Super  NES的地址总线HA进行存取。
Super  NES经Mario芯片2对游戏卡上程序ROM10和RAM6、RAM8存取。ROM控制器104和RAM控制器88接收到由Super  NES产生的有关存储器存取的信号,就分别起到ROM和RAM的存储器存取。顺便解释一下,RAM选择信号RAMCS被Mario芯片用来确认Super  NES正要对该RAM寻址。
示于图4A和4B中的X、Y和Z总线是内部的Mario芯片数据总线。X和Y总线是源数据总线而Z数据总线则是目的总线。这些总线载送16位并行数据。
当执行指令时,Mario芯片2可以将指令用的源数据放在X和/或Y总线上面结果数据放在Z总线上。例如,在执行将两寄存器的内容相加并将结果放在第三寄存器的指令时,算术逻辑单元(ALU)50经X和Y总线接收到两个源寄存器的内容并将结果送到Z总线(转而送到块76中的指定寄存器)。由Mario芯片2的指令译码电路60对指令操作码译码得出的控制信号被送到ALU50起动加法(ADD)操作。
正如针对图1说明所注解的那样,与Mario芯片相连接的ROM总线、RAM总线和Super  NES主机总线能并行地进行信号通讯。Mario芯片2监视经过主机Super  NES总线传输的控制、地址和数据信号以确定主系统正在执行的操作。根据任何给定的时刻正在执行的Super  NES操作可以并行地对游戏卡ROM总线和游戏卡RAM总线进行存取。在通常的Super  NES游戏卡中,主机CPU的地址线和数据线直接与ROM和RAM相连,这样RAM和ROM就不能被并行地存取。
根据本发明的一个方面,Mario芯片2使图1中所示的ROM总线和RAM总线与Super  NES总线在物理上分开。Mario芯片2监视在Super  NES总线上传输的信号,并确定什么信号需经不是分时的两条分开的ROM总线和RAM总线送到ROM芯片和RAM芯片。通过分开ROM总线RAM总线,Mario芯片能同时从ROM读出和向RAM写入。在这种方式下,Mario芯片可以用便宜的其存取时间比RAM存取时间慢得多的ROM芯片有效地工作而无需等到ROM存取结束后才对RAM存取。
回到图4A,Mario芯片如前面所注明的那样,是全编程处理器并包括ALU50。除了乘法操作由乘法器64执行和某些像素标绘操作由标绘硬件52执行外,ALU50执行Mario芯片中所配备的所有算术功能。一收到出自指令译码器60的合适控制信号,ALU50就执行加法、减法、异或、移位和其他操作。如图4A所示,ALU50从X、Y总线上接收所要操作的信号,执行从指令译码器60收到的控制信号所起动的操作,并将该操作的结果送到Z总线。下面将结合附图6进一步详细地说明ALU。
Mario芯片2另外包括专用硬件以便有效执行3-D型特殊效果和其他图形操作,使运用这些性能的电视游戏可以实现。在这方面,Mario芯片2包括标绘硬件52,它辅助将对像素坐标的编址实时地变换成Super  NES所采用的那种对字符映像的编址。好处是可以通过指定定义各像素在显示屏上的位置的X和Y坐标来对Mario芯片进行编程。
这样,图形操作是根据程序员指定像素来执行的,标绘硬件电路52在扫描时将各像素指定值变换成正确格式化的字符数据。该字符数据随后映入示于图2中的Super  NES图像RAM30中供显示用的符合要求的地方。在这种方式下,Mario芯片程序员只需将Super  NES的图像RAM30看作位映像,而实际上它是字符映像。
该标绘硬件52响应种种有关标绘的指令,允许对一特定像素在显示屏上的X和Y坐标和预定彩色进行可编程的选择,和标绘相对应的像素使X和Y坐标变换成与具有用来驱动Super  NES图像RAM30的形式的字符定义相对应的地址。
标绘硬件52具有相关的数据锁存器,允许在写到游戏卡RAM前缓冲尽可能多的像素数据,以使RAM数据事务尽量减少。在X和Y坐标数据在标绘硬件52中变换和缓冲之后,字符定义数据随后传送到游戏卡RAM。
该标绘硬件52分别经PLOT  X寄存器56和PLOT  Y寄存器58接收X、Y坐标数据。在目前较佳实施例中,PLOT  X和PLOT  Y寄存器不是分开的寄存器(如图4A所示)而是Mario芯片通用寄存器(即示于图4B中的寄存器块76中的寄存器R1和R2)。
该标绘硬件52还经彩色寄存器54接收像素彩色信息。如下面将会进一步说明的那样,所显示的各像素的彩色存储在8×8寄存器矩阵中,每个像素的彩色说明占据该矩阵的一列。
标绘硬件52处理字符号地址和与X、Y和色彩输入有关的数据并将它们送到字符RAM6、RAM8。字符地址经输出线53送到RAM控制器88和RAM地址总线RAM  A。字符数据经输出线55、多路转换器93和RAM数据总线RAM  D  DUT送到字符RAM。该标绘硬件52在与Super  NES字符格式保持兼容的同时允许字符中的像素单独地编址,以藉此提供给程序员一“虚拟的”位映像显示系统。“虚拟的”位映像保存在游戏卡RAM中并在每帧显示结束时利用例如上面提到的申请顺序号为07/749,530的美国专利申请中的DMA电路传送到Super  NES的图像RAM30。该标绘硬件52能高速控制单个像素,使涉及到旋转和缩放目标的某些3-D型图形效果得以实现。
由于要把像素格式变换成字符格式,标绘硬件52还经RAMD  IN和数据锁存器82和输入线83从卡RAM6、RAM8接收与当前像素X、Y附近的其他像素有关的信息。通过使用从RAM6、RAM8检索出的和暂时存储在RAM数据锁存器中的以前的像素数据,可以使对RAM的写入次数降为最小。示于图4A中的RAM数据锁存器80、84和86还用来缓冲收到的关于某一像素的彩色数据(它们已存储于游戏卡RAM内的多重位平面中),以将这些数据提供给标绘硬件52。
RAM数据锁存器80与Super  NES数据总线相连因而Super  NES能读出该数据锁存器的内容。RAM数据锁存器80、82和86由RAM控制器88控制。RAM数据锁存器84和86用来接收来自RAM6、RAM8的数据并将来自RAM6、RAM8的数据送到目的端总线Z以便于装载进寄存器块76中的预定寄存器。另外与RAM控制器88相连的锁存器90是缓冲RAM地址的。RAM控制器88利用存储在锁存器90中的地址经RAM  A总线对RAM6、RAM8寻址。RAM控制器88还可以由Super  NES经地址总线HA进行存取。
标绘硬件52还响应读出像素(READ  PIXEL)指令,它读取寄存器R1的内容所定义的水平位置和寄存器R2的内容所定义的垂直位置上的像素的彩色信息,并经目的端总线Z和输出线87将结果存储在寄存器块76中的预定寄存器中。将结合图7、8A和8B和说明对PLOT硬件52作进一步说明。
流水线缓冲寄存器62和ALU控制指令译码器60与指令总线INSTR相连以产生控制信号(应用于整个Mario芯片)来起动与置于指令总线的命令相应的操作。Mario芯片2是在其执行当前指令的同时就读取所要执行的下一个指令的流水线微处理器。流水线寄存器62存储所要执行的下一个指令,使得如果可能的话就在一个周期中执行各指令。置于指令总线上的指令是按存储于寄存器(例如可以是示于图4B的寄存器块76中的寄存器R15)中的程序计数器的内容寻址的。
由Mario芯片2执行的指令可以从示于图1中的程序ROM10或Mario芯片的内部超高速缓存器RAM94得到,或从游戏卡RAM6、RAM8得到。如果正从ROM10执行程序,ROM控制器104(示于图4B中)将读取指令并将它置于Mario芯片指令总线INSTR。如果程序指令是存储在超高速缓存RAM94中,则指令会经超高速缓存RAM输出总线95直接从超高速缓存输出置于指令总线上。
对主CPU(即Super  NES)的编程,是使程序ROM10部分分配给Mario芯片程序指令。Super  NES程序命令Mario芯片执行一规定的功能,然后将存取Mario芯片程序代码的ROM10中的地址提供给Mario芯片。流水线寄存器62读取正执行着的指令的下一字节指令,以将有关指令的信息提供给指令译码器60,使译码器能在程序执行当中先行了解即将发生的事件来预期有关处理。部件60中的译码和控制电路产生命令ALU50、标绘硬件52、超高速缓存控制装置68等的控制信号,以完成由正执行着的指令代码所指示的操作。
Mario芯片还包括一个同ALU50分开的高速、并行乘法器64。乘法器64响应规定的指令操作使从X和Y源端总线接收到的两个8位数相乘并将16位结果装上目的端总线Z。如果可能该乘法操作在一个周期内完成。输入到乘法器64的两个数可以带符号或不带符号。乘法器还能完成长字乘法操作,使两个16位数相乘而产生一个32位的结果。乘法器还包括相关联的部分乘积寄存器66来存储乘法操作期间产生的部分乘积。当译出一个乘法操作代码时,就由指令译码器60输出的控制信号启动乘法器64。乘法器64将在最小4个时钟周期内执行涉及16位字的乘法的长字乘法指令。
长字乘法指令具有以下格式:
R4(低位字),DREG(高位字)=Sreg*R6
执行该指令就使源寄存器乘以寄存器R6的内容并将32位结果存储在寄存器R4/DREG(低/高位)。乘法是带符号的并对32位结果设定零和符号标志。
该操作按照以下六个步骤进行:
步骤1:不带符号的乘法R4[0…15]=SREG[0…7]*R6[0…7]
步骤2:X带有符号。R4[0…15]=R4[0…15]+256*SREG[8…15]*R6[0…7]。不管乘积的高8位,但保留加法的进位。
步骤3:X带有符号。R5[0…15]=CY+(R6[8…15]*SREG[0…7])÷256;加上符号。
步骤4:X不带符号,Y带有符号。
R4[0…15]=R4[0…15]+256*SREG[0…7]*R6[8…15]。不管乘积的高8位,但保留加法的进位。
步骤5:Y带有符号,R5[0…15]=R5[0…15]+CY+SREG[0…7]+R6[8…15])÷256;加上符号。
步骤6:X、Y带有符号,R5[0…15]=R5[0…15]+RY[8…15]*R6[8…15]。
用在本示范性实施例中的乘法器64例如可以是麦格劳-希尔1984年出版的由卡瓦诺著的《数字计算机算术》中所描述的那种。
参见图4B,超高速缓存控制器68(在图14中会进一步详细图示)允许程序员有效地起动装载操作,将想要高速执行的那部分程序装入超高速缓存RAM94。这种“超高速缓存(CACHE)”通常应用于在图形处理中频繁发生的小程序循环。Mario芯片指令集包括“CACHE”指令。紧接着该CACHE指令的任何指令被装载进超高速缓存RAM,直到超高速缓存RAM满载为止。当执行CACHE指令时,当前程序计数器状态被装载进超高速缓存基址寄存器70。这样,该超高速缓存基址寄存器的内容规定了超高速缓存开始的起始位置。
大多数指令在一个周期内执行。来自相对慢的外部存储器象ROM10和或RAM6、8的指令必须在执行它们之前就取出。这将花费另外大约6个周期。为提高程序执行速度,应该利用在Mario芯片内的“超高速缓存”RAM本身。
超高速缓存RAM可以是一512字节的指令超高速缓存器。这容量与平均程序的大小相比是比较小的,因而程序员必须对如何最大限定地利用超高速缓存RAM作出决定。能够装入512字节超高速缓存容量的任何程序循环均能以全速运行,使读取和执行均在一个周期内进行。因为总线是分开的,故而在执行来自内部的超高速缓存94的代码时能同时对ROM和RAM存取。
超高速缓存RAM92可以通过在它执行旋转和缩放计算时,在它利用PLOT指令(将在下面说明)将像素写入RAM6、RAM8时,同时运行超高速缓存中会从ROM10读出各像素色彩的循环,来方便地使子画面旋转。所有这一切都是并行地发生的,尽管最慢的操作降低了速度但仍给出很快的吞吐率。最慢的操作通常是ROM数据的读取,这就是Mario芯片为什么被设计成利用对ROM和RAM缓冲存取的原因。
与运行来自相对慢的ROM的程序相比,运行来自超高速缓存RAM94的程序速度可快约6倍,但它首先必须从ROM装载到超高速缓存中。这是通过将指令置于所要超高速缓存的任何循环的起始部分来进行的。从CACHE指令地址起,将只超高速缓存循环的前512字节。在执行循环第一次迭代的代码时,程序就从ROM10出来并以60字节块形式复制进超高速缓存RAM。该循环所有进一步迭代都将来自超高速缓存RAM而不是ROM10。
CACHE指令能随意地用在任何重复的程序循环前面。只是循环的后续迭代能得益于其程序置在超高速缓存中。如果程序循环大于512字节并溢出超高速缓存94,它仍将正确地工作,只不过前512字节从超高速缓存94运行而剩下的照常将从ROM10运行。这部分地提高了速度但不够理想。
在较佳实施例中作为超高速缓存控制器的一部分的超高速缓存标志位寄存器72对超高速缓存RAM94中已装载的存储器位置进行标识。该超高速缓存标志位允许Mario芯片迅速地判定某一程序指令是不是能从更快的超高速缓存RAM执行而不是从程序ROM10执行。可以由超高速缓存控制器68或Super  NES经Super  NES地址总线HA经多路转换器96对超高速缓存RAM  94进行存取。
超高速缓存控制器68与程序计数器总线PC相连以装载超高速缓存基址寄存器70并执行超高速缓冲存储器地址超出范围的校验操作。
与从ROM10读出可达到的并行度相似,Mario芯片还提供并行地写入到RAM6、RAM8的途径。不管什么时候只要Mario寄存器被写入到RAM6、RAM8,它就起动例如在RAM控制器88中的单独的RAM写入电路进行存储事务。这一般将花去6个周期,但假使程序员避免在这样做时进行另一个RAM的事务,就不会使该处理器延迟。例如在两个存储指令之间插入别的处理就能进行得更迅速。那样RAM写入电路就有时间进行它的工作。如果连续用到两个写入,那么在进行第一个写入时第二个会使处理器延迟。
例如(使用下面将要说明的指令集中的指令):
FROM  R8  ;将R8存入(R13)
SM  (R13)
SM  (R14)  ;将R0存入(R14)
TO  R1
FROM  R2
ADD  R3  ;执行:r1=r2+r3
TO  R4
FROM  R5
ADD  R6  ;执行:r4=r5+r6
注意这两个存储指令互相太接近了。由于RAM总线正忙于试图完成第一存储指令因而第二个将多花去6个周期。
运行速度会更快的写入代码的较佳途径是由其他有用的代码间隔开这两个存储指令。例如:
FROM  R8  ;将R8存入(R13)
SM  (R13)
TO  R1
FROM  R2
ADD  R3  ;执行:r1=r2+r3
TO  R4
FROM  R5
ADD  R6  ;执行:r4=r5+r6
SM  (R14)  ;将R0存入(R14)
在这种方式下,在第一存储指令导致向RAM写入的同时可并行执行若干个指令,再在几个周期之后进行第二个存储操作。
下面说明的指令集包括一将寄存器写回到最后所用的RAM地址的快速指令。这通过从RAM取出值,对它进行一些处理,随后将它快速存回,故而允许“成批的”数据处理。
参见图4B,一直接数据锁存器74与指令总线相连。这一数据锁存器允许指令本身提供数据源,这样就不需要由指令指定源端寄存器。该直接数据锁存器74的输出与目的端总线Z相连。它转而与寄存器块76的一个规定的寄存器相连。指令译码电路60对“直接”数据指令译码并开始执行相应的向寄存器传送的操作。
示于图4B中的GET  B(取字节)寄存器98是与前面所述的延迟/缓冲读出操作一起使用的。在这方面,已有技术的处理器由于广泛地利用存取时间相对慢的ROM,只要执行到ROM,一般就不得不等待它完成数据读取。而利用下面说明的延迟/缓冲读取机制,在完成数据读取时还可执行其他操作。按照该机制,不管以什么方法对寄存器块76中的寄存器R14存取或修改,就自动地在R14内容所标识的地址起动对ROM或RAM的读取。
如图4B所示,寄存器R14与ROM控制器104相连。不论何时,以任何方式修改寄存器R14的内容,ROM控制器104就起动对ROM的存取。对ROM存取的结果经与ROM数据总线ROMD相连的多路转换器装载到GET  B寄存器98中。下面列出的指令允许对在GET  B寄存器98中缓冲的信息进行存取。该信息经多路转换器100装上目的端总线Z随后进入到寄存器块76中的某个寄存器。
在这种方式下,若已知从ROM读取数据要花去一定个数的处理周期,就可起动那读取操作并在起动了这数据读取之后,Mario芯片不是等着不执行其它操作,而是能执行例如与数据读取无关的代码。GET  B寄存器98还可以用来存储经如图4B所示的多路转换器102从RAM6、RAM8检取出的信息。
在寄存器块76中配备有十六个16位寄存器(R0-R15)。寄存器R0-R13是通用寄存器(尽管其中某些寄存器往往用于下面所说明的专用目的)。如上所述,寄存器R14被用作为读出存储器的指针,当被修改时,就起动从ROM(或RAM)的读出周期。读出的字节被存储在临时的缓冲器(GET  B寄存器98)以便以后由GET  L(取低字节)或GET  H(取高字节)命令存取。寄存器R15是程序计数器。在每个指令开始执行时它指向正要存取的下一个指令。
寄存器R0是一通用寄存器,一般用作累加器。对于大多数单个周期的指令它还是缺省的源端和目的端寄存器。例如,若想要使R0和R4的内容相加在一起就只须明显地指定寄存器R4。
当执行循环指令时就专用寄存器R11、R12和R13。寄存器R13存储循环顶端所要执行的指令的地址,而寄存器R12存储循环所要执行的次数。若寄存器R12的内容非零,则将在R13内容所指定的地址的指令装到程序计数器(R15)并且执行。寄存器R11存储循环完成后所要返回的地址。
寄存器控制逻辑78与寄存器块76相连并控制对通用寄存器R0-R15的存取。根据正要执行的特定指令的格式,指令译码逻辑60将指定一个或多个寄存器R0-R15。寄存器控制逻辑78指定哪个寄存器是所要执行的下一条指令需要利用的。寄存器控制逻辑78将相应的寄存器输出送到X和Y总线。另外,如图4B所示,在寄存器控制逻辑78的控制下,相应的寄存器R0-R15从Z总线接收信息。
ROM控制器104一旦收到来自Super  NES地址总线HA或来自Mario芯片的地址就对那地址进行存取。ROM控制器104将在图13中更详细地示出。从ROM10存取的信息可以装到超高速缓存RAM  94以便快速地执行指令。ROM控制器104和RAM控制器108都具有在Super  NES的和Mario芯片的存取要求间进行仲裁的总线仲裁单元。
如后面会进一步说明的那样,Mario芯片还利用状态寄存器(例如在寄存器块76中或在RAM6、RAM8中),这些寄存器可由Super  NES  CPU存取,可存储用于标识状态条件的标志,例如0标志、进位标志、正负符号标志、溢出标志、“运行(GO)”标志(1表示Mario芯片正在运行而0表示Mario芯片停止运行);ROM字节读取正在进行标志(表示寄存器R14被存取过);各种方式指示标志包括ALT1标志、ALT2标志、直接低字节和直接高字节标志,和指示源寄存器和目的寄存器已由“WITH”前缀命令设定过的标志,和中断标志。
以图4A和图4B中的方框图形式表示的Mario芯片由Super  NES调用,使Mario芯片每秒钟多次接通和关断来执行任务。起初当Super  NES开启时,存储在ROM10中游戏程序被引导。注意在由Super  NES处理器和Mario芯片处理器执行游戏程序之前,游戏卡首先被认证。顺便解释一下,按照美国专利USP4,799,635指出的方法,可先将Super  NES  CPU置于复位状态,执行与游戏卡和Super  NES主控制台相关联的认证处理器的认证程序来进行这类认证。
Mario芯片一开始处于关断状态。在这一时刻,Super  NES可不受限制地对游戏卡程序ROM和游戏卡RAM存取。当Super  NES需要利用Mario芯片的处理能力来执行图形操作或数学运算时,Super  NES在游戏卡RAM(或在规定的Mario寄存器)中存储它需要Mario芯片处理的相应的数据,并将所要执行的Mario程序的地址装入Mario芯片的程序计数器。要由Mario芯片处理的数据可以是必须旋转和放大或缩小的目标的规定的X、Y坐标数据。Mario芯片能执行会实施算法来控制具有不同个数的子画面或活动目标的背景和前景的程序。利用Mario芯片的提高速度的增强硬件和软件,可使这些操作获得高速性能。
应用Mario芯片来处理子画面能相当大地扩展整个电视游戏系统的能力。例如,Super  NES每帧只限显示128个子画面。随着运用Super  Mario芯片实际上可显示数百个子画面,并例如使它们旋转。
当Mario芯片完成了由Super  NES所请求的功能,就执行STOP指令,产生一中断信号并传输到Super  NES以表明Mario芯片已完成了它的操作-这转而表明了它已准备好执行下一个任务。
Mario芯片可用于执行诸如高速乘法运算这类小任务或可用于画一幅满是子画面的画面。在任何一种情况,只要Super  NES在RAM或ROM总线正由Mario芯片使用的时候不去占用这些总线,Super  NES可自由地与Mario芯片并行地进行处理。注意即使Super  NES交给Mario芯片对游戏卡上的RAM和ROM总线的控制,Super  NES还是可以执行从示于图2中的其工作RAM32出来的程序。这样,通过将所要执行的Super  NES程序从程序ROM复制到它的工作RAM,而与此同时由Mario芯片执行程序,整个系统的吞吐量就可得到提高。
示于图5中的流程图表示出为起动Mario芯片从ROM在所要求的地址处读取并执行代码而由主CPU(例如Super  NES  CPU)所执行的“运行Mario(RUN  MARIO)”程序的操作顺序。由图5代表的例行程序一般是在将该程序从程序ROM10复制到示于图2中的工作RAM32之后由Super  NES  CPU执行。每当要Mario芯片进行操作时,就由主CPU执行这例行程序。
如方框125所示,当执行主CPU例行程序RUN  MARIO时,首先完成包括保留Super  NES寄存器在内的初始化操作。在初始化步骤期间,该例行程序从程序ROM10复制到主CPU的工作RAM32中。
如方框127所示,存储着所要执行的Mario程序代码的ROM10代码存储区被装进Mario芯片的某一寄存器。另外如方框129所示,在代码存储区中的实际地址被存储在Mario芯片的屏面基址寄存器中。
此后,如方框131所示,通过指明将使用4种、16种还是256种彩色方式来设定I/O输入/输出方式。这些方式对应于主CPU所运行的彩色方式。另外还设定按可显示字符的个数来限定屏面高度的方式。
另外还设定将对ROM和RAM总线的控制交给Mario芯片的方式位。对ROM和RAM总线的控制可分开选定,因而Mario芯片可设定为它对ROM总线、对RAM总线或对两者进行存取的方式。若对ROM和RAM均设定“Mario占用(Marioowner)”方式,则主CPU就不能从ROM或RAM读出或向ROM或RAM写入。注意若主CPU试图在Mario芯片正使用程序ROM总线时对程序ROM存取,Mario芯片有一种向Super  NES返回伪地址的机能。向该地址的转移会使Super  NES一直被占有直到Mario芯片不再需要对游戏卡ROM总线进行存取。
如方框133所示,在Mario芯片的程序计数器装上存储着Mario程序必须执行的第一条指令的地址之后Mario芯片开始运行。
主CPU然后等待从Mario芯片来的中断信号(方框135)。当接收到一中断信号,Super  NES被告知Mario芯片已完成了它的运行并已停止(方框137)。如果未收到这类中断信号,则主CPU继续等待中断(方框135)。在这一期间,Super  NES可以通过执行出自示于图2中的其工作RAM32的程序而与Mario芯片的运行相并行地执行程序代码。
Super  NES随后检验状态寄存器(例如在Mario芯片寄存器块76中)以确定表明Mario芯片正在运行的Mario芯片的“GO”标志是否已设定(137)。另外,Mario芯片的状态寄存器中的中断标志被设定以表明Mario芯片是主CPU所收到的中断信号的源。这样,在主CPU接收到中断信号之后(135),对相应的Mario状态寄存器检测以确定Mario芯片是否是中断源(相对于例如是表明垂直回扫消隐间隔的中断信号)。若Mario芯片已停止运行(137),则清除对于RAM和ROM的Mario占用方式位,完全由Super  NES对ROM和RAM进行存取。Super  NES从该例行程序(141)退出并返回在进入RUN  Mario程序前它所执行的程序点。
当CPU22游戏程序使Mario芯片进入ROM  Mario占用方式,它必须主动地停止对ROM的存取。任何时候只要CPU22因某些原因需对ROM存取,它就简单地关闭ROM  Mario占用方式。当Mario芯片再一次需要对ROM存取时,Mario芯片会自动地在那里等待,直到ROM  Mario占用方式再一次还给它。若它运行来自内部超高速缓存RAM的程序就可完全不需要这样做。
若Mario芯片处于对于ROM的Mario占用方式,CPU22游戏程序不要试图从ROM读出任何东西是重要的。当发生某个中断是,例如因垂直回扫消隐,它引起不可屏蔽中断(NMI),CPU22就自动地试图从ROM读取它的中断向量。这是不希望的,因为CPU已明确地告知Mario芯片它会避开ROM,而后来发生中断,它还是要从ROM读取。在这种情况,即尽管处于Mario占用方式,但CPU22仍要对ROM存取的情况下,就会使Mario芯片假设这是中断向量请求。
在ROM  Mario占用方式下,读取中断向量期间,Mario芯片将把中断向量重新定位到Super  NES的内部工作RAM32中栈区的底部。例如,如果通常中断向量是$00∶ffec它就JUMP(转移)至位置$00∶010c。类似地所有来自$00∶ffeX的中断向量都使CPU22  JUMP到它们相应的位置$00∶010X。这项技术在CPU22不该对ROM10存取时避免它存取ROM10,而是把它转移到Super  NES的机载RAM32中。注意基于RAM的中断向量必须含有向中断处理程序的转移或分支转移。即那里应该存有实际代码而不仅仅是向量地址。当Mario芯片不处于Mario占用ROM的方式时,则仍使用平常的ROM中断向量,因而最好继续在这些位置指向相同的地址,以运行到与基于RAM的中断向量相同的地方。
指令集
Mario芯片指令集为对高速图形和其他处理算法的编程提供了有效的手段。下面对某些指令作简明的说明之后,对不同指令所使用的某些寄存器作出说明。还包括指令集中的指令进行详细的罗列。
指令是8位指令,一般在一个时钟周期内执行。但这些指令可由8位前缀指令改动。Mario芯片指令集包括一独特的寄存器优先代用系统,允许程序员在任何指令之前指定目的端寄存器和两个源端寄存器。没有这些“前缀”的优先代用,指令将只在累加器上运行。这样该指令集是具有无数组合的可变字长的指令集。这里有一些一个字节长、在一个周期内运行的基本指令。通过加上前缀指令,程序员就能扩展这些指令的作用。指令可视程序员的需要为8、16或24位。
Mario处理器利用指令启动执行高速的、机载超高速缓存RAM的程序和对存储器延迟/缓冲的I/O。利用单周期的像素标绘命令,启动采用上述像素标绘硬件的操作,就能有效地进行图形处理。
在列出Mario指令集之前,先在下面说明由处理器在执行指令时设定或存取的各种存储器变换的寄存器。首先列出状态标志寄存器。状态寄存器是16位寄存器,下面标明与该寄存器中16位的各位相关的标志。
状态标志寄存器16位
位  标志
0  -  备用
1  z  零标志
2  c  进位标志
3  s  符号标志
4  v  溢出标志([位14向位15进位]XOR
[位15向进位位进位])
5  g  运行标志:1Mario芯片运行
0停止
6  r  (R14)ROM字节读取正在进行
7  -  备用
“GO”标志(位5)设定为“1”状态就表明Mario芯片正在运行,而设定为“0”状态就表明Mario芯片已停止运行(其结果是产生一中断信号送到Super  NES)。该标志位由Super  NES处理器检验。位6是设定来表明当前正在进行ROM字节的读取。列在下面的取(GET)字节指令要等该标志清零表明已完成数据读取后才得以执行。状态寄存器的这些最低有效位可以独立地或与余下的8位一起由Mario芯片处理器或主CPU读出。状态标志寄存器的最高有效位由规定的前缀指令设定,定义指令解释的各种方式。
位  方式
8  alt1  变更(ADD→ADC,SUB→SBC等…)
9  alt2  变更(ADD→ADD#,SUB→SUB#等…)
10  il  立即字节低位(在ih前进行)
11  ih  立即字节高位(缓冲低位字节直到高位字节就绪)
12  b  设定SReg和DReg,由WITH设定
13  -  备用
14  -  备用
15  irq  中断标志
在如上所述的ALT1方式时,ADD(加法)指令会解释为ADD  WITH  CARRY(带进位加法)指令,而SUB  TRACT(减法)指令会解释为SUBTRACT  WITH  CARRY(带进位减法)指令。指令ALT1起动该方式。
ALT2指令将对ADD指令的解释变更为ADD  WITH  IMMEDIATE  DATA(用立即数据的加法),而对SUBTRACT则变更为SUBTRACT  IMMEDIATE  DATA(减去立即数据)。“立即”数据是紧接着指令以字节给出的。注意指令ALT3会把位8和位9都设定为逻辑“1”电平。位10和位11根据该立即数据是立即高位字节还是立即低位字节来设定。状态寄存器的位12定义“b”方式,这里通过利用前缀指令“WITH”设定源端寄存器和目的端寄存器。状态寄存器的位15存储有在Mario芯片已停止运行之后设定的Mario中断信号。
除了上述的状态寄存器以外,Mario芯片还包括许多寄存器。如上所述,Mario芯片包括16个如图4A和4B的寄存器块76的说明中所描述的16位宽的寄存器。这些寄存器大多数是通过用寄存器并能用作数据和地址的存储。但是如上面所注明的,寄存器R15在所有时候却总是用作程序计数器。一般来说寄存器起两方面作用,用于同主CPU通信和控制执行程序。另外Mario芯片还采用其他寄存器,其功能在下表中给出。
寄存器  专用功能
r0  缺省的D  Reg和S  Reg
r1  PLOT指令用的X坐标
r2  PLOT指令用的Y坐标
r3  无
r4  LMULT指令结果的低位字
r5  无
r6  FRMULT和LMULT指令用的乘数字
r7  MERGE(合并)指令用的源1
r8  MERGE(合并)指令用的源2
r9  无
r10  无
r11  用于子程序调用的连接寄存器
r12  用于LOOP(循环)指令的计数
r13  LOOP指令分支转移的地址
r14  ROM地址,一经改动就开始从ROM读取字节
r15  程序计数器
其他寄存器
8位PCBANK  程序代码存储区寄存器
8位ROMBANK  程序数据ROM存储区寄存器64K存储区
8位RAMBANK  程序数据RAM存储区寄存器64K存储区
16位SCB  屏面基址
8位NBP  位平面数
8位SCS  屏面列尺寸选择:
256、320、512、640、1024、1280
(屏面16和20个字符高,在2、4和8
个位平面中)
Mario芯片还包括一彩色方式CMODE寄存器。在该寄存器中有4位在例示性实施例中用以产生下面所述的特殊效果。通过设定CMODE寄存器所建立的效果,如下面例子中所阐明的那样,是按照所设定的是16还是256彩色分辨率方式而有所不同。
CMODE寄存器各位如下:
CMODE位0
标绘彩色0位(非透明位)
在16彩色方式时:
若位0=1和所选择的彩色半字节=0则不作标绘
在256彩色方式且位3=0时:
若位0=1和彩色字节=0则不作标绘
在256彩色方式且位3=1时:
若位0=1和彩色低半字节=0则不作标绘
注意:透明性有效ON=0
透明性无效OFF=1
透明性OFF的唯一用途是将一区域填以0
(用来清屏)
CMODE位1
晃动位
在16彩色方式时晃动(高/低半字节给出两种彩色)
若(xpos  XOR  ypos  AND  1)=0选择低半字节
若(xpos  XOR  ypos  AND  1)=1选择高半字节
若透明性有效且所选择的彩色半字节为0则不作标绘
在256色方式时晃动应当没有效果
CMODE位2.
高半字节彩色位
在16彩色方式或在256彩色方式且CMODE位3被置位时
当本位被置位,COLOUR命令将彩色寄存器的低半字节设定为源字节的高半字节
(用来析取作为另一子画面的高半字节存储的16彩色的子画面)
若彩色寄存器的低半字节为0则在透明性有效时不作标绘。
CMODE位3
复杂位
仅用于256彩色方式。该位被置位时,彩色高半字节就被锁,COLOUR命令只改变低半字节。
仅从低半字节计算透明性。
在标准的256彩色方式,如果透明性有效,它是从所有位计算出的
;16彩色方式例
ibt  r0,$C0
colour  ;置彩色$C0
ibt  r0,%0000  ;置0
cmode
ibt  r0,$97
colour
plot  ;标绘彩色$7
ibt  r0,$30
colour
plot  ;不作标绘,因为彩色
为$0
;(透明性有效且低半字
节=0)
ibt  r0,%0001  ;置位1
cmode
ibt  r0,$40
colour
plot  ;标绘彩色$0
;(透明性无效)
;16彩色方式且置位2的例
ibt  r0,$C0
colour  ;置彩色$C0
;256彩色方式且置位3的例
ibt  r0,$C0
colour  ;置彩色$C0
ibt  r0,%1000  ;置位3
cmode
ibt  r0,$47
colour
plot  ;标绘彩色$C7
ibt  r0,$50
colour
plot  ;不作标绘,因彩色为
$C0
;(透明性有效且低半字
节=0)
ibt  r0,%1001  ;置位3和位1
cmode
ibt  r0,$60
colour
plot  ;标绘彩色$C0
;(透明性无效)
stop
;256彩色方式且置位3和位2的例
ibt  r0,$C0
colour  ;置彩色$C0
ibt  r0,%1100  ;置位3和位2
cmode
ibt  r0,$74
colour
plot  ;标绘彩色$C7
ibt  r0,$03
colour
plot  ;不作标绘,因彩色为
$C0
;(透明性有效且低半字
节=0)
ibt  r0,%1101  ;置位3、位2和位1
cmode
ibt  r0,$08
colour
plot  ;标绘彩色$C0
;(透明性无效)
stop
许多Mario芯片寄存器与特殊功能有关联。如上表中所表明的,若不另外指定,系统就将寄存器R0缺省为某一特殊指令所需的目的端寄存器或源端寄存器。寄存器R0还可用于ALU的累加器。如上所述乘法指令返回一个32位的结果。最低有效的16位存储在寄存器R4中。而寄存器R6则结合有符号带小数的乘法指令(FRMULT)和长字节乘法指令(LMULT)一起被采用。
寄存器R7和R8用于执行合并指令。该指令取用两个规定的寄存器(即寄存器R7、R8)并将它们合并在一起以形成子画面的座标数据。这种座标数据是用于对ROM表寻址以便将规定的子画面映像在规定的多边形上。这指令通过组合两寄存器的部分来定义包含在要映像在多边形上的子画面中的下一个像素的彩色的地址,从而有助于有效地执行质地映像操作。
寄存器R11和R13是用来控制子程序执行的。寄存器R11用作子程序调用的连接寄存器并存储程序计数器的内容加1。寄存器11的内容定义循环结束后须存取的地址。寄存器R12用来存储规定所要执行的循环次数的计数。循环的地址则存储在寄存器R13中。
如上所述,只要寄存器R14的内容被修改,就从ROM在寄存器R14中所存储的地址处读出一字节。在这种方式下,可结合下面提到的GET字节指令实现延迟或缓冲的READ操作。
回到上表中的“其他寄存器(Other  Registors)”,程序从其开始执行的程序ROM位置是采用24位地址进行编址。该地址最低有效的16位在程序计数器中得到。而确定程序存储区的最高有效位则存储在程序代码存储区(PC  Bank)寄存器。
ROM存储区寄存器(ROM  BANK)存储最高有效位,以允许Mario芯片处理器取得存储在ROM  10中的程序数据,这些最高有效位是被附加存储在寄存器R14中的16位ROM地址上。类似地,RAM存储区寄存器(RAMBANK)存储高阶地址位以允许Mario芯片处理器存取RAM中的程序数据。为有效地扩展Mario处理器的寻址范围,可将RAM和ROM的存储区寄存器的内容与Mario芯片的ROM和RAM存取指令一起运用。
屏面基址寄存器(SCB)被用来存储正被建立、旋转、放大或缩小的子画面或目标的虚拟位映像的地址。执行PLOT像素指令时,屏面基址寄存器SCB存储RAM中被存取和被写入的地址。
寄存器NBP被用来存储正在使用的位平面数。它一般表明利用2、4或8个位平面。另外,屏面列向尺寸寄存器SCS被用来按照每列中所包含的字符数确定关于虚拟的位映像的信息。
下面列出的Mario芯片指令集说明指令的助记符和在对相应的指令译码时所执行的相应的功能。首先在下面对不是不言自明的有关指令的某些功能提出简要的评述。
STOP指令是在Mario芯片已完成其操作时执行的,并用以置“GO”标志为零,同时还产生中断信号给主CPU。
CACHE指令用以定义要复制到Mario芯片超高速缓存RAM中并从该RAM执行的那部分程序ROM。执行CACHE指令时,程序计数器的内容被装到超高速缓存基址寄存器并使下面要说明的超高速缓存标记复位。
Mario芯片包括一系列延迟的分支转移指令,其中接着该转移的指令如下表所示的那样执行。转移去的地址是相对于程序计数器的内容的。指令集包括许多种基于下表中所列出条件的延迟转移。
Mario芯片包括许多“前缀”指令,即至/由/自(to/with/from)。这些前缀指令涉及后续指令的数据往来。例如“T0”前缀为下一指令设定目的端寄存器(DReg)。“FROM”前缀为下一指令设定源端寄存器。而“WITH”前缀则两者都设定。
许多指令在操作码中指定第二源寄存器。若没有前缀指令设定SReg和DReg它们就被缺省为R0。在不是前缀指令的各个指令后,SReg和DReg两者均设定为R0。若Dreg被设定为R15(程序计数器),因而使下一指令在R15中存储其内容时,就会起动延迟一周期的转移。
其它前缀指令在状态寄存器的高字节中设定标志以改变后续指令的操作。所有无前缀指令都使状态字的高字节清零。下面是有关后续指令可以怎样通过前缀指令被修改的例子。
lsr  ;r0=r0向右移1位
to  r4
lsr  ;r4=r0向右移1位
from  r4
lsr  ;r0=r4向右移1位
alt1
from  r6
to  r5
add  r7  ;r5=r6+r7+进位
alt1
with  r3
add  r3  ;r3=r3+r3+进位(6502rol)
若在状态寄存器中量上“b”标志,“TO”指令就修改为象操作“MOVE”(赋值)指令一样,TO指令确定信息传送去的寄存器而FROM指令则确定信息源。
STW指令在缓冲器中存储一特别的字,这样就无须一直等到完成存储操作后才执行后边的指令。在这种方式下,采用比处理器慢的RAM并不一定会使处理器速度减慢。
LOOP指令的执行将使得通用寄存器R12内容递减1。若R12的内容非零,则开始向R13中所确定的地址转移。
Alt1、Alt2和Alt3是设置状态寄存器中上面提到的标志以按下表中所示的不同的方式解释所执行的指令的前缀指令。
PLOT指令标识所要标绘的像素的X和Y屏面坐标,并在与X与Y坐标(如寄存器R1和R2中所表示的)相对应的屏面位置上标绘由COLOR指令所确定的彩色。PLOT像素指令包括使R1内容的自动递增,以有助于高速标绘水平线而免除一额外的递增指令。
若Alt1标志被置位则标绘指令被解释为READ  PIXEL(读出像素)指令(RPIX)。通过执行读出像素指令,在指定屏面位置上的像素彩色被读出,它还可用来将不想要的像素信息从标绘硬件冲掉。
读出像素指令RPIX实质上是反过来运用标绘硬件,从字符的矩阵读出以确定在指令中所指定的某一特定像素的颜色。COLOR指令向彩色硬件提供可由指定的源端寄存器的内容确定的下一个像素的彩色。
“CMODE”指令设定彩色方式并能用于产生如上面提供的例中所展示的不同特殊效果。例如,利用CMODE指令可使交替的像素以不同彩色交替变化,形成浓淡变化,从而产生晃动效果。该CMODE指令还能用来控制透明性从而使子画面的显示会勾划出背景显示。通过设定如上例子的有关彩色方式的标志来确定透明性。
指令集还包括在旋转多边形的计算中用来确定所要显示的目标的梯度或斜率的小数带符号乘法。
递增指令若与寄存器R14一起使用就会起动从ROM的读出。GETC指令会从ROM取出所存取的字节并将装入彩色寄存器中。
下表说明按照目前较佳实施例的例示性Mario芯片的指令集(包括上面已讨论过的那些指令)。
指令集
十六进制代码  助记符  功能
$00  STOP  使Mario芯片停止运行并产生
65816 IRQ g=0
$01  NOP  不操作1周期
$02  CACHE  将超高速缓存基址置为PC并且使
超高速缓存标志复位(只要PC不
等于当前超高速缓存基址)若超高
速缓存基址<>r15则超高速缓存基
址=r15,使超高速缓存标志复位
$03  LSR  逻辑右移
DReg=SReg LSR1
$04  ROL  带进位循环左移
DReg=SReg ROL1
$05 nn  BRA sbyte  总是作延迟转移
r15=r15+带符号字节偏移
$06 nn  BGE sbyte  若大于或等于则延迟转移
若(s XOR v)=1则r15=r15+带
符号字节偏移
$07 nn  BLT sbyte  若小于则延迟转移
若(s XOR v)=0则r15=r15+带
符号字节偏移
$08 nn  BEQ sbyte  若等于则延迟转移
若z=1则r15=r15+带符号字节
偏移
$09 nn  BNE sbyte  若不等于则延迟转移
若z=0则r15=r15+带符号字节
偏移
$0a nn  BPL sbyte  若为正则延迟转移
若s=0则r15=r15+带符号字节
偏移
$0b nn  BMI sbyte  若为负则延迟转移
若s=1则r15=r15+带符号字节
偏移
$0c nn  BCC sbyte  若进位清零则延迟转移
若c=0则r15=r15+带符号字节
偏移
$0d nn  BCS sbyte  若进位置位则延迟转移
若c=1则r15=r15+带符号字节
偏移
$0e nn  BCC sbyte  若溢出清零则延迟转移
若v=0则r15=r15+带符号字节
偏移
$0f nn  BVC sbyte  若溢出置位则延迟转移
若v=1则r15=r15+带符号字节
偏移
$10-$1f  TO r0…r15  (前缀)设DReg为rn(下一操作码
的目的端寄存器)
DReg=rn
若b:  MOVE  rn=SReg(无标志置位)
$20-$2f  WITH r0 …  (前缀)设DReg和SReg为rn
r15  (源和目的和b标志)
DReg=rn
SReg=rn
b=1
$30-$3b  STW(rn)  在rn中的地址处存储SReg
RAM[rn]=SReg(字低/高被缓
冲)
(偶数地址上的字正常存储)
若alt1:  STB(rn)  在rn中的地址处存储SReg的低
字节
RAM[rn]=SReg.1(字节被缓冲)
$3c:  LOOP  使r12递减1若r12<>0则延迟转
移到r13中的地址
r12=r12-1
若r12<>0,则r15=r13
(TO/WITH/FROM不起作用)
$3d  ALT1  (前缀)标志alt1置位
alt1=1
$3e  ALT2  (前缀)标志alt2置位
alt2=1
$3f  ALT3  (前缀)标志alt1 & alt2置位
alt1=1
alt2=1
$40-$4b  LDW(rn)  从rn中的地址处取出装到DReg
DReg=RAM[rn](字低/高等待)
(偶数地址上的字正常装入)
若alt1:  LDB(rn)  从rn中的地址处取出(无符号字
节)装到DReg
DReg.h=0
DReg.l=RAM[rn](字节等待)
$4c  PLOT  在r1,r2(X、Y)处标绘像素且使r1
递增(N.B.并未检验r1和r2是否
在屏面上,但会在RAM的任何地
方绘制)
标绘(r1,r2)
r1=r1+1
若alt1:  RPIX  读出在r1、r2(x、y)处像素的彩色
DReg=点(r1,r2)
$4d  SWAP  交换字节
DReg.h=SReg.l
DReg.l=SReg.h
$4e  COLOUR  设定PLOT彩色
标绘彩色=SReg
若alt1:  CMODE  设定PLOT彩色方式
标绘彩色方式=SReg
$4f  NOT  DReg=对SReg取反(NOT
SReg)
$50-$5f  ADD r0…r15  DReg=SReg+rn
若alt1:  ADC  DReg=SReg+rn+c
若alt2:  ADD  DReg=SReg+#n
若alt1+alt2:  ADC  DReg=SReg+#n+c
$60-$6f  SUB r0…r15  DReg=SReg-rn
若alt1:  SBC  DReg=Reg-rn-c
若alt2:  SUB  DReg=SReg-#n
若alt1+alt2:  CMP  SReg|rn(z,s,c,v)
$70  MERGE  将r7和r8的高字节合并到DReg
DReg.h=r7.h
DReg.l=r8.h
在该结果基础上设定标志:
s=b15 OR b7
v=b14 OR b6 OR s
c=b 13 OR b5 OR v
z=b 12 OR b4 OR c
$71-$7f  AND r1…r15  DReg=SReg AND rn
若alt1:  BIC  DReg=SReg AND NOT rn
若alt2:  AND  DReg=SReg AND #n
若alt1+alt2:  BIC  DReg=SReg AND NOT # n
$80-$8f  MULT r0…  DReg=SReg*Rn(带符号的8×8
r15  位)
若alt1:  UMULT  DReg=SReg*Rn(不带符号的8
×8位)
若alt2:  MULT  DReg=SReg*#n(带符号的8×8
位)
若alt1+alt2:  UMULT  DReg=SReg*#n(不带符号的8
×8位)
$90  SBK  将SReg存到上一次使用的RAM
地址
$91-$94  LINK1…4  将返回地址连接到r11
r11=r15+1…4
$95  SEX  符号从低字节扩展到字
DReg.[b15-b7]=SReg.[b7]
DReg.l=SReg.l
$96  ASR  算术右移
DReg=SReg ASR1
若alt1:  DIV2  除以2(带舍入)
DReg=SReg ASR1
若DReg=-1则DReg=0
$97  ROR  带进位循环右移
DReg=SReg ROR 1
$98-$9d  JMP r8…r13  转移到rn中的地址
r15=rn(延迟转移)
if alt1:  LJMP  长转移到rn中的地址
(ROM Bank来自SReg)
并使超高速缓存复位
r15=rn(延迟转移)
程序ROM存储区寄存器=SReg
$9e  LOB  低字节
DReg.h=0
DReg.l=SReg.l
$9f  FMULT  小数带符号乘法
DReg=(SReg*r6).hw(带符号的
16×16位乘法)
c=(SReg*r6).b15
若alt1:  LMULT  长字节带符号乘法
DReg=(SReg*r6).hw(带符号的
16×16位乘法)
r4=(SReg*r6).lw
c=(SReg*r6).b15
$a0-$af nn  IBT r0…r15,sbyte  将符号扩展的字节装到
rn中
rn=立即字节(符号扩
展的)
若alt1:  LMS r0…r15,byte  从绝对的偏移字节地址
取出装到rn中
rn=RAM[byte<<1]
(字数据)
若alt2:  SMS r0…r15,byte  将rn存储到绝对的偏
移字节地址
RAM-[byte<<
1]=rn(字数据)
$b0-$bf  FROM r0…r15  (前缀)设SReg=rn
SReg=rn
若b:  MOVES  DReg=rn
(z,s & v(符号低字
节)标志)
$c0  HIB  高字节
DReg.h=0
DReg.l=SReg.h
$cl-$cf  OR r1…r15  DReg=SReg OR Rn
若alt1:  XOR  DReg=SReg XOR Rn
若alt2:  OR  DReg=SReg OR #n
若alt1+alt2:  XOR  DReg=SReg
XOR #n
$do-$de  INC r0…r14  使rn递增
rn=rn+1
(TO/WITH/FROM
不起作用)
$df  GETC  从ROM缓冲器取出字
节来标绘彩色
若alt2:  RAMB  RAM数据存储区寄存
器=SReg
若alt1+alt12:  ROMB  ROM数据存储区寄存
器=SReg
$e0…$ee  DEC r0…r14  使rn递减
rn=rn-1
(TO/WITH/FROM
不起作用)
$ef  GETB  从ROM缓冲器取出不
带符号的字节送到
DReg
DReg=ROM缓冲器
字节.零扩展
若alt1:  GETBH  从ROM缓冲器取出送
至DReg的高字节
DReg=ROM缓冲器
字节。与低字节合并
DReg=(SReg &
$FF)+(byte<<8)(采
用WITH)
若alt2:  GETBL  从ROM缓冲器取出送
至DReg的低字节
DReg=ROM缓冲器
字节。与高字节合并(采
用WITH)
若alt1+alt2:  GETBS  从ROM缓冲器,取出
带符号字节送至DReg
DReg=ROM缓冲器
字节。符号扩展
$f0-$ffnnnn  LWT r0…r15,word  将立即字装到rn中rn
=立即字(经缓冲的)
若alt1:  LM r0…r15,word  从绝对的字地址取出装
到rn中
rn=RAM[字地址](字
数据)
若alt2:  SM r0…r15,word  将rn存到绝对的字地
图6至图17更为详细地示出图4A和图4B中用方框图示出的各组成部分。为更清楚地展现本发明的独到特征,那些对本技术领域的技术人员来说是常规或显然的,以及会使这些独到的特征不能被清楚看到的电路细节不在下面的图中示出。
可用作ALU单元50的例示性算术逻辑单元示于图6。如图4A和图6所示ALU50与X、Y和Z总线相连。因此,Mario芯片的通用寄存器R0-R15与ALU相连。
ALU50经16位加法器/减法器152执行加法和减法功能,ALU50还包括常规的“AND”逻辑电路154,“OR”逻辑电路156,和EXCLUSIVE  OR(异或)”逻辑电路158。
ALU还包括常规的移位功能电路,其中任何进位位移位到最高有效位位置而结果则经线160送到多路转换器164。另外,ALU50执行常规的字节交换操作,可使载于总线上的最低有效字节和最高有效字节交换,而结果则沿线162送到多路转换器164。X和Y总线如图6所示与电路152,154,156和158相连。
加法器/减法器152,电路154,156,158的各自输出,移位输出和交换功能输出与16位、6进1“出”的多路转换器164相连。根据译出的指令,向目的端总线Z输出相应的结果。
加法器/减法器152除了从X总线接收16位,还根据送到多路转换器150的指令译码器输入接收在总线Y送来的信息或指令本身的信息。
ALU50还包括CPU标志发生电路166。CPU标志电路166产生零,溢出,符号和进位信号以便于装到电路166中的至少一个标志寄存器。CPU标志可由指令译码电路60置位,该电路对指令所产生的进位起动、零起动,符号起动和溢出起动信号进行译码,根据加法器/减法器152所确定的相应条件来使标志置位。还可根据输入标志电路166的目的端(或结果)总线Z的内容使这些标志置位。标志例如可用来触发基于较广的条件范围的条件转移操作。
图7、8A和8B更为详细地示出图4A中的像素标绘电路(52、54、56和58)。该电路执行PLOT命令,它取出某一特定的X坐标和Y坐标,并在那些屏面坐标处以由COLOR命令装载的彩色寄存器54的内容所确定的彩色标绘像素。
Super  NES如上面所注明的那样采用字符映像的显示屏面。标绘硬件用以将像素坐标地址数据变换为字符映像的地址数据。
Super  NES的字符是定义在位平面中的。字符可有2、4或8位平面以确定4、16或256种彩色。字符定义的每个字节包括该字符的一个像素行的位平面。这些像素从左到右,从高位到低位被确定。对于256彩色方式操作,有8RAM位置需要更新。
像素标绘电路具有一个本地缓冲机构,它包括彩色矩阵206,该矩阵可存储要显示的某一特定字节的所有各位,因为这些位可能最终都需要更新。位平面计数器208与彩色矩阵电路206相连。像素坐标从X和Y总线装载到像素X和像素Y寄存器202、204。在本例示性实施例,通用寄存器R1和R2用作图7中示出的标绘X寄存器202和标绘Y寄存器。这些寄存器接收按PLOT命令规定要标绘的像素的X和Y座标。
标绘X和标绘Y寄存器202、204与基于全加器和半加器的字符地址计算电路相连,该电路按地址输出到2位置滚桶式移位电路214,进而与标绘地址寄存器216和地址比较器218相连。标绘X寄存器的三个最低有效位与多路分解器212相连进而与位未决寄存器210相连。
示于图8A中的标绘控制器200接收表明已对PLOT像素(PLOT)或READ像素(RPIX)命令译码的信号以及下述其他控制信号。标绘控制器200产生以下述方式使用的标绘电路控制信号。
如上所述,标绘控制电路200产生在像素标绘硬件52中使用的控制信号。如图8A所示,像素控制电路200接收从位未决寄存器210的输出,该输出是经AND门201与像素控制电路200相连的。若位未决寄存器210的所有8位都被置位,就通知像素控制逻辑200可跳过读出周期并可将彩色矩阵206的信息写到RAM。
像素控制电路200还响应PLOT命令起动其操作。像素控制逻辑200也响应READ像素命令RPIX起动基本相同的操作,不过新信息并不写到彩色矩阵206以输出到RAM。如上所述,若需要知道屏面上特定像素的彩色就执行READ像素命令,该命令也可用来将彩色矩阵206的现存信息冲掉。
控制器200还接收RAM完成控制信号RAM  DONE,它表明已完成RAM存取。如上所述,RAM完成信号还用来使标记彩色矩阵206的位平面的位平面计数器208递增。标绘控制器200还接收从地址比较器218来的PLEQ信号,这表明地址匹配无需将彩色矩阵206的内容写到RAM,从而表明应继续对当前的彩色矩阵内容更新。该标绘控制器200还接收告知标绘控制器200有关必须读出和写入多少字节的屏面方式(SCR.MD)控制信号。
标绘控制电路200产生使彩色矩阵206的内容在它的第二缓冲级缓冲的转储控制信号DUMP(结合图7和图8B一起参考)。控制器200另外产生使位未决寄存器清零信号CLRPND和装载位未决寄存器控制信号LDPND并将这些信号送到位未决寄存器210。另外,控制器200产生与结合图8B说明的彩色矩阵单元相关的LDPIX和BPR控制信号。
假定像素标绘硬件未被另外占用,指令译码器对PLOT命令的译码和输入到标绘控制器200的PLOT信号就起动产生装载未决(寄存器)信号LDPND。LDPND信号被送到位未决寄存器210而使数据得以从多路分解器212装到位未决寄存器210中。清未决(寄存器)信号CLRPND是响应表明未决数据已写到RAM去的RAM完成信号RAMDONE而产生的。此后位未决寄存器闲置以供下一像素标绘信息使用。
图8C中所示的是说明由标绘控制器200接收的信号,各种地址和数据信号,其他有关的控制信号和标绘控制器所产生的上述输出控制信号之间的关系的时序图。例示性的地址值、数据值等仅仅是用于说明而示出的。
标绘硬件52如下面那样工作。当标绘控制器200确定标绘硬件52未被占用,示于图4A中的彩色寄存器54的内容被装进8×8彩色矩阵电路206的水平行。彩色矩阵206按行装载而按列读出。彩色寄存器54的内容由COLOR命令更新。任何后续PLOT命令将通过彩色寄存器54这个寄存器将彩色数据装进彩色矩阵。
彩色矩阵中装上彩色寄存器各位的垂直位置是由存储在标绘X寄存器202中的3位最低有效位确定的。这样这标绘地址的三位最低有效位就决定了彩色矩阵206中的所要更新的一行位。
位未决寄存器210是用来记录屏面字符的分节的哪些特定位正被更新。寄存器210包括表明各位已被写到屏面的相关部分的16个寄存器标志。该位未决寄存器210是响应由标绘控制器200所产生的信号LDPND而被装载的并由信号CLRPND清除。
若为更新在相同区域的屏面映像而要执行后续的标绘命令,一给定位的操作就与装入到8×8彩色矩阵206的对应于像素的附加彩色数据一同重复。另一位则利用存于标绘X寄存器202中的标绘地址的最低有效位置设于位未决寄存器210中。特定位是经与标绘X寄存器202相连的3路至8路多路分解器装载到位未决寄存器210中。若所要更新的像素水平位置在8个像素以外,或它处在不同的垂直位置时,则已写入矩阵206的数据必须读出到RAM6(或RAM8)此后彩色矩阵206就可自由接收新的彩色数据。在接收到要求写到RAM的后续标绘命令之前,彩色矩阵206的当前内容一直在像素标绘硬件中例如在彩色矩阵206中被缓冲。
当来自彩色矩阵206的数据被写到RAM6或RAM8就通过使用示于图7中的逻辑门,半加器和全加器进行地址变换计算以将X、Y坐标变换成RAM地址。实际的地址计算是按照下面给出的注释和例示性代码进行的。这些计算会随着所采用的是4、16还是256彩色方式有所不同。所给出的例示性计算是针对256彩色方式的。
这些256彩色字符具有16字节的4组,各自确定位平面对共有64字节。
位映像是通过将独特的字符放在所需屏面区的每个位置上而建立的。当进行与Super  NES相关的标绘时,最好以列组织字符。
例如(128个像素高的屏面)
字符号
0  16  32  …  …
1  17  33  …
2  18  24  …
·  ·  ·
·  ·  ·
15  31  47  …
Super  NES并不限于256个字符,故而位映像容量主要受到存储器和DMA传送时间的约束。例如Mario芯片能在128和160个像素高的屏面上标绘。最大屏面宽度是32个字符或256个像素。
下面的算法是举例说明如何采用按列组织的虚拟位映像控制像 素标绘。
先对所有的位平面从X坐标的三位最低有效位计算像素掩码。
像素号  掩码
0  %10000000
1  %01000000
  ·  ·  ·
7  %00000001
接下来利用去除了低3位的Y座标计算沿着一列的下行偏移量,以给出沿一列的字符数,然后乘上字符大小。
屏面彩色  以字节为单位的字符大小
4  16
16  32
256  64
接下来从X座标去除低3位计算字符到顶的偏移,乘以列大小。列大小是列的字符数乘以字符大小。
一般的列大小
彩色  字符高
16  20
4  256字节  320字节
16  512字节  640字节
256  1024字节  1280字节
Y坐标的低3位给出沿字符向下的字节偏移。所有偏移与当前位映像指针之和给出含有像素第一位平面的字节的地址。随后的位平面交替地从上一次平面移上1字节和移上15字节。然后,像素各位就可用像素掩码置位或清零。各位平面的位被置位或清零呈该像素所需的存储在彩色寄存器54中的彩色数中相应位的状态。
示范码
;以65816代码在4个位平面上标绘用于我们的游戏演示
;程序基本上是表驱动的
;寄存器A、X和Y是16位
置彩色
;取彩色并加倍
lda  Colour
asl  a
tax
;设置位平面0和1的彩色掩码
lda    mask1 tab,x
sta    mask1
;设置位平面2和3的彩色掩码
lda    mask2 tab,x
sta    mask 2
rts
标绘
;取水平和垂直坐标
;使两者加倍并送到Y和Z寄存器
lda    plot xl
asl    a
tay               ;Y是X坐标*2
lda    plot yl
asl    a
tax               ;X是Y坐标*2
;取沿列向下的偏移
lda  pyoftab,x
;加列偏移初值
clc
adc  pxoftab,y
;加两倍的缓冲器指示(选择位映像)
clc
adc  drawmap
tax
;X是含有所需要的像素的字从位映象基址的偏移
;Y是像素的X坐标*2
;作位平面0和1
lda.l    bitmapbase,x         ;取含有像素字
and      pbittabn,y           ;掩去老像素彩色
sta      pmask
lda      maskl                ;将彩色和像素掩码一起掩去
and      pbittab,y
ora      pmask                ;加入其他像素
sta.l    bitmapbase,x         ;存到位映像
;作位平面2和3
lda.l  bitmapbase+16,x
and  pbittabn,y
sta  pmask
lda  mask2
and  pbittab,y
ora  pmask
sta.l  bitmapbase+16,x
rts
;像素位掩码对的256字表
pbittab
rept32  ;num_col
dw  $8080,$4040,$2020,$1010,$0808,$0404$0202,$0101
endr
;字反向的上表
pbittabn
rept32  ;num_col
dw  $7f7f,-$4040,-$2020,-$1010,-$808,-$404,-$202,-$101
endr
;对位平面0和1的彩色掩码(彩色0至15)
mask1  tab
dw  $0000,$00ff,$ff00,$ffff,$0000,$00ff,$ff00,$ffff
dw  $0000,$00ff,$ff00,$ffff,$0000,$00ff,$ff00,$ffff
;对位平面2和3的彩色掩码(彩色0至15)
mask2  tab
dw  $0000,$0000,$0000,$0000,$00ff,$00ff,$00ff,$00ff
dw  $ff00,$ff00,$ff00,$ff00,$ffff,$ffff,$ffff,$ffff
col_size  equ.Number_char_rows*8*Number_bit_planes
(16)  (4)
;对字符列表起始位置的偏移
pxoftab
temp=0
rept32  ;字符列数
dw  temp,temp,temp,temp,temp,temp,temp,temp
temp=temp+col_size
endr
;沿列表向下偏移
pyoftab
temp=0
rept  32
dw  temp
dw  temp+2
dw  temp+4
dw  temp+6
dw  temp+8
dw  temp+10
dw  temp+12
dw  temp+14
temp=temp+32
endr
更为仔细地参看图7,确定所要标绘的像素位置的屏面上的X和Y坐标被装载到PLOT  X和Y寄存器202和204(这些寄存器实质上可以是寄存器块76中的R1和R2寄存器)。装入到PLOT  X寄存器202的标绘地址的3位最低有效位按指定的X和Y坐标确定位平面字节中的哪一位将被写入。累加器R0的内容被装入到由标绘X寄存器202的最低有效位所选定的彩色矩阵206的列。
若标绘X寄存器202是0,则定义该像素的8位的各位中将更新最低有效位。随着标绘X寄存器202为0,3路至8路多路分解器将使位未决寄存器中最低有效位置为逻辑“1”。
既然位未决寄存器210的相应位表明无需作修改位未决寄存器210被RAM控制器用来表明无需从RAM写出的间隔。
位未决寄存器210用作像素掩码缓冲器以防止从RAM覆盖写入新数据。为完成这一功能,如图7中所示,位未决寄存器210的内容作为输入送到彩色矩阵电路206。
若BIT_PENDING寄存器210是0,则计算像素的屏面地址,并将它装到标绘地址寄存器216,该字节中的像素位置用来使BIT_PENDING寄存器210中的相同位置位。若BIT_PENDING寄存器210是非零,则使BUSY标志置位。
若新计算出的地址等于PLOT_ADDR寄存器216的内容,则新的像素位位置在BIT_PENDING寄存器210中置位并使BUSY标志复位。
若新地址不同于PLOT_ADDR寄存器的内容,则采取以下步骤。
步骤1
若BIT_PENDING寄存器210包含FFh则直接进行步骤3。
步骤2
从RAM的PLOT_ADDR+屏面基址处读取字节送到临时的数据缓冲器PLOT_BUFF中。
步骤3
若BIT_PEND寄存器210所屏蔽的数据缓冲器中的各位全部等于PLOT_COLOR寄存器矩阵的第0行,则直接进行步骤5。
步骤4
将PLOT_COLOR寄存器矩阵的第0行写入到由BIT_PENDING寄存器启用的PLOT_BUFF的所有位。将数据缓冲器内容写回到RAM的PLOT_ADDR处。
步骤5
执行相同操作(PLOT_ADDR+1)和执行PLOT_COLOR寄存器矩阵的第1行。
步骤6
若为8或256彩色方式,在(PLOT_ADDR+16)上执行相同的操作和执行PLOT_COLOR寄存器矩阵的第2行。
继续直到所有彩色位更新
标绘X和标绘Y寄存器的内容是图7中所表示的全加器和半加器电路处理的。在图7的方框图中对全加器FA和半加器HA的配置和有关的逻辑电路进行了简化。地址的计算可如下完成:
地址=屏面基址+2*y[0.2]+(y[3..7]+x[3..7]*16+(x[3..7]*4)&&scr_ht)
*字符大小
中间项为
y7  y6  y5  y4  y3
x7  x6  x5  x4  x3  0  0
x7  x6  x5  x4  x3  0  0  0  0
因而例如用6个全加器和1个半加器产生一10位的中间结果px[0..9]。
为使中间结果移位成为所选定的彩色方式用的正确精度,该结果送到由字符大小值所控制的12×3多路转换器。这与y的较低位y[0..2]结合形成16位屏面地址。要完成该地址计算,这再与允许将屏面置于1K边界上的屏面基址值scr[9..22]相加。
这地址随后送到根据所选择的4、16或256彩色分辨率用来将所送到的地址信息输入乘以1或2或4的双位置滚桶式移位器214。
移位电路214的输出被送到起到RAM地址的缓冲存储器作用的标绘地址寄存器216。由于在执行标绘命令之后,寄存器R1和R2即标绘X和标绘Y寄存器的内容会改变,因而该地址需缓冲。
地址比较器218对作为从移位电路214的输出由标绘硬件确定的新地址与存储在标绘地址寄存器216的旧地址进行比较。若地址不同则该地址必须写到RAM。若存储于地址寄存器216的标绘地址与移位电路214的输出相同,地址比较器218就产生(送到标绘控制器200的)控制信号PLEQ。
回到彩色矩阵206,上面已说明过彩色矩阵206是按列读出的。位平面计数器208与彩色矩阵206相连以确定要读出哪一列。位平面计数器208与RAM控制器88相连,当完成RAM操作,RAM控制器88产生使位平面计数器递增的信号。
彩色矩阵206包括诸如图8B所示的这类单元的阵列。在8×8矩阵206的一个矩阵元中有64个这类单元。当对标绘命令译码时,控制器200将指令控制信号LDPIX送到锁存器220,使该锁存器装有来自彩色寄存器54的彩色数据COL。由控制器200产生控制信号DUMP表明彩色矩阵206中的第一级缓冲已完成和数据需输出给屏面。一旦产生DUMP信号,锁存在锁存器220中的数据就送给门电路226和锁存器228。当DUMP信号被有效地送到门电路226,门电路则将数据送到锁存器228。同时,门224关闭进而阻止来自锁存器228的同相输出端的反馈回路使它保持以前所存储的数据。
当数据从RAM读进来并填到数据间隔时,控制信号BPR就向门222提供零输入且LDRAM信号将处于零状态。在这类情况下,来自RAMD输入的数据输入将经过门电路226送进锁存器228。锁存器228中的数据随后可读出如图7所示经RAM控制器送到RAM数据总线。其他这类单元组合在一起将由X,Y像素标识所表示的像素数据转换成同Super  NES字符格式相兼容的字符数据。
在图9中详细示出的RAM控制器88产生有关存取游戏卡RAM(s)的各种控制信号。游戏卡RAM(s)必须在Super  NES、Mario芯片的标绘硬件,和从所执行的Mario芯片程序取数据过程之间共用。RAM控制器88的作用在于确保在相应的时刻将相应的地址送给RAM地址总线。相应时刻的RAM存取信号的产生是由图10中更详细示出的仲裁逻辑310部分地控制的。
RAM控制器88包括一在来自RAM数据插脚经RAMD数据总线的输入与指令总线之间多路复用的多路转换器304。响应从指令译码器60来的信号使指令总线或RAM数据总线选通,相应的RAM输出则置于目的端Z总线上。
RAM控制器88还包括一16位数据寄存器300,在从指令译码器60所收到信号的控制下保留来存储从16位X总线或16位Y总线来的向RAM写入的数据。装进数据寄存器300的数据被分成低字节和高字节,经多路转换器302根据从译码器60收到的指令而将低字节或高字节送到RAM数据插脚。
RAM控制器88还包括一20位地址多路转换器308。多路转换器308对应从仲裁电路310收到的控制信号(即从仲裁电路310中所产生的代码确认CACK,数据确认DACK,或标绘确认PACK信号获得的信号),选择其一地址输入。来自Super  NES地址总线HA的地址信号由多路转换器308接收,只要Mario“占用”状态位置为零就经存储器定时信号发生器312送到RAM地址总线。通过将信号RAN送给还接收RAM刷新控制信号RFSH的仲裁电路310告知仲裁电路310Mario芯片占用RAM的状态。RAN和RFSH信号用“或”连在一起以形成图10中所示的“暂停”信号。
地址多路转换器308还从16位多路转换器寄存器306接收地址输入。多路转换器寄存器306根据由指令译码器60所产生的选择信号接收Y总线的内容或指令总线的内容。多路转换器308还接收作为地址输入的数据存储区寄存器314的输出和图9中所示的程序计数器PC的内容。屏面存储区寄存器316的输出用于形成输入到多路转换器308的标绘地址的最高有效位,而从图7的标绘电路输入最低有效位。屏面存储区寄存器316和数据存储区寄存器314均装上了主数据总线HD来的数据并且可由主CPU寻址。这些寄存器示于图9中,但本身不是一定得配置于RAM控制器88中,而是将它们的内容送给RAM控制器。例如数据存储区寄存器314可以在下述ROM控制器104中而屏面存储区寄存器可以配置在标绘硬件52中。
所要输出的多路转换器308输入信号是如下选择的。若发生代码确认信号CACK,则选择代码存储区和程序计数器PC输入。若发生数据确认信号DACK,则选择数据存储区加多路转换器寄存器输入。若出现标绘确认信号PACK,则选择标绘地址。最后若既无CACK、DACK也无PACK信号出现,就选择主机(即SNES)地址输入。
多路转换器308的20位地址输出送到存储器定时信号发生器312,它则在合适的时刻将这些地址信号送给RAM6、RAM8。存储器定时信号发生器312接收仲裁块310中葛莱计数器(graycounter)来的输出。存储器定时信号发生器312对葛莱计数器来的输出译码,并产生经RAM地址总线RAMA对图1中的RAM6、RAM8寻址的输出信号。另外一种方式是,定时信号发生器312如图1所示产生包括行地址选通信号RAS,列地址选通信号CAS和写入允许信号WE在内的用于存取RAM6、RAM8的控制信号。
存储器定时信号发生器312产生一反馈给仲裁逻辑310表明RAM周期结束的DONE信号。存储器定时信号发生器312还产生一用来将外部RAM来的数据锁存进RAM控制器中的数据锁存器(未示出)的数据锁存信号DATLAT。RAM来的数据随后例如是经RAM数据总线RAMD_IN送给Mario芯片电路。定时信号发生器312来的RAM  A地址信号输出可送给游戏卡上的任一静态RAM。若游戏卡中用的是动态RAM则产生控制信号CAS、RAS和WE。如上面说明的选配项电阻的设定所表明的,静态或动态RAM信号是根据Mario芯片的配置而相应地产生的。图9A中示出定时信号发生器312产生的示范性定时信号和其他有关信号。所示出的示范性地址和数据值仅用于说明。RAM  DONE信号则示于图8C中。
在合适的时刻存取RAM的信号产生是部分地由仲裁逻辑310控制的。如图10所示,仲裁逻辑310接收有关存储器存取输入的信号CACHE(超高速缓存)请求CACHERQ,数据请求DATRQ和标绘请求PLTRQ。这些输入信号每一个分别临时地存储在锁存器325,327,329中。若所要执行的Mario指令出自RAM或ROM,则通过接收到CACHE请求信号CAC  HERQ来起动处理,该信号就图10而言是用来确认正执行的指令不是来自超高速缓存RAM因而一定是来自RAM或ROM的。这样CACHE请求信号CACHERQ表明不能从CACHE(超高速缓存)94取出指令执行。数据请求信号DATARQ是作为对需对RAM存取的指令(例如装字节、装字指令)译码的结果产生的。另外,仲裁逻辑310接收响应标绘命令的译码而由标绘控制器200产生的标绘请求信号PLTRQ。
当Mario芯片正在运行和Mario占用位被置位时仲裁逻辑310才起动(如状态寄存器SUSPEND(暂停)方式位处于“0”状态所表明的)。在收到和存储CACHE请求,数据请求,和标绘请求信号后,锁存器325,327和329分别产生CRQ,DRQ和PRQ信号。门331,333和335接收各自锁存器的同相输出端来的这些信号并为这些信号建立优先级。在这方面,CACHE请求信号具有最高的优先级,数据具有第二位高的优先级而标绘请求则具有最低的优先级。CACHE请求信号被给予最高优先级是因为它表明已试图执行来自CACHE指令,但必须从RAM存取指令。若较高优先级请求已经使其各自的锁存器置位,则门电路333和335用以确保较低优先级的请求无法使锁存器339和341置位。只有系统不是处于暂停状态,锁存器337,339,341才能置位,因为SUSPEND(暂停)方式信号被输入到门331,333和335中的各个门。当Mario芯片占用即可自由地存取RAM时SUSPEND方式信号会处于低逻辑电平状态。若SUSPEND被置为1锁存器337,339和341不能被置位,当确认锁存器337,339和341中的任一个已经为“1”(即一个周期已经在进行)时也不能被置位。门331、333和335建立RAM的优先级。若CACHE  REQUEST(超高速缓存请求)锁存器337被置位则数据确认锁存器339就不会被置位,若CACHE或DATA请求锁存器被置位则标绘确认锁存器341也不会被置位。
锁存器337一由超高速缓存请求信号置位就产生超高速缓存确认信号CACK,而它一由图10中的逻辑电路确立,CACHE94(或RAM)就可供使用。若图10中的逻辑电路确定RAM未被其它方式占用,就会同样地产生数据确认信号DACK和标绘请求确认信号PACK,以确认数据请求和标绘请求。
锁存器337,339和341的同相输出送到门电路343,进而经NOR门344使产生RAM存取的定时信号的葛莱计数器345复位。本技术领域的技术人员会理解葛莱计数器是每次仅有一个输出位改变的计数器,这可方便地用来控制RAM存取时间。
由定时信号发生器312产生的DONE(完成)信号由NOR门344和锁存器337,339,341接收。DONE信号表明一个RAM周期已结束。DONE信号的产生触发仲裁逻辑310中的相应锁存器的清零,使已锁存的请求取消。DONE信号还送到始发电路例如超高速缓存控制器68或标绘控制器52,以表明RAM存取结束。
按照本发明的另一实施例,Mario芯片可采用双时钟系统。这样Mario芯片处理器无需由例如驱动上面提到的RAM控制器电路的相同时钟来驱动。例如RAM控制器88可由Super  NES来的21MHz时钟信号来驱动而Mario芯片处理器可由另一个可变频时钟驱动。在此方式下Mario芯片处理器可不限定工作于21MHz时钟频率。
按照这示范性实施例的Mario芯片可采用异步态机器控制电路;诸如示于图11的执行再同步双时钟接口功能的那种电路。若采用不同的时钟系统而不是工作在另一时钟频率的存储器控制器来实施,则图11电路可以用来与Mario芯片处理器接口。
示于图11中的再同步电路接收与时钟信号CK不同步的外来的时钟信号DIN。不论DIN的频率是高于还是低于时钟频率CK,再同步电路都会由DIN产生一与CK同步的信号。
如图12的说明,图11所示电路响应信号DIN从状态010,经过110;100,101,111回到起始状态010。图11的再同步电路可用在诸如ROM控制器104和RAM控制器88这类接收双时钟信号的任何接口电路。
图11所示的电路因由门F对锁存器A置位故而通过将从其闲置或复位态“010”切换成状态“110”而响应外来的信号DIN。再同步时钟CK一旦变低(也许已经为真),锁存器B由门E复位形成状态“100”,当时钟再次变高时,由门A使锁存器C置位形成状态“101”。
锁存器C在图11中的Q从所示的该电路产生输出。当输入信号再次变低,锁存器就再次由门C置位形成状态“111”。当时钟信号CK在到达状态“111”之后又变低时,锁存器A由门G复位形成状态011。此后时钟CK再变高并且由门B使锁存器C复位,回到状态机器闲置态,其输出就不起作用。
图13更为详细地示出图4B的ROM控制器104。ROM控制器104包括超高速缓存加载器400,它可部分地控制将存储在ROM10或游戏卡RAM中的当前执行的程序指令载入芯片超高速缓存RAM94。指令是以16字节的组加载进超高速缓存RAM94的。当在16字节段当中遇到转移指令,在执行转移之前还是必须继续地填满一完整的16字节段。CACHE加载电路400包括一2位状态机,它通过确保16字节CACHE段的剩下的字节加载进超高速缓存RAM94来响应对转移指令的译码。超高速缓存加载逻辑状态机的第一状态是闲置状态,若程序执行超出超高速缓存器的范围或程序数据已被加载进超高速缓存,则该闲置状态为真。第二状态表明超高速缓存的加载和从游戏卡ROM或RAM来的指令的执行是同时发生的。第三状态是由对转移指令的译码触发的,该状态处于有效直到16字节的超高速缓存段中的所有字节均已被加载。当执行转移而该转移落到与超高速缓存16字节边界不精确对应的地址时就遇到第四状态,在这种情况下,超高速缓存从该边界的开始位置被填充到16字节段中对应于程序所转移的地址的那部分。
图4B中示出的超高速缓存控制器68产生输入到超高速缓存加载器400的CACHE信号,它表明目前在超高速缓存RAM94中无法提供所需要的指令。因而必须从ROM读取指令。代码存储区信号标识所要存取的地址的三位最高有效位并且表明所要存取的是程序ROM还是RAM。超高速缓存加载器400还包括在程序执行期间保持与程序计数器PC的各最低有效位相应计数的计数器。该计数器是经超高速缓存加载器的PC输入端加载的。
ROM控制器104中的超高速缓存加载电路400还接收WAIT(等待)和GO控制信号,它们表明Mario处理器因某些原因而处于WAIT状态和Mario芯片在“工作”或“运行”方式。在这种情况下超高速缓存加载电路400产生一CODEFEFCH(代码读取)控制信号,送给示于图13中的NOR门408,进而送给ROM定时计数器406的清零输入。当超高速缓存加载电路400产生代码读取信号CODE  FETCH,就优先于数据读取而启动代码读取,因为在数据读取前必须开始代码读取。图10所示的包括优先级逻辑在内的仲裁电路可用来使所产生的信号被给予比数据读取高的优先级。
当清零信号从ROM定时计数器406取消,就起动一计数周期。ROM定时计数器406用来产生ROM  RDY定时信号,它表明在ROM数据插脚可获得ROM数据,该信号是从门电路410输出的。
ROM数据就绪信号ROM  RDY门与再同步电路402相连,而该电路例如可包括图11中所说明的再同步电路。在达到与处理器时钟同步之后,产生信号ROM   DCK使锁存器404复位和产生DATAFETCH信号表示对寄存器R14的存取触发了数据读取,而这又导致发出EN_R14信号。当ROM定时计数器406已达到一规定计数,确保在ROM数据插脚上可获得数据时就产生DATAFETCH信号。
图13中所示的ROM控制器从下述的输入中的任意一个选择出地址信号的多路转换器414的输出端产生ROM地址。代码存储区寄存器412是从Super  NES数据总线HD加载的,以确定从哪一个ROM程序存储区取出并执行该Mario代码。代码存储区寄存器412向多路转换器414提供具有23位的ROM地址的8位。该ROM地址的最低有效位是从程序计数器PC的内容得到的。当正向超高速缓存RAM写入数据时,4位最低有效位是来自于由超高速缓存加载器400所产生的CACHE  LOAD信号。另外的多路转换器414地址输入是每当存取寄存器R14时,从Mario通用寄存器R14的内容产生的。
对R14的存取致使数据读取锁存器404产生DATAFETCH信号,该信号用作控制信号使多路转换器414选择其R14输入(和从Super  NES数据总线HD加载的数据存储区寄存器416的内容)。该数据存储区寄存器416包含有与R14读取操作有关的数据存储区的最高有效位。
数据读取信号另外送给门408,它将起动由ROM定时计数器406进行的计数,进而经门410产生ROM就绪信号ROM  RDY,当ROM  RDY信号产生时,就可从ROM数据总线ROM  D[7:0]获得数据。
地址多路转换器414还接收从Super  NES地址总线HA来的ROM地址。根据送给多路转换器414控制输入端的信号“ROM”的状态将选择Super  NES地址总线。“ROM”控制信号向Mario  ROM控制器表明Super  NES拥有对ROM地址总线的控制。
对转移指令译码后,程序计数器的内容加上由超高速缓存加载器的计数器所产生的四位最低有效位被输入地址多路转换器414。这允许向超高速缓存段加载上在转移被译码前正在加载的16字节的剩余部分。
多路转换器422提供ROM控制器104中从ROM数据插脚ROM  D至Mario芯片的目的端总线Z的数据通路。已经由锁存器404产生的DATAFETCH信号和由ROM定时计数器406产生的ROM  RDY信号被送给门418而使ROM缓冲器420的加载得以进行。ROM数据总线ROM  D[7…0]来的ROM数据被装进ROM缓冲器420。
多路转换器422响应指令代码(诸如通过存取寄存器R14触发的自动进行数据读取的GET  B这类指令代码)的译码选取一输入。若对代码读取操作译码,ROM控制器104就会将指令送到图15A中所示的Mario芯片中的指令总线。若对GET  B指令译码,存储在寄存器420中被缓冲的字节就被置于Z总线上。某些GET  B指令操作涉及X总线上经图13中所示的多路转换器的相对应的输入端输入的数据,送给目的端总线Z的数据可随后装进Mario通用寄存器76中的一个。
在图14中更为详细地示出超高速缓存控制器68。超高速缓存控制器68包括一标记锁存器506。标记锁存器506包括例如表明指令是否已存储在超高速缓存RAM94(为便于说明将它配置于超高速缓存控制器中示出)中的64个锁存器。
标记锁存器506中的64个标志中的每一个都对应于存储在超高速缓存RAM94中的16位信息。在从ROM或RAM取出指令执行的同时超高速缓存RAM94被载上指令。在如上说明的那样执行转移指令时,RAM94经与图13中示出的ROM控制器104一起说明的超高速缓存加载器400被加上16字节段的剩下字节。在加载上这些剩余的字节之前,该整个字节段不能经标记锁存器506标志为已加载。
参见门电路510,当程序计数器已从0计数到15,14位减法器502输出一超出范围的信号(它被反转)当ROM控制器输出其ROM数据就绪信号ROMRDY(表明将要输出一字节),门电路510就使标记锁存器506在由多路分解器504寻址的位置上置位。
当对超高速缓存指令译码;在总线501上产生一表明后续指令将从超高速缓存RAM存储器94执行的控制信号。总线501上的控制信号被送给超高速缓存基址寄存器500的加载输入端,并用于向超高速缓存基址寄存器500装入程序计数器PC的13位最高有效位。同时如图14所示,标记锁存器506被清零。
超高速缓存基址寄存器500的输出和程序计数器的最高有效位(例如第3-15位)被送给减法器502,它确定程序计数器PC来的地址输入是否在超高速缓存RAM94的范围内。减法器502例如输出其六位最低有效位作为超高速缓存RAM地址的最高有效位,而地址的三位最低有效位则从程序计数器PC送来。
超出范围信号O/RANGE是从减法器502来的进位输出信号而产生的,并被翻转。该翻转的超范围信号高时用来起动对锁存器矩阵506中的一个锁存器的置位。该锁存器置位将取决于经多路分解器504从减法器502来的超高速缓存地址输出,并与超高速缓存RAM94的16字节段相对应,以表明指令是存储在超高速缓存中与输出的超高速缓存RAM地址相应的地方。标记锁存器506的输出被送给多路转换器512,它将64个标记锁存信号中的一个送到NOR门514,这个锁存信号是根据多路转换器的选择输入确定的,它选定与DEMUX504输出的64条选择线中某一条对应的锁存信号作为输出。输入到NOR门514的另一输入是表明所需要的指令不能在超高速缓存RAM94中找到因而需从外部读取的超范围信号。
图15示出图4A中示出的ALU控制/指令译码器的方框图。如图15所示,ALU控制器/指令译码器60接收超高速缓存RAM94,ROM控制器104和RAM控制器88来的指令。这些Mario芯片元件不是ALU/指令译码器的一部分,但仅仅为便于说明才在图15中画出。
多路转换器525从超高速缓存RAM94,ROM控制器104或RAM控制器88选出指令输出,并将所选择的指令输入到流水线锁存器527。多路转换器525选择基于RAM的指令还是基于ROM的指令,取决于代码存储区寄存器的规定位例如位4的状态。这样根据一装入代码存储区寄存器的地址信息,将对ROM或RAM来的指令进行译码。另外多路转换器525也可根据由超高速缓存器68送来的控制信号CACHE  CTL的状态而从超高速缓存RAM94选择指令,该信号表明所要执行的指令是在超高速缓存RAM94范围内,而且某一相应的标记位已如超高速缓存控制器68的说明中那样被置位。
当被程序计数器起动信号PCEN.IL.IH启动时,流水线锁存器527接收多路转换器来的8位指令,而这起动信号例如当正由ROM(或RAM)读取指令时,是由ROM控制器104(或RAM控制器88)产生的。由于从RAM或ROM读取指令需花一个处理周期还多,因而指令译码器操作是由各自的ROM或RAM控制器104,88所产生的程序计数器起动信号PCEN触发的。
另一方面,若从超高速缓存RAM取出指令执行,程序计数器起动信号PCEN在所有时刻都是起作用的,并且指令执行是以处理器时钟频率全速执行的。由于ROM10的存取时间比超高速缓存RAM94或游戏卡RAM的存取时间慢许多,因而对ROM存取时,产生PCEN信号的间隔,必须不如相应的超高速缓存RAM的,或动态或静态RAM的译码起动信号那样频繁。
暂时存在流水线锁存器527的指令被输出给图示性地由门电路537,539和541所代表的常规的指令译码电路,以产生表示操作代码1,2,…N的信号。
加载进流水线锁存器527的指令还被送给先行控制逻辑551。先行控制逻辑551用于提供操作代码的译码预告,它将用来从Mario芯片寄存器块76中选取合适的寄存器。这样,为了在对操作码进行译码之前优化执行的速度,迅速地确定了需被存取的寄存器,以便对该指令所需的数据进行高速存取。
先行控制逻辑响应指令操作码以及各种程序译码控制标志。指令译码电路60包括程序控制标志检测器逻辑543,它响应以前已译码的操作代码而产生ALT1和ALT2信号,以表明如上所述的相应的前缀指令已经被译码。下面说明的与此有关的ALT1  PRE信号也是由标志检测器逻辑543产生的。另外产生IL和IH信号以表明已对需要立即数的指令进行译码(这里L和H分别指低字节和高字节)。IH和IL标志用来阻止涉及立即数的指令被当作操作码译码。因而也需要非IL信号( IL)和非IH信号( IH)来起动流水线锁存器527。ALT1和ALT2信号如前面说明的那样用来修改后续产生的操作码,并输入到例如在门电路541所示的译码逻辑537,539,541等,按照前面对这些信号的讨论来修改输出操作码。
先行控制逻辑551根据预译码的操作代码和对先前的操作代码(例如前缀代码ALT1或ALT2)译码时所产生的信号而产生寄存器选择信号。例如如程序控制标志检测逻辑543中所示,若ALT1信号由译码逻辑545译码,则产生ALT1  PRE信号,该信号由程序控制标志检测逻辑543输出,并进而经OR门549送给先行逻辑531。该ALT1  PRE信号还使ALT1锁存器547置位。OR门549还将锁存器547来的ALT1信号输出,并将ALT1信号送给译码逻辑537,539,541等。
在图15中示意地表示先行控制逻辑如何产生4个寄存器选择控制位XSEL0,XSEL1,XSEL2和XSEL3。这四个控制位随后送给在图17中结合寄存器控制逻辑76一起说明的多路转换器620和622,该控制逻辑选取16个寄存器中一个的内容输出给X总线供正执行的指令使用。
这样,指令在装进流水线锁存器527前被送给先行译码逻辑单元529,它产生一寄存器选择位XSEL_U0,进而锁存进锁存器535然后作为信号XSEL0输出。锁存器535由程序计数器信号PCEN起动。类似地逻辑电路531产生锁存进锁存器533作为信号XSEL1输出的XSEL_U1。ALT1  PRE信号被送给先行逻辑551中的各种译码逻辑电路529,531等,并被用于确定由寄存器控制逻辑76所选定的合适的寄存器。例如在先行控制电路551中所示,ALT1  PRE信号是送给逻辑电路531的信号之一它产生锁存在锁存器533中进而输出信号USEL1的USEL_U1。
图15B示出用于说明先行逻辑551操作的示范性定时信号。图15B示出时钟信号CK,和有关超高速缓存RAM数据存取的示范性指令操作码。还示出表明流水线锁存器被加载时,将执行指令译码操作时,产生寄存器选择信号时和将寄存器来的信息加载在目的端Z总线上时的定时信号。
如图15B所示,超高速缓存RAM数据操作码(操作码1)将在时钟脉冲CK上升沿之后的某一时刻变为有效。操作码存储在流水线锁存器527中直到例如第二个时钟脉冲的上升沿,这时操作码2被锁存进锁存器527。紧接着收到锁存器227来的输出之后,在图18中示意地画出的某个时刻指令译码器60开始对与操作码1相应的指令进行译码。该指令译码的结果,如上所述相应地将控制信号送给诸如ALU50,超高速缓存控制器68和标绘硬件52等这类Mario芯片元件。
示于图15中的先行电路551通过在对操作码2译码前的某一时刻产生信号XSEL_U开始寄存器选择译码过程。该XSEL_U0信号代表被锁存进锁存器535之前的译码逻辑529的输出。例如在某一时刻由锁存器535输出XSEL-0信号,使得该指令所需的数据会在指令执行周期中尽早地被存取,以便于尽快地送给相应的总线。
图16中示出用来产生有关Y和Z总线的寄存器选择信号的寄存器控制逻辑78的一部分。多路转换器604选取16个寄存器的哪一个将从Z总线被写入,而多路转换器606则选取送给Y总线的那个寄存器。
多路转换器604和606分别接收来自4位寄存器600和602的输入。寄存器600和602用来完成上述的“FROM”和“TO”前缀指令。寄存器600和602分别由“TO”和“FROM”前缀的译码来起动,它们将指令总线的最低有效位送给寄存器600和602。寄存器600和602响应用来使上述的控制标志复位的指令而被清零。
多路转换器604和606另外接收从寄存器块76中的各种寄存器来的输入。另外,多路转换器604,606接收从指令总线上的最低有效位来的输入来执行其四个最低有效位确定指令的目的端或源端寄存器的指令。另外为使Super  NES可对该寄存器存取,将Super  NES地址总线来的规定的最低有效位送给多路转换器604和606。该多路转换器604和606分别选取送给Z和Y总线的寄存器。
图17示出寄存器块76和配置于图4B的寄存器控制逻辑78中的附加寄存器选择控制逻辑。由对FROM指令译码就产生的FROMSET信号设定FROMX寄存器618。一收到FROMSET信号,Y总线的内容就被加载进寄存器618。装进寄存器618的数据随后成为用在后续指令执行中的数据。寄存器618的内容被作为输入之一送给多路转换器622,。多路转换器622还接收寄存器R0(用于缺省寄存器)的内容作为其输入之一。
多路转换器622的另一输入是多路转换器620的输出。多路转换器620接收程序计数器(即寄存器R15)的内容、在执行MERGE指令时所用的寄存器、和寄存器R1(例如在执行标绘指令中所用的)来的输入作为输入。多路转换器620根据由图15A中示出的先行逻辑551所产生的XSEL2和XSEL3位的状态选取这些输入的一个输入。
多路转换器622的另一个输入与Y总线上的内容相接,以将与Y总线上相同数据放在X总线上。如前所述,多路转换器622的另一输入是上述FROM  X寄存器618的输出。多路转换器622的输出是根据图15A中所产生的XSEL0和XSEL1位的状态选取的,并送给X总线。
与寄存器R0-R15中的许多寄存器有关的专用功能在上面已详细说明,这里将不重复。寄存器R0-R3的输出送给多路转换器608,寄存器R4-R7的输出送给多路转换器610,寄存器R8-R11的输出送给多路转换器612,而寄存器R12-R15的输出送给多路转换器614。多路转换器608,610,612,614各自的四个输入中的一个均是由YSEL1和YSEL0选取的,这些是从图16中所示的多路转换器606输出的。多路转换器608,610,612和614的输出进而输入到多路转换器616。多路转换器616根据图16中的多路转换器606输出的YSEL2和YSEL3的状态选取四个输入中的一个。多路转换器616使其输出送到缓冲寄存器617,其输出进而送到Y总线。
回到寄存器R0-R15的输入,每个寄存器有一个由如上结合图16所示而产生的ZSEL位0至位3所选取的起动输入。每个寄存器还具有一时钟输入CK和一数据输入DATA-IN,在相应地缓冲之后经该数据输入端从Z总线接收数据。
结合各种乘法操作使用的寄存器R4还包括停用低位和停用高位输入以及允许低位和允许高位输入。寄存器R15即程序计数器PC,它可接收从图13的ROM控制器中的超高速缓存加载器400来的信号CCHLD,在当前的超高速缓存16字节段被装进超高速缓存RAM之前禁止转移操作。程序计数器另外从指令译码器接收一程序循环暂停信号LOOPEN,这表明得进行分支转移并允许向PC加上寄存器R13的内容。寄存器R15另外接收加电复位信号RESET和执行循环指令时将寄存器R13的内容装入程序计数器的输入RN。
如上所述,本发明的图形协处理器结合主电视游戏系统可以方便地用来产生涉及例如基于多边形目标的旋转、放大和/或缩小的各种特殊效果。图18是画出梯形用的示范性Mario芯片程序的流程图,说明可如何对Mario芯片编程以产生所要显示的基于多边形的目标的一部分。下面提出一种用于产生这类多边形的Mario程序同时对Mario硬件如何执行程序加以详尽的解释。
首先参见图18中示出的高层流程图,最初将寄存器块R1至R15的某些寄存器与梯形的产生中所用的变量关联起来(例如寄存器R1存储像素X位置,寄存器R2存储像素Y位置线,寄存器R7存储梯形高度等)。此后,如方框650所示建立循环计数器和计算初始像素值。
如方框652所示,随后进行查询以确定梯形水平线之一的长度。若从该线的终点减去该线的起点的结果是负值(-VE),则该程序分支转移至方框660。若从该线的终点减去该线的起点的结果是正值表明还未超出该线的长度,则使循环计数器递减(654)并执行标绘像素指令而画出合适的像素(656)。
如方框658所示,随后进行查询以确定循环计数器的内容是否为零。若循环计数器不为零则进行转移以分支转移回方框654以使循环计数器(654)递减并标绘另一个像素(656)。
若循环计数器等于零,则多边形左侧的X坐标和多边形右侧的X坐标被更新(660)。此后使梯形Y  HEIGHT(Y高度)递减(622),若结果不为零则程序将通过分支转移回方框650重新执行(664),使Y坐标递增以移到下一扫描线(665)。若Y  HEIGHT等于零,则程序将全部执行好,梯形就完成(666)。
为说明产生图形的Mario芯片指令集的运用,下面给出实施例图18流程图绘制梯形的示范性程序。
;绘制梯形循环
rx=1;标绘x位置
ry=2;标绘y位置
rx1=3;顶线左侧x位置
rxlinc=4;顶线左侧x位置递增
rx2=5;顶线右侧x位置
rx2inc=6;顶线右侧x位置递增
rdy=7;梯形y高度
rlen=12;循环计数,水平线(hline)长度
rloop=13;循环标记
hlines
miwt  rloop,hlines2;设定hline循环的起始
hlines1
mfrom  rx1  ;x=(rx1)>>8
mto  rx
mhib
mfrom  rx2
mhib
mto  rlen
msub  rx  ;长度,rlen=(rx2>>8)-(rx1>>8)
mbmi  hlines 3  ;若rlen<0则跳过hline
mnop
minc  rlen  ;总是绘制一个像素
hlines2
mloop
mplot  ;绘制水平线
hlines3
mwith  rx1  ;rx1+=rxlinc
madd  rxlinc
mwith  rx2  ;rx2+=rx2 inc
madd  rx2 inc
mdec  rdy  ;rdy-=1
mbne  hlines  ;重复rdy次数
1
minc  ry  ;和下行的下一个y
为说明Mario芯片硬件如何用来执行程序,以下的说明是针对上面给出的梯形生成程序的。在执行梯形生成程序前,主计算机系统例如Super  NES如上面结合图5流程图的说明所解释的那样直接向代码存储区寄存器和屏面基址寄存器写入。另外,Super  NES将从Super  NES地址总线HA译码得出的XEQ地址的低字节写入ROM控制器104中的局域寄存器。Super  NES随后将高字节写到ROM控制器104,它与该局域寄存器的内容组合并送到Z总线。此后启动寄存器R15用作Mario芯片的程序计数器。
一检测到上面Super  NES向ROM控制器104写入操作的后沿就使Mario的“GO”标志置位。若程序计数器减超高速缓存基址寄存器大于超高速缓存容量,或超高速缓存标志与程序计数器的积减去超高速缓存基址寄存器除以16等于零,就将程序计数器的内容送给ROM10而起动ROM定时计数器(图13方框406)。
一开始,在执行绘制梯形子程序之前,用于梯形循环程序的变量与Super  Mario寄存器是相关联的,如梯形程序列的初始部分中所示,例如,作为“标绘X位置”的“rx”与寄存器R1是相关联的,而变量“rloop”则与寄存器R13相关联。
分配好这些寄存器之后,梯形程序开始如下执行。当ROM控制器104中的ROM定时计数器达到5的计数(近200纳秒),就将所要执行的第一条指令“IWT  rloop,hlines2”从ROM数据总线锁存进图4A中的流水线寄存器62。数据同时被写入超高速缓存RAM94。在执行指令“IWT  rloop,hlines”时,使程序计数器递增。设置“IL”和“IH”标志以表明指令流的下面两字节是立即数据。当ROM定时计数器406达到5,就将立即数据(低字节)写入超高速缓冲RAM94,并保存在ROM控制器104中的暂时寄存器。重复ROM读取机能,该立即数的高字节与低字节结合并送到Z总线。为设置循环计数器,起动寄存器R13并在那儿存储Z总线的内容。在该例行程序的这一时刻开始,就从存储器读出每条指令直到遇到循环指令为止。
在执行指令“FROM  RX1”时,指令代码的最低四位被装进寄存器控制器中的四位“FROM  Y”寄存器602(见图16)。另外允许RX1(寄存器R3)来的数据上Y总线并将它存进16位“FROM  X”寄存器618。在执行“TO  RX”指令时,指令代码的最低四位被装进寄存器控制器中的四位“起动Z”寄存器600(见图16)。
“HIB”指令是通过将“FROM  X”寄存器的十六位内容装入X总线而执行的。ALU将X总线的高字节放到Z总线的低字节上并使Z总线上的高字节设为零。这去除X位置的小数部分并在寄存器RX(寄存器R1)留下第一水平线的起点。
在执行指令“FROM  RX2”时,执行如上所述执行“FROM  RX1”中相似的操作。该“HIB”指令导致对梯形的顶线右侧X坐标进行操作(类似于上面所说的那些)从而将第一水平线的终点留在寄存器R0(用作累加器的缺省寄存器)。
“RLEN”指令和“SUB  RX”指令是通过从线的终点减去该线的起点而被执行的RLEN(12)=R0-Rx。若结果为负,符号标志将被置位,表明条件假。
“BMI  HLINES3”指令是两字节指令,若符号标志置位,第一字节就设立一标志。若条件标志置位,第二字节是转移偏移(这里R15等于R15加上该指令)。若不是,R15不被替换而程序继续正常进行。
执行“INC  RLEN”指令以使线长度寄存器加1以确保至少标绘一个像素。“LOOP”指令用于进行R12=R12-1的计算。若R12不是零,则R15(程序计数器)装上13的内容藉此实行转移。
若此刻的程序在超高速缓存RAM94的范围内,则超高速缓存装载电路400将检测出该转移,并继续加载超高速缓存RAM94,而在这样做时暂停执行程序。结束时,程序计数器加上其新值而从超高速缓存RAM94读取下面的指令。
为执行“标绘”指令,循环/标绘指令配对形成水平线绘制的算法。标绘指令将使由R1、R2(作为X和Y坐标)编址的屏面像素设定为图4A中示出的“COLOR寄存器”54中所设定的彩色。含有该像素的字符的地址是由标绘硬件52计算的。该新像素数据保存在字符线缓冲器(彩色矩阵),直到Mario芯片移到一不同的字符位置进行标绘。当所有彩色信息都已复制到彩色矩阵中的双缓冲机构的第二级,就将该信息写入到外部RAM。
执行“WITH  RX1”的“ADD  RX1  INC”指令以更新该梯形的左侧X坐标。类似地“WITH  RX2”和“ADD  RX2  INC”用来更新梯形的右侧。“DEC  RDY”,“BNE  Hlines1”和“INC  RY”指令用来移到下一个Y位置(下一扫描行)直到梯形完成。
下面的程序列表说明可如何对Mario芯片编程以使8位X,Y和Z点的阵列旋转。该程序说明根据本发明的例示性实施例对图形协处理器编程以执行旋转操作。下面给出该程序的列表:
LISTING  ROTATE:
;由寄存器rmat  1211,rmat  2133,rmat  2322,ramt3231,rmat0033中的旋转矩阵旋转8位X,Y,Z点的矩阵
;矩阵元是8位带符号小数
;即127=127/128=接近1
;-128=-128/128=-1
;这些均被压缩存储在每个寄存器内作为2个8位单元
rx  =1  ;x
ry  =2  ;y
rz  =3  ;z
rt  =4  ;temp
rmat 1211  =5  ;矩阵元11和12
rmat 2113  =6  ;矩阵元13和21
rmat 2322  =7  ;矩阵元22和23
rmat 3231  =8  ;矩阵元31和32
rmat 0033  =9  ;矩阵元33
routptr  =10  ;至旋转点缓冲器指针(ptr)
msh-rotpoints8
miwt  r14,pointsaddr  ;指向所要旋转点的ROM指
miwt  r12,numpoints  ;所要旋转的点的数目
miwt  routptr,m-rotp-  ;指向旋转点缓冲器的RAM
nts  指针
mcache  ;设定超高速缓存地址
mmove  r13,pc  ;初始循环地址
mmatrotploop
mto  rx  ;取x
mgetb
minc  r14
mfrom  rmat  1211  ;11
mto  rt
mmult  rx  ;m11*x
mto  ry  ;取y
mgetb
minc  r14
mfrom  rmat 2113  ;21
mhib
mmult  ry  ;m21*y
mto  rt
madd  rt
mto  rz  ;取z
mgetb
minc  r14
mfrom  rmat  3231  ;31
mmult  rz  ;m31*z
madd  rt
madd  r0
mhib
mstb  (routptr)  ;存储旋转后的x
minc  routptr
mfrom  rmat 1211  ;12
mhib
mto  rt
mmult  rx  ;m12*x
mfrom  rmat 2322  ;22
mmult  ry  ;m22*y
mto  rt
madd  rt
mfrom  rmat 3231  ;32
mhib
mmult  rz  ;m32*z
madd  rt
madd  r0
mhib
mstb  (rout ptr)  ;存储旋转后的y
minc  routptr
mfrom  rmat 2113  ;13
mto  rt
mmult  rx  ;m13*x
mfrom  rmat 2322  ;23
mhib
mmult  ry  ;m23*y
mto  rt
madd  rt
mfrom  rmat 0033  ;33
mmult  rz  ;m33*z
madd  rt
madd  r0
mhib
mstb  (routptr)  ;存储旋转后的z
mloop
minc  routptr
图19、20和21说明当结合主计算机系统例如Super  NES使用本发明的可编程图形协处理器时可产生的某些特殊效果。如图19所示,描绘出一个目标即直升机的侧视图。该图并不意图准确地反映使用Mario芯片所能产生的高品质显示。图20和21则示出图19给出的直升机的放大的和旋转的图像。本发明的图形协处理器可用来产生包括涉及高速旋转和缩放的基于多边形的目标在内的3D型(和其他的)特殊效果,而仅最低限度地加重电视游视主处理系统的负担。
本发明已经详细地说明和图释了,应该理解详尽的揭示仅是用作说明和解释。虽然上述实施例被视作较佳实施例,应该理解该领域技术人员可以作出多种变化和改动,而下面的权利要求正是用来覆盖这类在本发明实质和保护范围之内的变化和改动的。

Claims (39)

1、一种信息处理系统(19,20)中的外部存储系统(19),该信息处理系统具有执行至少部分地存储在外部存储系统(19)中的外部存储器(10)中的电视图形程序的主处理单元(20),所述外部存储系统其特征在于:
至少有一接插件(1)用来将所述外部存储系统与所述主处理系统相连;
一外部存储器(10),用于存储由所述主处理单元执行的所述电视图形程序的第一组程序指令和用于存储所述电视图形程序的第二组指令;
一图形处理器(2)与所述外部存储器(10)相连,并在使用时经所述至少一接插件(1)与所述主处理单元(20)相连,以执行所述第二组指令。
2、如权利要求1所述的外部存储系统,其特征在于所述主处理单元(20)是电视游戏系统的主处理单元而所述外部存储系统是配置在电视游戏卡(19)中的。
3、如权利要求1所述的外部存储系统,其特征在于还包括:与所述外部存储器(10)和所述图形处理器(2)相连用来传送地址,数据和控制信息的外部存储器总线;随机存取存储器单元(6,8);与所述随机存取存储器单元(6,8)和所述图形处理器(2)相连用来传送地址,数据和控制信息的随机存取存储器单元总线;用于在所述图形处理器和所述主处理单元之间传送地址,数据和控制信息的主处理单元总线。
4、如权利要求3所述的外部存储系统,其特征在于所述图形处理器包括对所述外部存储器总线和所述随机存取存储器单元总线中的至少一个存取进行的装置(131)。
5、如权利要求1所述的外部存储系统,其特征在于所述图形处理器(2)包括接收从所述主处理单元来的地址信息的装置(HA,133)以便识别存有将由图形处理器执行的指令的外部存储器位置。
6、如权利要求1所述的外部存储系统,其特征在于所述图形处理器包括:执行存储在所述外部存储器中的所述第二组指令中至少某些指令的算术逻辑单元(50)和执行存储在所述外部存储器中的至少一个有关显示的指令的标绘电路(52)。
7、如权利要求6所述的外部存储系统,其特征在于还包括第一数据源端总线(X),第二数据源端总线(Y)和一数据目的端总线(Z),每个所述总线均与所述算术逻辑单元(50)和所述标绘电路(52)相连。
8、如权利要求1所述的外部存储系统,其特征在于所述图形处理器还包括超高速缓存控制器(68)和与所述超高速缓存控制器(68)相连的超高速缓冲存储器(94),所述图形处理器包括执行存储在所述超高速缓冲存储器中指令的装置(95,60,50)。
9、如权利要求1所述的外部存储系统,其特征在于所述图形处理器包括多个寄存器(76),所述图形处理器还包括响应对所述多个寄存器(76)中规定的寄存器(R14)的存取而自动地起动对外部存储器读取操作的装置(104)。
10、如权利要求1所述的外部存储系统,其特征在于所述外部存储器是程序只读存储器(ROM)并进而包括一与所述图形处理器相连的随机存取存储器(RAM)。
11、如权利要求1所述的外部存储系统,其特征在于所述图形处理器和所述主处理单元可并行地运行执行指令。
12、如权利要求1所述的外部存储系统,其特征在于所述图形处理器包括将执行的各指令组成流水线的装置(62,60)。
13、如权利要求1所述的外部存储系统,其特征在于所述图形处理器包括对所述第二组指令译码的装置(60),和在相关指令译码前预先处理操作代码的先行装置(551)。
14、如权利要求1所述的外部存储系统,其特征在于所述信息处理系统(20)包括显示目标的显示器(36),而所述第二组指令包括使所述目标旋转的指令,所述图形处理器包括执行用于旋转所述目标的所述指令的装置。
15、一种与电视类显示器(36)一起使用的电视游戏系统(19,20),其特征在于:
游戏微处理器(22),用来执行电视游戏程序的指令,和与所述游戏微处理器相连的画面处理单元(24)以便在所述游戏微处理器(22)的控制下执行画面处理任务;
程序存储器(10),用来存储所述电视游戏的程序;
可编程图形处理器(2),与所述程序存储器相连并在使用中与所述游戏微处理器(22)连接以执行至少某些所述电视游戏的程序指令。
16、如权利要求15所述的电视游戏系统,其特征在于还包括:与所述程序存储器(10)和所述可编程图形处理器(2)相连,用来传送地址、数据和控制信息的程序存储器总线;随机存取存储器单元,与所述随机存取存储器单元(6,8)和所述可编程图形处理器(2)相连用来传送地址、数据和控制信息的随信存取存储器单元总线;在所述可编程图形处理器(2)和所述游戏处理器(22)之间传送地址,数据和控制信息的游戏处理器总线。
17、如权利要求15所述的电视游戏系统,其特征在于所述可编程图形处理器(2)包括:执行存储在所述程序存储器中所述第二部分指令中至少某些指令的算术逻辑单元(50)和执行存储在所述程序存储器中至少一个有关显示的指令的标绘电路(52)。
18、如权利要求15所述的电视游戏系统,其特征在于所述可编程图形处理器(2)还包括超高速缓存控制器(68)和与所述超高速缓存控制器(68)相连的超高速缓冲存储器(94),所述可编程图形处理器包括执行存储在所述超高速缓冲存储器中指令的装置(95,60,50),藉此所述图形处理器和所述游戏微处理器能够并行地执行指令。
19、如权利要求15所述的电视游戏系统,其特征在于所述游戏微处理器(22)和画面处理单元(24)配置在电视游戏系统主处理单元(20)中而所述程序存储器(10)和图形处理器(2)配置在电视游戏卡(19)中。
20、一种可编程图形处理器,用于具有至少可执行存储在外部存储器(10)中的电视图形程序的第一部分的第一处理单元(20)的信息处理系统,其特征在于,
从所述外部存储器(10)接收来自所述电视图形程序第二部分的指令的装置;
至少可执行所述电视图形的所述第二部分的装置(60,50,52)。
21、如权利要求20所述的可编程图形处理器,其特征在于还包括接收从所述第一处理单元来的地址信息以识别存有将由图形处理器执行的指令的外部存储器位置的装置。
22、如权利要求21所述的可编程图形处理器,其特征在于所述接收地址信息的装置包括接收标识外部存储器存储区地址信息的外部存储器存储区寄存器和标识在所述存储器存储区内位置的程序计数器。
23、如权利要求20所述的可编程图形处理器,其特征在于所述图形处理器包括用来存储包括图形处理器当前正在运行的标志、图形处理器已将中断信号送给第一处理单元的标志在内的多种图形处理器状态标志的状态寄存器装置。
24、如权利要求20所述的可编程图形处理器,其特征在于所述图形处理器包括至少可执行存储在存储在所述外部存储器中所述电视图形程序的第二部分中的某些指令的算术逻辑单元(50)和执行存储在所述外部存储器中至少一个有关显示的指令的标绘电路(52)。
25、如权利要求24所述的可编程图形处理器,其特征在于还包括第一数据源端总线(X),第二数据源端总线(Y)和数据目的端总数(Z),所述每一总线均与所述算术逻辑单元和所述标绘电路相连。
26、如权利要求20所述的可编程图形处理器,其特征在于还包括超高速缓存控制器(68)和与所述超高速缓存控制器相连的超高速缓冲存储器(94),和执行存储在所述超高速缓冲存储器中的指令的装置(95,60,50)。
27、如权利要求20所述的可编程图形处理器,其特征在于还包括:
至少执行一条指令的装置(50);
存储着多种状态条件的状态寄存器;
指令译码器(62),响应所述状态条件中至少一个状态,使所述至少一规定的指令当所述状态寄存器在某个状况下就控制所述装置执行起动第一操作,而当所述状态寄存器在第二状况下就使所述装置执行起动第二操作。
28、如权利要求20所述的可编程图形处理器,其特征在于所述信息处理系统与显示器相联并且所述图形处理器与所述第一处理单元协力控制所显示的目标旋转。
29、如权利要求28所述的可编程图形处理器,其特征在于所述执行装置包括将基于像素格式的数据变换成基于字符格式的数据的标绘电路(52)。
30、一种图形处理器(2),它与主处理系统(20)和存储着电视图形程序的程序存储器一起使用,所述图形处理器的特征在于:
一算术逻辑单元(50),用来执行存储在所述程序存储器中的指令;
一程序存储器控制器(104),控制对所述程序存储器的存取并有选择地使所述主处理系统(10)和所述图形处理器两者的至少一个启动对所述程序存储器的存取。
31、如权利要求30所述的图形处理器,其特征在于还包括超高速缓冲存储器(94),所述程序存储器控制器(104)包括将程序指令装入所述超高速缓冲存储器的装置。
32、如权利要求30所述的图形处理器,其特征在于所述图形处理器(2)与程序存储器地址总线相连,而所述程序存储器控制器包括选出一地址将其置于所述程序存储器地址总线上的多路转换器(414)。
33、如权利要求30所述的图形处理器,其特征在于还包括多个寄存器(76),所述程序存储器控制器(106)包括响应所述多个寄存器中的一个被存取而自动地起动程序存储器数据读取的装置。
34、如权利要求30所述的图形处理器,其特征在于所述图形处理器(2)与随机存取存储器(RAM)(6,8)相连,并进而包括一控制对所述RAM存取的RAM控制器(88)。
35、一种图形处理器(2),它与主处理系统(20),存储电视图形程序的程序存储器(10),和随机存取存储器(RAM)(6,8)一起使用,所述图形处理器的特征在于,
从所述主处理系统接收RAM地址的装置(HA);
产生RAM地址的图形处理装置;
一RAM控制器(88),它在主处理系统的RAM地址和图形处理装置产生的地址之间选择,并将它送给所述RAM。
36、如权利要求35所述的图形处理器,其特征在于还包括至少一个状态寄存器,而所述RAM控制器包括接收主处理系统产生的地址(HA)和图形处理装置产生的地址(DEOTADOR)并根据存储在所述状态寄存器的至少一个状态位的状况将所述地址的一个送给所述RAM的多路转换器装置(308)。
37、一种信息处理系统中的外部存储系统,所述信息处理系统(19,20)中具有主处理系统(20)和与所述主系统相连的外部存储系统(19),所述外部存储系统的特征在于:
程序存储器(10);
附加存储器(6,8);
与所述程序存储器(10)和所述附加存储器(6,8)相连的图形处理器(2);
所述图形处理器包括:
控制对所述程序存储器存取的程序存储器控制器(104);
控制对所述附加存储器存取的附加存储器控制器(88)。
38、如权利要求37所述的外部存储系统,其特征在于所述附加控制器(88)包括在收到的多个对于所述附加存储器的存取请求间确定优先级的装置。
39、如权利要求38所述的外部存储系统,其特征在于还包括标绘电路(52),所述附加存储器控制器(88)接收表明需对存储器存取以便执行标绘操作的标绘请求信号。
CN92112795A 1992-01-30 1992-10-31 用于信息处理系统的图形处理器及外部存储系统 Expired - Fee Related CN1048564C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/827,098 US5388841A (en) 1992-01-30 1992-01-30 External memory system having programmable graphics processor for use in a video game system or the like
US07/827,098 1992-01-30

Publications (2)

Publication Number Publication Date
CN1076378A true CN1076378A (zh) 1993-09-22
CN1048564C CN1048564C (zh) 2000-01-19

Family

ID=25248311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN92112795A Expired - Fee Related CN1048564C (zh) 1992-01-30 1992-10-31 用于信息处理系统的图形处理器及外部存储系统

Country Status (10)

Country Link
US (6) US5388841A (zh)
EP (2) EP1262921A3 (zh)
JP (2) JP3335695B2 (zh)
KR (1) KR100280939B1 (zh)
CN (1) CN1048564C (zh)
AT (1) ATE229197T1 (zh)
AU (1) AU657147B2 (zh)
CA (1) CA2074554C (zh)
DE (1) DE69232865T2 (zh)
TW (1) TW226448B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646653B2 (en) 1992-01-30 2003-11-11 A/N Inc. Programmable graphics processor for use in a video game system or the like

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2074388C (en) * 1992-01-30 2003-01-14 Jeremy E. San Programmable graphics processor having pixel to character conversion hardware for use in a video game system or the like
EP0571138A3 (en) * 1992-05-20 1995-03-29 Codemasters Ltd Memory cartridge and interface for video game console.
US5758185A (en) * 1992-10-01 1998-05-26 Hudson Soft Co. Ltd. Method for resetting a system controlled by a CPU and having a semi-autonomous IC unit
US5798785A (en) * 1992-12-09 1998-08-25 Discovery Communications, Inc. Terminal for suggesting programs offered on a television program delivery system
US6762733B2 (en) 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US6147696A (en) * 1993-06-24 2000-11-14 Nintendo Co. Ltd. Electronic entertainment and communication system
CA2127053C (en) * 1993-07-02 2005-01-04 Makoto Furuhashi Method and apparatus for time-sharing cpu system bus in image generation system
JP3366413B2 (ja) * 1993-07-27 2003-01-14 任天堂株式会社 表示情報変換装置および情報処理システム
JP3904244B2 (ja) 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5828862A (en) * 1994-05-04 1998-10-27 International Business Machines Corporation Game programming flash memory cartridge system including a programmer and a reprogrammable cartridge
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
CN1114456C (zh) 1994-06-28 2003-07-16 世嘉企业股份有限公司 游戏装置及游戏的重放方法
JPH0816530A (ja) * 1994-07-04 1996-01-19 Kurieiteibu Design:Kk コプロセサシステムおよび補助演算機能付外部メモリ装置
US6735683B2 (en) 1994-09-14 2004-05-11 Hitachi, Ltd. Single-chip microcomputer with hierarchical internal bus structure having data and address signal lines coupling CPU with other processing elements
US6115036A (en) * 1994-10-31 2000-09-05 Nintendo Co., Ltd. Video game/videographics program editing apparatus with program halt and data transfer features
US5592609A (en) * 1994-10-31 1997-01-07 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with unit based program processing
US5599231A (en) * 1994-10-31 1997-02-04 Nintendo Co., Ltd. Security systems and methods for a videographics and authentication game/program fabricating device
US5680534A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US5680533A (en) * 1994-10-31 1997-10-21 Nintendo Co., Ltd. Videographics program/video game fabricating system and method
JP2742394B2 (ja) * 1994-12-02 1998-04-22 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
KR100268693B1 (ko) * 1995-02-08 2000-10-16 이리마지리 쇼우이치로 보안 검사 기능을 갖는 정보 처리 장치 및 보안 검사 방법
EP0771015B1 (en) 1995-05-10 2002-09-25 Nintendo Co., Limited Operating device with analog joystick
US6241611B1 (en) 1995-05-10 2001-06-05 Nintendo Co., Ltd. Function expansion device and operating device using the function expansion device
US5880739A (en) 1995-06-06 1999-03-09 Compaq Computer Corporation Blitting of images using instructions
WO1997006490A1 (en) * 1995-08-09 1997-02-20 Cirrus Logic, Inc. Parasitic personal computer interface
MX9704155A (es) 1995-10-09 1997-09-30 Nintendo Co Ltd Sistema procesador de imagenes tridimensionales.
JP3544268B2 (ja) * 1995-10-09 2004-07-21 任天堂株式会社 三次元画像処理装置およびそれを用いた画像処理方法
JP3524247B2 (ja) 1995-10-09 2004-05-10 任天堂株式会社 ゲーム機およびそれを用いたゲーム機システム
US6283857B1 (en) 1996-09-24 2001-09-04 Nintendo Co., Ltd. Three-dimensional image processing apparatus with enhanced automatic and user point of view control
US6007428A (en) 1995-10-09 1999-12-28 Nintendo Co., Ltd. Operation controlling device and video processing system used therewith
JPH09167050A (ja) 1995-10-09 1997-06-24 Nintendo Co Ltd 操作装置およびそれを用いる画像処理システム
WO1997017651A1 (fr) * 1995-11-10 1997-05-15 Nintendo Co., Ltd. Systeme de manche a balai
US6071191A (en) 1995-11-22 2000-06-06 Nintendo Co., Ltd. Systems and methods for providing security in a video game system
US6267673B1 (en) 1996-09-20 2001-07-31 Nintendo Co., Ltd. Video game system with state of next world dependent upon manner of entry from previous world via a portal
US6190257B1 (en) 1995-11-22 2001-02-20 Nintendo Co., Ltd. Systems and method for providing security in a video game system
US6155926A (en) 1995-11-22 2000-12-05 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US6139433A (en) * 1995-11-22 2000-10-31 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
US6022274A (en) 1995-11-22 2000-02-08 Nintendo Co., Ltd. Video game system using memory module
US5726894A (en) * 1995-12-21 1998-03-10 Pitney Bowes Inc. Postage metering system including means for selecting postal processing services for a sheet and digitally printing thereon postal information pertaining to each selected postal processing service
JPH09223098A (ja) * 1996-02-19 1997-08-26 Sega Enterp Ltd 画像拡張機能ボード及びこれを用いた電子装置
US5970510A (en) * 1996-04-10 1999-10-19 Northrop Grumman Corporation Distributed memory addressing system
US6241610B1 (en) 1996-09-20 2001-06-05 Nintendo Co., Ltd. Three-dimensional image processing system having dynamically changing character polygon number
US6244959B1 (en) 1996-09-24 2001-06-12 Nintendo Co., Ltd. Three-dimensional image processing system with enhanced character control
US6139434A (en) 1996-09-24 2000-10-31 Nintendo Co., Ltd. Three-dimensional image processing apparatus with enhanced automatic and user point of view control
US5987568A (en) * 1997-01-10 1999-11-16 3Com Corporation Apparatus and method for operably connecting a processor cache and a cache controller to a digital signal processor
US6336166B1 (en) * 1997-04-07 2002-01-01 Apple Computer, Inc. Memory control device with split read for ROM access
US5978781A (en) * 1997-05-08 1999-11-02 Pitney Bowes Inc. Digital printing, metering, and recording of other post services on the face of a mail piece
JP3655438B2 (ja) 1997-07-17 2005-06-02 任天堂株式会社 ビデオゲームシステム
JPH11207034A (ja) * 1997-11-20 1999-08-03 Nintendo Co Ltd 異なる種類のゲーム機間でバックアップデータを利用して プレイ可能なゲームシステム
US6667759B2 (en) * 1997-12-31 2003-12-23 At&T Corp. Video phone form factor
US6191793B1 (en) 1998-04-01 2001-02-20 Real 3D, Inc. Method and apparatus for texture level of detail dithering
JP3791728B2 (ja) * 1998-06-03 2006-06-28 コナミ株式会社 ゲーム画面の表示制御方法、ゲームシステムおよびコンピュータ読み取り可能な記録媒体
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6334180B1 (en) * 1999-06-27 2001-12-25 Sun Microsystems, Inc. Processor coupled by visible register set to modular coprocessor including integrated multimedia unit
US7120509B1 (en) * 1999-09-17 2006-10-10 Hasbro, Inc. Sound and image producing system
US6775414B1 (en) 1999-11-19 2004-08-10 Ati International Srl Variable-length code decoder
US7209140B1 (en) * 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
JP4658282B2 (ja) * 1999-12-22 2011-03-23 株式会社ユニバーサルエンターテインメント スロットマシン
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
TW501045B (en) * 2000-03-03 2002-09-01 Sony Computer Entertainment Inc Entertainment device and computer system having exchangeability
EP1275042A2 (en) * 2000-03-06 2003-01-15 Kanisa Inc. A system and method for providing an intelligent multi-step dialog with a user
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
CA2402389A1 (en) * 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
US7988559B2 (en) * 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
JP3695277B2 (ja) * 2000-03-30 2005-09-14 ヤマハ株式会社 表示制御装置
JP3964142B2 (ja) * 2000-08-15 2007-08-22 株式会社ソニー・コンピュータエンタテインメント エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6966837B1 (en) 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
US7916124B1 (en) * 2001-06-20 2011-03-29 Leapfrog Enterprises, Inc. Interactive apparatus using print media
JP2003000951A (ja) * 2001-06-22 2003-01-07 Konami Computer Entertainment Osaka:Kk ゲーム進行プログラム、ゲーム進行方法及びビデオゲーム装置
US7418344B2 (en) * 2001-08-02 2008-08-26 Sandisk Corporation Removable computer with mass storage
US7336174B1 (en) * 2001-08-09 2008-02-26 Key Control Holding, Inc. Object tracking system with automated system control and user identification
US6902481B2 (en) * 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US7931533B2 (en) 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
US8708828B2 (en) * 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
JP3647797B2 (ja) * 2001-11-28 2005-05-18 コナミ株式会社 画像表示プログラム、画像表示方法及びビデオゲーム装置
TW534436U (en) * 2001-12-05 2003-05-21 Carry Computer Eng Co Ltd Portable optical disc displaying/recording machine
US7350081B1 (en) 2002-04-29 2008-03-25 Best Robert M Secure execution of downloaded software
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
GB0301448D0 (en) * 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
US7752648B2 (en) * 2003-02-11 2010-07-06 Nds Limited Apparatus and methods for handling interactive applications in broadcast networks
KR100703357B1 (ko) * 2003-08-16 2007-04-03 삼성전자주식회사 보조제어부를 구비하는 휴대용 단말기의 캐시메모리구현장치 및 방법
US7091979B1 (en) 2003-08-29 2006-08-15 Nvidia Corporation Pixel load instruction for a programmable graphics processor
FR2865291A1 (fr) * 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de transfert de donnees dans un systeme multiprocesseur, systeme multiprocesseur et processeur mettant en oeuvre ce procede
JP4376650B2 (ja) * 2004-02-09 2009-12-02 任天堂株式会社 ゲーム装置およびゲームプログラム
US20050174337A1 (en) * 2004-02-11 2005-08-11 Nielsen Paul S. Electronic handheld drawing and gaming system using television monitor
US20050275760A1 (en) * 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
US7439980B2 (en) * 2004-03-08 2008-10-21 Yamaha Corporation Image processing method and apparatus
US8016681B2 (en) * 2004-03-31 2011-09-13 Nintendo Co., Ltd. Memory card for a game console
US11278793B2 (en) 2004-03-31 2022-03-22 Nintendo Co., Ltd. Game console
US8267780B2 (en) * 2004-03-31 2012-09-18 Nintendo Co., Ltd. Game console and memory card
US7771280B2 (en) * 2004-03-31 2010-08-10 Nintendo Co., Ltd. Game console connector and emulator for the game console
US7837558B2 (en) * 2004-03-31 2010-11-23 Nintendo Co., Ltd. Game console and emulator for the game console
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
US7620530B2 (en) * 2004-11-16 2009-11-17 Nvidia Corporation System with PPU/GPU architecture
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
GB0427973D0 (en) 2004-12-21 2005-01-26 Falanx Microsystems As Microprocessor systems
US7225295B2 (en) * 2005-01-04 2007-05-29 International Business Machines Corporation External RAM module
US7307635B1 (en) 2005-02-02 2007-12-11 Neomagic Corp. Display rotation using a small line buffer and optimized memory access
US8633927B2 (en) * 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
GB2441365B (en) * 2006-09-04 2009-10-07 Nds Ltd Displaying video data
US20090003379A1 (en) * 2007-06-27 2009-01-01 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed media data having media data packet synchronization
US8265169B2 (en) * 2006-12-29 2012-09-11 Intel Corporation Video block memory read request translation and tagging
US7853745B2 (en) * 2007-02-23 2010-12-14 Sony Corporation Electronic system with removable computing device and mutable functions
US7949998B2 (en) * 2007-04-20 2011-05-24 Microsoft Corporation Programming framework for closed systems
US8330764B2 (en) * 2007-04-20 2012-12-11 Microsoft Corporation Programming framework for closed systems
US8523666B2 (en) * 2007-05-25 2013-09-03 Microsoft Corporation Programming framework for closed systems
US8296781B1 (en) 2007-12-11 2012-10-23 Nvidia Corporation System, method, and computer program product for determining application parameters based on hardware specifications
US8276133B1 (en) * 2007-12-11 2012-09-25 Nvidia Corporation System, method, and computer program product for determining a plurality of application settings utilizing a mathematical function
US8280864B1 (en) 2007-12-17 2012-10-02 Nvidia Corporation System, method, and computer program product for retrieving presentation settings from a database
IL191755A0 (en) * 2008-05-27 2009-05-04 Sabra De Fence Technologies Lt Intrusion detection system and its sensors
WO2010033506A2 (en) * 2008-09-18 2010-03-25 Wilton Industries, Inc. Sifter apparatus
US20110202150A1 (en) * 2009-10-16 2011-08-18 Newport Controls Controller system adapted for SPA
US8751100B2 (en) * 2010-08-13 2014-06-10 Deere & Company Method for performing diagnostics or software maintenance for a vehicle
WO2012025728A1 (en) 2010-08-27 2012-03-01 Fxi Technologies As Electronics Device
US9275377B2 (en) 2012-06-15 2016-03-01 Nvidia Corporation System, method, and computer program product for determining a monotonic set of presets
US9201670B2 (en) 2012-07-06 2015-12-01 Nvidia Corporation System, method, and computer program product for determining whether parameter configurations meet predetermined criteria
US10509658B2 (en) 2012-07-06 2019-12-17 Nvidia Corporation System, method, and computer program product for simultaneously determining settings for a plurality of parameter variations
US9092573B2 (en) 2012-07-06 2015-07-28 Nvidia Corporation System, method, and computer program product for testing device parameters
US9250931B2 (en) 2012-07-06 2016-02-02 Nvidia Corporation System, method, and computer program product for calculating settings for a device, utilizing one or more constraints
US9286247B2 (en) 2012-07-06 2016-03-15 Nvidia Corporation System, method, and computer program product for determining settings for a device by utilizing a directed acyclic graph containing a plurality of directed nodes each with an associated speed and image quality
US10668386B2 (en) 2012-07-06 2020-06-02 Nvidia Corporation System, method, and computer program product for simultaneously determining settings for a plurality of parameter variations
US9264749B2 (en) 2012-12-13 2016-02-16 Microsoft Technology Licensing, Llc Server GPU assistance for mobile GPU applications
CN103297730B (zh) * 2013-06-14 2016-08-10 无锡华润矽科微电子有限公司 在屏显示控制方法
GB2548603B (en) 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
GB2548602B (en) 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
GB2548604B (en) * 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
US11032345B2 (en) 2018-05-10 2021-06-08 Microsoft Technology Licensing, Llc Client side data stream processing
US10924525B2 (en) 2018-10-01 2021-02-16 Microsoft Technology Licensing, Llc Inducing higher input latency in multiplayer programs
US11055003B2 (en) 2019-08-20 2021-07-06 Micron Technology, Inc. Supplemental AI processing in memory
CN110956573B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种基于有限状态机的OpenGL图形命令预译码方法
KR20210106221A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 시스템 온 칩, 그것의 데이터 처리 방법 및 뉴럴 네트워크 장치
US11711571B2 (en) * 2020-03-06 2023-07-25 Advanced Micro Devices, Inc. Client-side offload of graphics effects processing
US11782624B2 (en) 2020-10-06 2023-10-10 Samsung Electronics Co., Ltd. Worflow-based partition allocation

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4127849A (en) 1975-11-03 1978-11-28 Okor Joseph K System for converting coded data into display data
US4053740A (en) 1975-12-22 1977-10-11 Lawrence David Rosenthal Video game system
US4179124A (en) 1977-12-12 1979-12-18 Jed Margolin Electronic video game
US4296476A (en) 1979-01-08 1981-10-20 Atari, Inc. Data processing system with programmable graphics generator
US4471465A (en) * 1979-01-08 1984-09-11 Atari, Inc. Video display system with multicolor graphics selection
FR2469760A1 (fr) * 1979-11-09 1981-05-22 Cii Honeywell Bull Procede et systeme d'identification de personnes demandant l'acces a certains milieux
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
FR2483657B1 (fr) * 1980-05-30 1986-11-21 Bull Sa Machine portable pour le calcul ou le traitement de l'information
US4425559A (en) 1980-06-02 1984-01-10 Atari, Inc. Method and apparatus for generating line segments and polygonal areas on a raster-type display
DE3025638C2 (de) * 1980-07-07 1982-08-12 Fa. Gottlieb Gühring, 7470 Ebingen Rundschalttisch-Maschine
FR2492135B1 (fr) * 1980-09-16 1988-01-22 Cii Honeywell Bull Appareil de distribution d'objets et d'acquisition de services
US4388620A (en) 1981-01-05 1983-06-14 Atari, Inc. Method and apparatus for generating elliptical images on a raster-type video display
US4492582A (en) * 1981-01-06 1985-01-08 Mattel, Inc. Teaching and entertainment device
US4432067A (en) 1981-05-07 1984-02-14 Atari, Inc. Memory cartridge for video game system
US4386773A (en) * 1981-06-22 1983-06-07 Bronstein John M TV Game cartridge with expandable memory
US4462076A (en) * 1982-06-04 1984-07-24 Smith Engineering Video game cartridge recognition and security system
US4597043A (en) * 1982-06-16 1986-06-24 Bally Manufacturing Corporation High speed CPU/sequencer for video games
US4757468A (en) * 1982-09-22 1988-07-12 Intel Corporation Authenticated read-only memory
GB2133257B (en) * 1982-12-22 1987-07-29 Ricoh Kk T v game system
EP0114522A3 (en) * 1982-12-27 1986-12-30 Synertek Inc. Rom protection device
CH653588A5 (it) * 1983-06-07 1986-01-15 Albe Sa Tavola portapezzi girevole ad intermittenza nelle macchine utensili.
JPS6052885A (ja) 1983-09-02 1985-03-26 Hitachi Ltd 圧接力調整装置を有するトナ−の除去装置
US4644495A (en) * 1984-01-04 1987-02-17 Activision, Inc. Video memory system
US4725831A (en) 1984-04-27 1988-02-16 Xtar Corporation High-speed video graphics system and method for generating solid polygons on a raster display
US4862156A (en) * 1984-05-21 1989-08-29 Atari Corporation Video computer system including multiple graphics controllers and associated method
US4658247A (en) 1984-07-30 1987-04-14 Cornell Research Foundation, Inc. Pipelined, line buffered real-time color graphics display system
NL8500526A (nl) 1985-02-25 1986-09-16 Philips Nv Werkwijze voor het als vertragingslijn adresseren van een geheugen met willekeurige toegankelijkheid en signaalverwerkingsinrichting voorzien van zo een vertragingslijn.
CA1270339A (en) * 1985-06-24 1990-06-12 Katsuya Nakagawa System for determining a truth of software in an information processing apparatus
JPH074449B2 (ja) 1985-10-04 1995-01-25 任天堂株式会社 ゲ−ム機用カ−トリツジとそれを用いるゲ−ム機
JPS62192878A (ja) 1986-02-20 1987-08-24 Nippon Gakki Seizo Kk 多角形の塗りつぶし方法
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
JPS62221239A (ja) 1986-03-24 1987-09-29 Fuji Electric Co Ltd シリアル伝送モニタ装置
JPS62231380A (ja) 1986-03-31 1987-10-09 Namuko:Kk 画像合成装置
US5504917A (en) 1986-04-14 1996-04-02 National Instruments Corporation Method and apparatus for providing picture generation and control features in a graphical data flow environment
CA1284225C (en) * 1986-07-23 1991-05-14 Katsuya Nakagawa Game software service system
JP2695773B2 (ja) 1986-09-25 1998-01-14 株式会社東芝 マルチcpu制御方式
US4807158A (en) * 1986-09-30 1989-02-21 Daleco/Ivex Partners, Ltd. Method and apparatus for sampling images to simulate movement within a multidimensional space
JPS63163577A (ja) 1986-12-25 1988-07-07 Nec Corp 図形表示装置
US5251322A (en) * 1987-08-13 1993-10-05 Digital Equipment Corporation Method of operating a computer graphics system including asynchronously traversing its nodes
US5170468A (en) 1987-08-18 1992-12-08 Hewlett-Packard Company Graphics system with shadow ram update to the color map
JPS6484295A (en) 1987-09-28 1989-03-29 Mitsubishi Electric Corp Color display device
EP0309884A3 (en) 1987-09-28 1991-04-10 Mitsubishi Denki Kabushiki Kaisha Color image display apparatus
US4866637A (en) 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
CA1309198C (en) 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
US5136664A (en) 1988-02-23 1992-08-04 Bersack Bret B Pixel rendering
GB2215952A (en) 1988-03-23 1989-09-27 Benchmark Technologies Performing raster operations on patch formatted pixel data using time domain multiplexing
GB2215948A (en) 1988-03-23 1989-09-27 Benchmark Technologies Performing raster operations on patch formatted pivel data
JPH0215381A (ja) 1988-03-23 1990-01-19 Du Pont Pixel Syst Ltd ラスタ操作実行方法、時間領域多重化方法および画像処理方法
US5016876A (en) * 1988-10-14 1991-05-21 Williams Electronics Games, Inc. Video display co-processor for use in a video game
US5208904A (en) * 1989-03-07 1993-05-04 Brother Kogyo Kabushiki Kaisha Data processing apparatus and method for preparing data representative of supplemental figure attached to basic figure reproduced on output medium
KR0149503B1 (ko) * 1989-04-20 1999-05-15 야마우찌 히로시 메모리 카트리지
US5112051A (en) * 1989-06-05 1992-05-12 Westinghouse Electric Corp. Interfacing device for a computer games system
US5060172A (en) * 1989-07-06 1991-10-22 Digital Equipment Corporation Method and apparatus for displaying smooth-shaded objects
JPH0632703B2 (ja) 1989-07-31 1994-05-02 コナミ株式会社 ゲーム機の表示装置
US5214753A (en) 1989-07-31 1993-05-25 Shographics, Inc. Video system with parallel attribute interpolations
JPH0394389A (ja) 1989-09-07 1991-04-19 Hitachi Ltd 3次元図形回転表示方法および図形処理装置
US4922336A (en) * 1989-09-11 1990-05-01 Eastman Kodak Company Three dimensional display system
US5004232A (en) * 1989-10-13 1991-04-02 Macronix, Inc. Computer game cartridge security circuit
US5214758A (en) * 1989-11-14 1993-05-25 Sony Corporation Animation producing apparatus
JP2502754Y2 (ja) * 1989-12-07 1996-06-26 株式会社エス・エヌ・ケイ テレビゲ―ム機
JP3047185B2 (ja) 1990-01-26 2000-05-29 任天堂株式会社 ディジタル音源装置、およびそれに用いられる外部メモリカートリッジ
ES2100226T3 (es) 1990-02-05 1997-06-16 Ricoh Kk Aparato para visualizar imagenes en movimiento y memoria exterior para su utilizacion en el mismo.
JPH0425962A (ja) 1990-05-21 1992-01-29 Nec Corp マルチ中央処理装置による制御システム
WO1991019247A1 (en) * 1990-06-04 1991-12-12 University Of Washington Image computing system
CA2050658C (en) * 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a graphics rendering processor
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
JP2725915B2 (ja) 1990-11-15 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション 三角形描画装置及び方法
GB9027678D0 (en) * 1990-12-20 1991-02-13 Ncr Co Videographics display system
US5774133A (en) 1991-01-09 1998-06-30 3Dlabs Ltd. Computer system with improved pixel processing capabilities
US5415549A (en) * 1991-03-21 1995-05-16 Atari Games Corporation Method for coloring a polygon on a video display
US5251909A (en) 1991-05-28 1993-10-12 Reed Michael J Secured high throughput data channel for public broadcast system
EP0739513B1 (en) * 1991-08-13 1999-10-27 The Board Of Regents Of The University Of Washington Method of transmitting of data
US5190285A (en) * 1991-09-30 1993-03-02 At&T Bell Laboratories Electronic game having intelligent game pieces
US5289575A (en) * 1991-11-22 1994-02-22 Nellcor Incorporated Graphics coprocessor board with hardware scrolling window
US5592595A (en) * 1991-12-30 1997-01-07 Seiko Epson Corporation Intelligent cartridge for attachment to a printer to perform image processing tasks in a combination image processing system and method of image processing
US5357604A (en) * 1992-01-30 1994-10-18 A/N, Inc. Graphics processor with enhanced memory control circuitry for use in a video game system or the like
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
TW214588B (zh) 1992-01-30 1993-10-11 An Inc
CA2074388C (en) 1992-01-30 2003-01-14 Jeremy E. San Programmable graphics processor having pixel to character conversion hardware for use in a video game system or the like
JP3222197B2 (ja) 1992-05-18 2001-10-22 理想科学工業株式会社 カード印刷方法およびカード印刷用原稿位置決めホルダおよびカード印刷用紙
DE4235091C2 (de) * 1992-10-17 2001-09-06 Trumpf Sachsen Gmbh Flüssigkeits- und Abrasivmittelzuführung für eine Fluidstrahlschneidanlage
DE4301393C2 (de) * 1993-01-20 1996-05-23 Witzig & Frank Turmatic Gmbh Rundtakt-Werkzeugmaschine
JP3510387B2 (ja) * 1995-06-30 2004-03-29 ライオン株式会社 漂白活性化剤造粒物の製造方法、該漂白活性化剤造粒物を含有する漂白剤又は洗剤の製造方法
DE19529071C2 (de) * 1995-08-08 1998-04-30 Holger Wuerthner Vorrichtung zur Front- und Rückseitenbearbeitung von Werkstücken
DE19533320C2 (de) * 1995-09-08 1999-01-28 Ottobeurer Facondreherei Alois Rundtaktmaschine

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646653B2 (en) 1992-01-30 2003-11-11 A/N Inc. Programmable graphics processor for use in a video game system or the like
US7229355B2 (en) 1992-01-30 2007-06-12 Nintendo Co., Ltd. External memory system having programmable graphics processor for use in a video game system of the like
US7432932B2 (en) 1992-01-30 2008-10-07 Nintendo Co., Ltd. External memory system having programmable graphics processor for use in a video game system or the like

Also Published As

Publication number Publication date
JP3335695B2 (ja) 2002-10-21
AU2060392A (en) 1993-08-19
CA2074554A1 (en) 1993-07-31
TW226448B (zh) 1994-07-11
EP1262921A2 (en) 2002-12-04
CA2074554C (en) 2002-09-10
US20040166943A1 (en) 2004-08-26
KR930016902A (ko) 1993-08-30
CN1048564C (zh) 2000-01-19
EP0553532A2 (en) 1993-08-04
EP0553532A3 (en) 1994-03-09
AU657147B2 (en) 1995-03-02
DE69232865D1 (de) 2003-01-16
EP0553532B1 (en) 2002-12-04
US6895470B2 (en) 2005-05-17
US5388841A (en) 1995-02-14
JP2003126550A (ja) 2003-05-07
EP1262921A3 (en) 2004-03-24
US20010040577A1 (en) 2001-11-15
US20020050999A1 (en) 2002-05-02
US7432932B2 (en) 2008-10-07
US6646653B2 (en) 2003-11-11
US5850230A (en) 1998-12-15
US20010043224A1 (en) 2001-11-22
DE69232865T2 (de) 2003-11-20
KR100280939B1 (ko) 2001-02-01
JPH0689567A (ja) 1994-03-29
US7229355B2 (en) 2007-06-12
ATE229197T1 (de) 2002-12-15

Similar Documents

Publication Publication Date Title
CN1048564C (zh) 用于信息处理系统的图形处理器及外部存储系统
CN1048563C (zh) 用于信息处理系统的图形处理器以及外部存储系统
CN1993709A (zh) 信号处理设备
CN1163837C (zh) 网络访问管理系统和方法
CN1287270C (zh) 重启动翻译的指令
CN1538296A (zh) 图形处理单元的多线程内核
CN1111790C (zh) 检查点处理加速装置及具有该装置的计算机
CN1315022C (zh) 便携式信息终端装置、显示控制装置、方法及程序
CN1728685A (zh) 促进可分页模式虚拟环境中的数据传输的方法和系统
CN1890630A (zh) 在寄存器和存储器之间移动数据的数据处理设备和方法
CN1111464A (zh) 图像处理装置及其方法和带图像处理装置的电子装置
CN1244051C (zh) 对于处理数据的装置和方法
CN1866223A (zh) 存储模块、存储系统、以及信息设备
CN1702634A (zh) 便利无环境主机干预下的可分页模式虚拟环境存储管理
CN101052949A (zh) 操作系统
CN1174353A (zh) 采用多个向量寄存器组的单指令多数据处理方法及其装置
CN1922576A (zh) 操作系统
CN1711524A (zh) 在安全模式和非安全模式间切换的处理器
CN1410876A (zh) 微处理机
CN1170171A (zh) 带三维图形和数字音频信号处理协处理器的视频游戏系统
CN1180864A (zh) 多媒体信号处理器中的单指令多数据处理方法及其装置
CN1367900A (zh) 物品设计辅助系统和方法以及存储了物品设计辅助用程序的媒体
CN1150674A (zh) 产生图像数据的方法和图像数据处理装置以及记录媒体
CN101034381A (zh) 多主机系统和数据传送系统
CN1723448A (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
C15 Extension of patent right duration from 15 to 20 years for appl. with date before 31.12.1992 and still valid on 11.12.2001 (patent law change 1993)
OR01 Other related matters
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee