CN112015474B - 电子装置及其命令数量减少方法 - Google Patents

电子装置及其命令数量减少方法 Download PDF

Info

Publication number
CN112015474B
CN112015474B CN202010887217.4A CN202010887217A CN112015474B CN 112015474 B CN112015474 B CN 112015474B CN 202010887217 A CN202010887217 A CN 202010887217A CN 112015474 B CN112015474 B CN 112015474B
Authority
CN
China
Prior art keywords
register
commands
processor
register setting
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010887217.4A
Other languages
English (en)
Other versions
CN112015474A (zh
Inventor
林建明
赵璇
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.)
Glenfly Tech Co Ltd
Original Assignee
Glenfly Tech Co Ltd
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 Glenfly Tech Co Ltd filed Critical Glenfly Tech Co Ltd
Priority to CN202311769328.5A priority Critical patent/CN117724768A/zh
Priority to CN202311769327.0A priority patent/CN117724767A/zh
Priority to CN202010887217.4A priority patent/CN112015474B/zh
Priority to US17/028,966 priority patent/US11630672B2/en
Publication of CN112015474A publication Critical patent/CN112015474A/zh
Priority to US18/176,493 priority patent/US20230205541A1/en
Priority to US18/176,496 priority patent/US20230205542A1/en
Application granted granted Critical
Publication of CN112015474B publication Critical patent/CN112015474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/36Combined merging and sorting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
    • G06F7/16Combined merging and sorting

Landscapes

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

Abstract

本发明提供一种电子装置及其命令数量减少方法。电子装置包括中央处理器以及协同处理器。中央处理器产生多个原始寄存器设置命令,以便设置协同处理器的至少一个寄存器的至少一个位。所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,其中所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性。中央处理器融合所述多个第一原始寄存器设置命令,以产生至少一个经融合寄存器设置命令。中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器。因此,中央处理器传输给协同处理器的寄存器设置命令的数量可以被有效减少。

Description

电子装置及其命令数量减少方法
技术领域
本发明有关于一种电子装置,且特别有关于所述电子装置的一种命令数量减少方法。
背景技术
在电子装置中,中央处理器会发出多个命令给协同处理器。举例来说,执行了操作***(Operation System,OS)与应用程序(application program)的中央处理单元(central processing unit,CPU)会发出多个命令给图形处理器(Graphic ProcessingUnit,GPU)。一般而言,发送给GPU的这些命令包括有寄存器设置命令、绘图命令与其他命令。
协同处理器内部由不同硬件模块所组成。一般而言,每个硬件模块各自包含有若干硬件寄存器(register)。每一个寄存器用来存放/记录协同处理器进行工作所需的一个(或多个)操作参数。通过设置(改变)协同处理器的这些寄存器的内容,中央处理器可以控制协同处理器的工作。举例来说,通过设置(改变)GPU的一个(或多个)寄存器的内容,CPU可以控制GPU的绘图操作。
协同处理器的每一个寄存器的大小(位的数量)可以依照设计需求来定义。举例来说,一个寄存器可以是32位。这32位的功能可以依照设计需求来定义。在一个寄存器的32位中,可能有单一位被用来表示(存放)协同处理器的一个操作参数,也可能有用多个位来表示(存放)协同处理器的一个操作参数。亦即,一个寄存器可以存放协同处理器的多个操作参数。更甚者,一个寄存器的全部位(例如32位)可能被用来表示(存放)协同处理器的一个操作参数。
为定址方便,一般会赋予寄存器地址给协同处理器的这些寄存器。举例来说,这些寄存器可能按硬件模块而被划分为多个寄存器组(register group),其中每个寄存器组被分配一个组号(group ID)。在一个寄存器组内部的每一个寄存器可以按照内部偏移(offset)进行定址。
操作***与(或)应用程序通常是依照运行状态而设置(更新)协同处理器的这些操作参数。一般而言,协同处理器具有数量繁多的操作参数。协同处理器可能会依据多个操作参数来进行某一个操作。举例来说,CPU可能要设置(改变)GPU的多个操作参数,然后CPU才发出一个绘图命令给GPU以便进行一个绘图操作。为了要将这些操作参数设置(更新)至协同处理器的这些寄存器,中央处理器(亦即操作***与(或)应用程序)需要经由***总线发出数量繁多的寄存器设置命令给协同处理器。需要被设置(更新)的操作参数的数量越多,中央处理器所产生的寄存器设置命令的数量亦越多。数量繁多的这些寄存器设置命令会占用***总线的频宽。另一方面,协同处理器会因为解析数量繁多的这些寄存器设置命令而影响(降低)协同处理器的命令处理速度和效能。
需注意的是,“背景技术”段落的内容是用来帮助了解本发明。在“背景技术”段落所公开的部分内容(或全部内容)可能不是所属技术领域中具有通常知识者所知道的已知技术。在“背景技术”段落所公开的内容,不代表该内容在本发明申请前已被所属技术领域中具有通常知识者所知悉。
发明内容
本发明提供一种电子装置及其命令数量减少方法,其融合多个原始寄存器设置命令来产生至少一个经融合寄存器设置命令,以减少寄存器设置命令数量。
在本发明的一实施例中,上述的命令数量减少方法适于减少多个寄存器设置命令的数量。所述命令数量减少方法包括:由中央处理器产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置协同处理器的至少一个寄存器(register)的至少一个位(bit),所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,以及所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性;由所述中央处理器融合所述多个第一原始寄存器设置命令,以产生至少一个经融合寄存器设置命令;以及由所述中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器。
在本发明的一实施例中,上述的电子装置包括中央处理器以及协同处理器。协同处理器包括至少一个寄存器。中央处理器耦接至所述协同处理器。中央处理器被配置为产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置所述协同处理器的所述至少一个寄存器的至少一个位。所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,其中所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性。中央处理器融合所述多个第一原始寄存器设置命令,以产生至少一个经融合寄存器设置命令。中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器。
基于上述,本发明诸实施例所述中央处理器将设置目标具有地址连续性的多个第一原始寄存器设置命令融合为至少一个经融合寄存器设置命令,然后中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器。因此,中央处理器传输给协同处理器的寄存器设置命令的数量可以被有效减少。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1是依照本发明的一实施例的一种电子装置的电路方块(circuit block)示意图。
图2是依照本发明的一实施例的一种命令数量减少方法的流程示意图。
其中,附图中符号的简单说明如下:
100:电子装置;110:中央处理器;120:存储器;130:协同处理器;S210~S230:步骤。
具体实施方式
在本申请说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。本申请说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名元件(element)的名称,或区别不同实施例或范围,而并非用来限制元件数量的上限或下限,亦非用来限制元件的次序。另外,凡可能之处,在图式及实施方式中使用相同标号的元件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的元件/构件/步骤可以相互参照相关说明。
图1是依照本发明的一实施例的一种电子装置100的电路方块(circuit block)示意图。图1所示电子装置100包括中央处理器110、存储器120以及协同处理器130。在以下说明中,依照不同的设计需求,中央处理器110以及(或是)协同处理器130的实现方式可以是硬件(hardware)、固件(firmware)、软件(software,即程序)或是前述三者中的多者的组合形式。
中央处理器110耦接至存储器120。依照设计需求,中央处理器110可以包括中央处理单元(central processing unit,CPU)、控制器、微控制器(micro-controller)、微处理器(micro-processor)、专用集成电路(Application-specific integrated circuit,ASIC)、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或是其他中央处理电路,而存储器120可以包括只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、快闪存储器(FLASH memory)以及(或是)储存装置。所述储存装置包括硬盘(hard disk drive,HDD)、固态硬盘(Solid-state drive,SSD)或是其他储存装置。在另一些实施例中,所述记录介质可以包括“非临时性计算机可读取介质(non-transitory computer readable medium)”,例如带(tape)、盘(disk)、卡(card)、半导体存储器、可编程设计的逻辑电路等。存储器120适于放置操作***(Operation System,OS)与(或)应用程序(application program)的部分(或全部)编程码(programming codes)。中央处理器110可以从存储器120读取并执行所述编程码,从而实现以下诸实施例所述的中央处理器110的相关功能。而且,所述编程码也可经由任意传输介质(通信网络或广播电波等)而提供给所述电子装置100(或中央处理器110)。所述通信网络例如是因特网(Internet)、有线通信(wired communication)网络、无线通信(wireless communication)网络或其它通信介质。
依照设计需求,协同处理器130可以包括控制器、微控制器、微处理器、ASIC、DSP、FPGA或是其他处理电路。协同处理器130经由总线耦接至中央处理器110。中央处理器110可以发出一个或多个命令给协同处理器130。依照中央处理器110的命令,协同处理器130可以进行功能操作。举例来说,在一些实施例中,协同处理器130可以包括图形处理器(GraphicProcessing Unit,GPU)以及(或是)其他协同处理电路。在一些应用情境中,中央处理器110发送给协同处理器130的这些命令可以包括寄存器设置命令、绘图命令(drawing command)与(或)其他命令。依照中央处理器110的命令,GPU(协同处理器130)可以进行绘图操作。
依照设计需求,在图1所示实施例中,协同处理器130可以包括至少一个命令处理单元与至少一个寄存器(register)。依据协同处理器130的这个(或这些)寄存器的内容,所述命令处理单元可以执行(或控制)协同处理器130的功能操作。举例来说,所述寄存器以被配置为存放至少一个绘图参数。依据协同处理器130的这个(或这些)寄存器的绘图参数,所述命令处理单元可以执行(或控制)协同处理器130的绘图操作。
协同处理器130的每一个寄存器的大小(位的数量)可以依照设计需求来定义。举例来说,一个寄存器的大小可以是32位。这32位的功能可以依照设计需求来定义。在一个寄存器的32位中,可能有单一位被用来表示(存放)协同处理器130的一个操作参数,也可能使用多个位来表示(存放)协同处理器130的一个操作参数。亦即,一个寄存器可以存放协同处理器130的多个操作参数。更甚者,一个寄存器的全部位(例如32位)可能被用来表示(存放)协同处理器130的一个操作参数。
中央处理器110可以发出寄存器设置命令给协同处理器130,以便设置(改变)协同处理器130的任何一个寄存器的部分或全部内容(亦即一个或多个操作参数,例如绘图参数)。通过设置(改变)协同处理器130的这些寄存器的内容(操作参数),中央处理器110可以控制协同处理器130的功能操作(例如绘图操作)。
图2是依照本发明的一实施例的一种命令数量减少方法的流程示意图。请参照图1与图2。于步骤S210中,中央处理器110可以执行操作***(Operation System,OS)与(或)应用程序的编程码,以及(或是)执行其他编程码。在执行所述编程码的过程中,中央处理器110可以产生多个原始寄存器设置命令。所述多个原始寄存器设置命令的每一个适于设置协同处理器130的至少一个寄存器的至少一个位。这些原始寄存器设置命令可以被暂存在存储器120与(或)中央处理器110的快取存储器(CACHE memory,未绘示)。
一般而言,所述多个原始寄存器设置命令中的部分寄存器设置命令(在此称为第一原始寄存器设置命令)可能具有地址连续性。亦即,这些第一原始寄存器设置命令的多个设置目标具有地址连续性。于步骤S220中,中央处理器110可以融合这些第一原始寄存器设置命令(亦即,具有地址连续性的原始寄存器设置命令),以产生至少一个经融合寄存器设置命令。经融合后,于步骤S230中,中央处理器110可以将所述至少一个经融合寄存器设置命令传输给协同处理器130。因此,电子装置100可以执行图2所示命令数量减少方法,以减少中央处理器110传输给协同处理器130的寄存器设置命令的数量。因为中央处理器110传输给协同处理器130的寄存器设置命令的数量可以被有效减少,所以中央处理器110与协同处理器130之间的总线的频宽可以更有效率。另一方面,因为这些寄存器设置命令的数量被减少,协同处理器130解析这些寄存器设置命令的负担可以被有效减轻,进而提升协同处理器130的命令处理速度和效能。
以下将以多个实施范例来说明步骤S220的不同实施方式。须注意的是,依照应用环境与条件的不同,协同处理器130的寄存器的定址方式可能会有所不同,而所述原始寄存器设置命令的格式(语法)亦可能会有所不同。举例来说,为定址方便,协同处理器130的这些寄存器可以被划分为多个寄存器组(register group),其中每个寄存器组被分配一个组号GID。在一个寄存器组内部的每一个寄存器可以按照内部偏移(offset)进行定址。
在此将说明第一实施例。第一实施例将采用“排序合并法”。在第一实施例中,带掩码(mask)的寄存器设置命令“SetRMask”将被用来作为所述原始寄存器设置命令的范例。在此假设,这个带掩码的寄存器设置命令的语法为SetRMask(GID,O,M,V),其中GID表示寄存器组的组号,O表示在一个寄存器组内部的偏移,M表示掩码,而V表示值(value)。另外假设,在执行编程码的过程中,中央处理器110可以产生表1所示多个原始命令。在表1中,Draw_command表示绘图命令。
表1:中央处理器110所产生的原始命令及其产生顺序
顺序 原始命令
1 SetRMask(1,2,0x000000FF,0x00000078)
2 SetRMask(2,0,0xFFF00000,0x87600000)
3 SetRMask(1,2,0x03000000,0x02000000)
4 SetRMask(2,2,0xFF000000,0xAA000000)
5 SetRMask(1,5,0x000000F0,0x00000070)
6 SetRMask(2,1,0xFFF00000,0x12300000)
7 SetRMask(2,0,0x00000FF0,0x00000320)
8 SetRMask(1,5,0x00070000,0x00040000)
9 SetRMask(1,2,0x0001F800,0x00005000)
10 SetRMask(1,2,0x00F00000,0x00300000)
11 SetRMask(1,5,0x0000F000,0x00005000)
12 SetRMask(1,2,0x00000700,0x00000600)
13 SetRMask(1,5,0xFF000000,0x12000000)
14 SetRMask(3,2,0x0000000F,0x00000001)
15 SetRMask(2,2,0x00FFF000,0x00BBB000)
16 SetRMask(2,0,0x0000000F,0x00000001)
17 SetRMask(1,2,0x000E0000,0x00040000)
18 SetRMask(2,0,0x000FF000,0x00054000)
19 SetRMask(1,2,0xF0000000,0x10000000)
20 SetRMask(3,2,0xFF000000,0x22000000)
21 SetRMask(2,2,0x00000FFF,0x00000CCC)
22 SetRMask(1,5,0x00000008,0x00000008)
23 SetRMask(3,2,0x00FFFFF0,0x00555550)
24 SetRMask(2,1,0x000FFFFF,0x00045678)
25 Draw_command
在第一实施例中,中央处理器110可以依照表1所示多个原始寄存器设置命令的设置目标的地址,将这些原始寄存器设置命令进行排序。举例来说,中央处理器110可以依照升幂(升序)方式排序表1所示原始寄存器设置命令。排序后的原始命令为表2。
表2:原始命令经排序后的新顺序
原始顺序 新顺序 原始命令
1 1 SetRMask(1,2,0x000000FF,0x00000078)
12 2 SetRMask(1,2,0x00000700,0x00000600)
9 3 SetRMask(1,2,0x0001F800,0x00005000)
17 4 SetRMask(1,2,0x000E0000,0x00040000)
10 5 SetRMask(1,2,0x00F00000,0x00300000)
3 6 SetRMask(1,2,0x03000000,0x02000000)
19 7 SetRMask(1,2,0xF0000000,0x10000000)
22 8 SetRMask(1,5,0x00000008,0x00000008)
5 9 SetRMask(1,5,0x000000F0,0x00000070)
11 10 SetRMask(1,5,0x0000F000,0x00005000)
8 11 SetRMask(1,5,0x00070000,0x00040000)
13 12 SetRMask(1,5,0xFF000000,0x12000000)
16 13 SetRMask(2,0,0x0000000F,0x00000001)
7 14 SetRMask(2,0,0x00000FF0,0x00000320)
18 15 SetRMask(2,0,0x000FF000,0x00054000)
2 16 SetRMask(2,0,0xFFF00000,0x87600000)
24 17 SetRMask(2,1,0x000FFFFF,0x00045678)
6 18 SetRMask(2,1,0xFFF00000,0x12300000)
21 19 SetRMask(2,2,0x00000FFF,0x00000CCC)
15 20 SetRMask(2,2,0x00FFF000,0x00BBB000)
4 21 SetRMask(2,2,0xFF000000,0xAA000000)
14 22 SetRMask(3,2,0x0000000F,0x00000001)
23 23 SetRMask(3,2,0x00FFFFF0,0x00555550)
20 24 SetRMask(3,2,0xFF000000,0x22000000)
25 25 Draw_command
在完成排序后,中央处理器110可以将设置目标的地址为相同一个寄存器的多个“第一原始寄存器设置命令”(亦即,具有地址连续性的原始寄存器设置命令)合并为一个经融合寄存器设置命令。举例来说,表2所示新顺序1至7的这些原始寄存器设置命令,其设置目标的地址均为“在组号1的寄存器组内,偏移2”。新顺序1至7的原始寄存器设置命令的设置目标为相同一个寄存器,因此中央处理器110可以将表2所示新顺序1至7的这些原始寄存器设置命令合并为一个经融合寄存器设置命令“SetRMask(1,2,0xF3FFFFFF,0x12345678)”。表2所示其余原始寄存器设置命令可以依此类推。
融合后的命令为表3。从表3可以看出,中央处理器110传输给协同处理器130的寄存器设置命令的数量可以被有效减少。因此,中央处理器110与协同处理器130之间的总线的频宽可以更有效率。另一方面,因为这些寄存器设置命令的数量被减少,协同处理器130解析这些寄存器设置命令的负担可以被有效减轻,进而提升协同处理器130的命令处理速度和效能。
表3:原始命令与经融合寄存器设置命令
接下来将说明第二实施例。第二实施例亦采用“排序合并法”。在第二实施例中,未带掩码的寄存器设置命令“SetR”将被用来作为所述原始寄存器设置命令的范例。这个寄存器设置命令“SetR”可以连续设置一个或多个寄存器。在此假设,这个寄存器设置命令的语法为SetR(GID,O,N,V1,…,VN),其中GID表示寄存器组的组号,O表示在一个寄存器组内部的偏移,N表示寄存器数量,而V1,…,VN分别表示这N个寄存器的值。另外假设,在执行编程码的过程中,中央处理器110可以产生表4所示多个原始命令。在表4中,Draw_command表示绘图命令。
表4:中央处理器110所产生的原始命令及其产生顺序
顺序 原始命令
1 SetR(2,3,2,0x22221111,0x22222222)
2 SetR(3,3,2,0x33333333,0x33334444)
3 SetR(3,1,1,0x33331111)
4 SetR(3,5,1,0x33335555)
5 Draw_command
在第二实施例中,中央处理器110可以依照表4所示多个原始寄存器设置命令的设置目标的地址,将这些原始寄存器设置命令进行排序。举例来说,中央处理器110可以依照升幂(升序)方式排序表4所示原始寄存器设置命令。排序后的原始命令为表5。
表5:原始命令经排序后的新顺序
原始顺序 新顺序 原始命令
1 1 SetR(2,3,2,0x22221111,0x22222222)
3 2 SetR(3,1,1,0x33331111)
2 3 SetR(3,3,2,0x33333333,0x33334444)
4 4 SetR(3,5,1,0x33335555)
5 5 Draw_command
在完成排序后,中央处理器110可以将设置目标的地址为连续地址的多个寄存器的多个“第一原始寄存器设置命令”(亦即,具有地址连续性的原始寄存器设置命令)合并为一个经融合寄存器设置命令。举例来说,表5所示新顺序3至4的这些原始寄存器设置命令,其设置目标的地址为连续地址的三个寄存器(亦即,“在组号3的寄存器组内,偏移3、4与5的三个寄存器”)。表5所示新顺序3至4的原始寄存器设置命令的设置目标的地址为连续地址的三个寄存器,因此中央处理器110可以将表5所示新顺序3至4的这些原始寄存器设置命令合并为一个经融合寄存器设置命令“SetR(3,3,3,0x33333333,0x33334444,0x33335555)”。
融合后的命令为表6。从表6可以看出,中央处理器110传输给协同处理器130的寄存器设置命令的数量可以被有效减少。因此,中央处理器110与协同处理器130之间的总线的频宽可以更有效率。另一方面,因为这些寄存器设置命令的数量被减少,协同处理器130解析这些寄存器设置命令的负担可以被有效减轻,进而提升协同处理器130的命令处理速度和效能。
表6:原始命令与经融合寄存器设置命令
以下将说明第三实施例。第三实施例亦采用“排序合并法”。在第三实施例中,带掩码的寄存器设置命令“SetRMask”与未带掩码的寄存器设置命令“SetR”将被用来作为所述原始寄存器设置命令的范例。在此假设,在执行编程码的过程中,中央处理器110可以产生表7所示多个原始命令。在表7中,Draw_command表示绘图命令。
表7:中央处理器110所产生的原始命令及其产生顺序
在第三实施例中,中央处理器110可以依照表7所示多个原始寄存器设置命令的设置目标的地址,将这些原始寄存器设置命令进行排序。举例来说,中央处理器110可以依照升幂(升序)方式排序表7所示原始寄存器设置命令。排序后的原始命令为表8。
表8:原始命令经排序后的新顺序
/>
在完成排序后,中央处理器110可以进行“第一合并操作”,以将表8所示这些原始寄存器设置命令整理为一个中间命令群(如下述表9所示)。其中,所述“第一合并操作”包括:中央处理器110可以将在表8所示这些原始寄存器设置命令中设置目标的地址为相同一个寄存器的多个设置命令合并为一个经合并寄存器设置命令。所述:第一合并操作:可以参照表2与表3的相关说明去类推,故不再赘述。所述“第一合并操作”融合后的命令为表9。从表9可以看出,寄存器设置命令的数量可以被有效减少。
表9:原始命令与经合并寄存器设置命令
在完成“第一合并操作”后,中央处理器110可以进行“第二合并操作”,以将表9所示中间命令群整理为经融合命令群(如下述表10所示)。其中,所述“第二合并操作”包括:中央处理器110可以将在表9所示中间命令群中,设置目标的地址为连续地址的多个寄存器的多个寄存器设置命令(若命令为带掩码的寄存器设置命令“SetRMask”,则其掩码需为“0xFFFFFFFF”)合并为一个经融合寄存器设置命令。所述“第二合并操作”可以参照表5与表6的相关说明去类推,故不再赘述。
表10:原始命令与经融合寄存器设置命令
/>
所述“第二合并操作”合并后的命令为表10。从表10可以看出,中央处理器110传输给协同处理器130的寄存器设置命令的数量可以被有效减少(从29个命令减少为5个命令)。因此,中央处理器110与协同处理器130之间的总线的频宽可以更有效率。另一方面,因为这些寄存器设置命令的数量被减少,协同处理器130解析这些寄存器设置命令的负担可以被有效减轻,进而提升协同处理器130的命令处理速度和效能。
以下将说明第四实施例。第四实施例将采用“寄存器缓冲区法”。中央处理器110可以初始化至少一个缓冲区,其中所述至少一个缓冲区是以一对一方式对应于协同处理器130的寄存器。举例来说,若协同处理器130有10个寄存器,则中央处理器110可以初始化10个缓冲区。这些缓冲区可以被设置在存储器120与(或)中央处理器110的快取存储器(未绘示)。
在第四实施例中,带掩码的寄存器设置命令“SetRMask”与未带掩码的寄存器设置命令“SetR”将被用来作为所述原始寄存器设置命令的范例。在此假设,在执行编程码的过程中,中央处理器110可以产生表7所示多个原始命令。为了方便解说,在此假设协同处理器130的这些寄存器可以被划分为三个寄存器组(组号分别为1、2与3),其中每个寄存器组具有7个寄存器。因此,中央处理器110可以初始化3*7=21个缓冲区,如表11所示。每一个缓冲区具有掩码栏位与值栏位。
表11:中央处理器110的经初始化的缓冲区
中央处理器110可以伪执行表7所示这些原始寄存器设置命令,以将这些原始寄存器设置命令的多个设置值对应地填入表11所示这些缓冲区。举例来说,中央处理器110可以伪执行表7所示顺序“1”的原始寄存器设置命令SetRMask(1,2,0x000000FF,0x00000078),以将“0x000000FF”与“0x00000078”分别并入组号1且偏移2的缓冲区的掩码栏位与值栏位。然后中央处理器110可以伪执行表7所示顺序“2”的原始寄存器设置命令SetRMask(2,0,0xFFF00000,0x87600000),以将“0xFFF00000”与“0x87600000”分别并入组号2且偏移0的缓冲区的掩码栏位与值栏位。以此类推,中央处理器110可以伪执行表7所示顺序“3”、“4”与“5”的原始寄存器设置命令,以将这些原始寄存器设置命令的掩码与值分别并入表11所示这些缓冲区的掩码栏位与值栏位。在中央处理器110伪执行表7所示顺序“1”至“5”后,中央处理器110的所述21个缓冲区的内容如表12所述。
表12:中央处理器110伪执行表7所示顺序“1”至“5”后的缓冲区
以此类推,中央处理器110可以伪执行表7所示顺序“1”至“28”的原始寄存器设置命令,以将这些原始寄存器设置命令的掩码与值分别并入表11所示这些缓冲区的掩码栏位与值栏位。在中央处理器110伪执行表7所示顺序“1”至“28”后,中央处理器110的所述21个缓冲区的内容如表13所示。
表13:中央处理器110伪执行表7所示顺序“1”至“28”后的缓冲区
在完成对表7所示所有原始寄存器设置命令的伪执行后,中央处理器110可以扫描中央处理器110的所述21个缓冲区(如表13所示),以将在这些缓冲区中被填入设置值的相同一个缓冲区转换为一个经融合寄存器设置命令(“SetRMask”或“SetR”),以及(或是)将在这些缓冲区中被填入设置值且连续地址的多个缓冲区转换为所述至少一个经融合寄存器设置命令(“SetRMask”或“SetR”)。
举例来说,表13所示组号1且偏移2的缓冲区被填入设置值,因此中央处理器110可以将这个相同缓冲区的掩码栏位与值栏位转换为一个经融合寄存器设置命令SetRMask(1,2,0xF3FFFFFF,0x12345678)。表13所示组号1且偏移5的缓冲区被填入设置值,因此中央处理器110可以将这个相同缓冲区的掩码栏位与值栏位转换为一个经融合寄存器设置命令SetRMask(1,5,0xFF07F0F8,0x12045078)。
表13所示组号2且偏移0至4的五个缓冲区被填入设置值,且这五个缓冲区的地址为连续,且这五个缓冲区的掩码栏位皆为“0xFFFFFFFF”(亦即,这个缓冲区的所有位都被设置了值),因此中央处理器110可以将这五个缓冲区转换为未带掩码的一个经融合寄存器设置命令SetR(2,0,5,0x87654321,0x12345678,0xAABBBCCC,0x22221111,0x22222222)。表13所示组号3且偏移1至5的五个缓冲区被填入设置值,且这五个缓冲区的地址为连续,且这五个缓冲区的掩码栏位皆为“0xFFFFFFFF”,因此中央处理器110可以将这五个缓冲区转换为一个经融合寄存器设置命令SetR(3,1,5,0x33331111,0x22555551,0x33333333,0x33334444,0x33335555)。
因此,中央处理器110可以将表13所示这21个缓冲区转换为4个经融合寄存器设置命令。亦即,中央处理器110可以将表7所示29个原始寄存器设置命令转换为4个经融合寄存器设置命令。因此,中央处理器110传输给协同处理器130的寄存器设置命令的数量可以被有效减少,使得中央处理器110与协同处理器130之间的总线的频宽可以更有效率。另一方面,因为被传输给协同处理器130的这些寄存器设置命令的数量被减少,协同处理器130解析这些寄存器设置命令的负担可以被有效减轻,进而提升协同处理器130的命令处理速度和效能。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (8)

1.一种命令数量减少方法,适于减少多个寄存器设置命令的数量,其特征在于,包括:
由中央处理器产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置协同处理器的至少一个寄存器的至少一个位,所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,以及所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性;
由所述中央处理器融合所述多个第一原始寄存器设置命令,以产生至少一个经融合寄存器设置命令;以及
由所述中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器,
其中,所述融合所述多个第一原始寄存器设置命令的操作包括:
依照所述多个原始寄存器设置命令的所述多个设置目标的地址,将所述多个原始寄存器设置命令进行排序;以及
在完成排序后,将所述多个设置目标的地址为相同一个寄存器的所述多个第一原始寄存器设置命令合并为所述至少一个经融合寄存器设置命令。
2.根据权利要求1所述的命令数量减少方法,其中,所述协同处理器包括图形处理器,而所述至少一个寄存器被配置为存放至少一个绘图参数。
3.一种命令数量减少方法,适于减少多个寄存器设置命令的数量,其特征在于,包括:
由中央处理器产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置协同处理器的至少一个寄存器的至少一个位,所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,以及所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性;
由所述中央处理器融合所述多个第一原始寄存器设置命令,以产生至少一个经融合寄存器设置命令;以及
由所述中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器,
其中,所述融合所述多个第一原始寄存器设置命令的操作包括:
初始化至少一个缓冲区,其中所述至少一个缓冲区以一对一方式对应于所述协同处理器的所述至少一个寄存器;
由所述中央处理器伪执行所述多个原始寄存器设置命令,以将所述多个原始寄存器设置命令的多个设置值对应地填入所述至少一个缓冲区;以及
在完成对所述多个原始寄存器设置命令的伪执行后,扫描所述至少一个缓冲区,以将在所述至少一个缓冲区中被填入设置值的相同一个缓冲区转换为所述至少一个经融合寄存器设置命令,或是将在所述至少一个缓冲区中被填入设置值且连续地址的多个缓冲区转换为所述至少一个经融合寄存器设置命令。
4.根据权利要求3所述的命令数量减少方法,其中,所述协同处理器包括图形处理器,而所述至少一个寄存器被配置为存放至少一个绘图参数。
5.一种电子装置,其特征在于,包括:
协同处理器,包括至少一个寄存器;以及
中央处理器,耦接至所述协同处理器,被配置为产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置所述协同处理器的所述至少一个寄存器的至少一个位,所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性,所述中央处理器融合所述多个第一原始寄存器设置命令以产生至少一个经融合寄存器设置命令,以及所述中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器,
其中,所述中央处理器依照所述多个原始寄存器设置命令的所述多个设置目标的地址,将所述多个原始寄存器设置命令进行排序;以及
在完成排序后,所述中央处理器将所述多个设置目标的地址为相同一个寄存器的所述多个第一原始寄存器设置命令合并为所述至少一个经融合寄存器设置命令。
6.根据权利要求5所述的电子装置,其中,所述协同处理器包括图形处理器,而所述至少一个寄存器被配置为存放至少一个绘图参数。
7.一种电子装置,其特征在于,包括:
协同处理器,包括至少一个寄存器;以及
中央处理器,耦接至所述协同处理器,被配置为产生多个原始寄存器设置命令,其中所述多个原始寄存器设置命令的每一个适于设置所述协同处理器的所述至少一个寄存器的至少一个位,所述多个原始寄存器设置命令包括多个第一原始寄存器设置命令,所述多个第一原始寄存器设置命令的多个设置目标具有地址连续性,所述中央处理器融合所述多个第一原始寄存器设置命令以产生至少一个经融合寄存器设置命令,以及所述中央处理器将所述至少一个经融合寄存器设置命令传输给所述协同处理器,
其中,所述中央处理器初始化至少一个缓冲区,其中所述至少一个缓冲区以一对一方式对应于所述协同处理器的所述至少一个寄存器;
所述中央处理器伪执行所述多个原始寄存器设置命令,以将所述多个原始寄存器设置命令的多个设置值对应地填入所述至少一个缓冲区;以及
在完成对所述多个原始寄存器设置命令的伪执行后,所述中央处理器扫描所述至少一个缓冲区,以将在所述至少一个缓冲区中被填入设置值的相同一个缓冲区转换为所述至少一个经融合寄存器设置命令,或是将在所述至少一个缓冲区中被填入设置值且连续地址的多个缓冲区转换为所述至少一个经融合寄存器设置命令。
8.根据权利要求7所述的电子装置,其中,所述协同处理器包括图形处理器,而所述至少一个寄存器被配置为存放至少一个绘图参数。
CN202010887217.4A 2020-08-28 2020-08-28 电子装置及其命令数量减少方法 Active CN112015474B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202311769328.5A CN117724768A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202311769327.0A CN117724767A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202010887217.4A CN112015474B (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
US17/028,966 US11630672B2 (en) 2020-08-28 2020-09-22 Reducing a number of commands transmitted to a co-processor by merging register-setting commands having address continuity
US18/176,493 US20230205541A1 (en) 2020-08-28 2023-03-01 Electronic apparatus and method for reducing number of commands
US18/176,496 US20230205542A1 (en) 2020-08-28 2023-03-01 Electronic apparatus and method for reducing number of commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010887217.4A CN112015474B (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202311769328.5A Division CN117724768A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202311769327.0A Division CN117724767A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法

Publications (2)

Publication Number Publication Date
CN112015474A CN112015474A (zh) 2020-12-01
CN112015474B true CN112015474B (zh) 2024-01-26

Family

ID=73503026

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202010887217.4A Active CN112015474B (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202311769328.5A Pending CN117724768A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202311769327.0A Pending CN117724767A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202311769328.5A Pending CN117724768A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法
CN202311769327.0A Pending CN117724767A (zh) 2020-08-28 2020-08-28 电子装置及其命令数量减少方法

Country Status (2)

Country Link
US (3) US11630672B2 (zh)
CN (3) CN112015474B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
CN105144122A (zh) * 2013-03-14 2015-12-09 高通股份有限公司 外部可编程存储器管理单元
CN110415161A (zh) * 2019-07-19 2019-11-05 龙芯中科技术有限公司 图形处理方法、装置、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US7502029B2 (en) * 2006-01-17 2009-03-10 Silicon Integrated Systems Corp. Instruction folding mechanism, method for performing the same and pixel processing system employing the same
JP5281265B2 (ja) * 2007-10-02 2013-09-04 キヤノン株式会社 印刷処理方法およびそれを実現する情報処理装置
US8676926B2 (en) * 2009-04-15 2014-03-18 Wyse Technology L.L.C. System and method for handling remote drawing commands
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
EP2383648B1 (en) * 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US9292291B2 (en) * 2012-03-28 2016-03-22 International Business Machines Corporation Instruction merging optimization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105144122A (zh) * 2013-03-14 2015-12-09 高通股份有限公司 外部可编程存储器管理单元
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
CN110415161A (zh) * 2019-07-19 2019-11-05 龙芯中科技术有限公司 图形处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20230205542A1 (en) 2023-06-29
CN117724767A (zh) 2024-03-19
US11630672B2 (en) 2023-04-18
CN117724768A (zh) 2024-03-19
CN112015474A (zh) 2020-12-01
US20220066778A1 (en) 2022-03-03
US20230205541A1 (en) 2023-06-29

Similar Documents

Publication Publication Date Title
KR102010902B1 (ko) Sm3 해시 알고리즘 가속 프로세서, 방법, 시스템 및 명령어
US7213081B2 (en) Dynamic determination of memory mapped input output range granularity for multi-node computer system
US7444630B2 (en) Method and apparatus for changing microcode to be executed in a processor
WO2019056358A1 (en) EFFICIENT MEMORIZATION OF COMPUTER PROCESSOR DATA STRUCTURES IN COMPUTER MACHINE
JP2015528610A (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
US20160203099A1 (en) System on chip for packetizing multiple bytes and data processing system including the same
US8510759B1 (en) Scatter gather emulation
US20160225340A1 (en) Display controller for reducing display noise and system including the same
US9292458B2 (en) Method of performing collective communication according to status-based determination of a transmission order between processing nodes and collective communication system using the same
US7609574B2 (en) Method, apparatus and system for global shared memory using serial optical memory
CN112015474B (zh) 电子装置及其命令数量减少方法
US10521688B2 (en) Efficient SIMD implementation of 3X3 non maxima suppression of sparse 2D image feature points
US20150006768A1 (en) Immediate direct memory access descriptor-based write operation
US10268617B2 (en) Frame format for a serial interface
US10296475B2 (en) Data processing system
WO2024108836A1 (zh) 计算装置、操作方法和机器可读存储介质
US7609575B2 (en) Method, apparatus and system for N-dimensional sparse memory using serial optical memory
US9361027B1 (en) System and method for fast modification of register content
KR102287402B1 (ko) 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법
US11360713B2 (en) Semiconductor device and debug system
CN111651124B (zh) Ssd映射表多核分区并行重建方法、装置、设备及介质
US10360031B2 (en) Fast unaligned memory access
WO2018139344A1 (ja) 情報処理システム、情報処理装置、周辺装置、データ転送方法、及びデータ転送プログラムが格納された非一時的な記憶媒体
CN114051611B (zh) 用于非连续存储器的dma分散和聚集操作
US11418212B2 (en) Parallel decoding techniques

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210210

Address after: 200131 3rd floor, building 2, No. 200, zhangheng Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant after: Gryfield Intelligent Technology Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant