CN118647971A - 用于执行存储器存取操作的技术 - Google Patents

用于执行存储器存取操作的技术 Download PDF

Info

Publication number
CN118647971A
CN118647971A CN202280090725.7A CN202280090725A CN118647971A CN 118647971 A CN118647971 A CN 118647971A CN 202280090725 A CN202280090725 A CN 202280090725A CN 118647971 A CN118647971 A CN 118647971A
Authority
CN
China
Prior art keywords
vector
capability
memory
instruction
memory access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280090725.7A
Other languages
English (en)
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.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN118647971A publication Critical patent/CN118647971A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本发明描述一种设备,该设备具有:处理电路系统,该处理电路系统执行向量处理操作;一组向量寄存器;和指令解码器,该指令解码器解码向量指令以控制该处理电路系统,以执行所需操作。该指令解码器响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、从该给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的该组向量寄存器中的至少一个向量寄存器以及从该给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的该组向量寄存器中的多个向量寄存器。各能力与该多个数据元素中的数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束该地址指示的使用的约束信息。从该至少一个能力向量指示字段所确定的向量寄存器的数目大于从该数据向量指示字段所确定的向量寄存器的数目。该指令解码器控制该处理电路系统,以:针对该多个数据元素中的各给定数据元素,基于由该相关联能力所提供的该地址指示来确定存储器地址,并且针对该相关联能力的该约束信息,确定是否就该所确定的存储器地址允许要用以存取该给定数据元素的该存储器存取操作;以及针对该存储器存取操作经允许的各数据元素,实现该存储器存取操作的执行。

Description

用于执行存储器存取操作的技术
背景技术
本技术涉及数据处理领域,并且更具体来说,涉及存储器存取操作的处置。
向量处理系统已经开发,所述向量处理系统通过使得能够执行给定向量指令以致使就数据元素向量内的多个数据元素来说独立地执行由所述给定向量指令所定义的操作来寻求改善码密度且常改善性能。在存储器存取操作的背景下,因此可响应于向量载入指令而将来自存储器的多个相连数据元素载入到指定的向量寄存器中,或者响应于向量存储指令而将来自指定向量寄存器的多个相连数据元素存储到存储器。也可提供那些向量载入或存储指令的向量集中或向量分散变体,以允许所处理的数据元素常驻在存储器中的任意位置。当使用此类向量集中或向量分散指令时,除了针对要处理的多个数据元素识别向量以外,也可识别向量以提供用以确定各数据元素的存储器地址的多个地址指示。
对基于能力的架构越来越关注,其中某些能力是针对给定程序定义,并且如果存在实行所定义的能力以外的操作的意图,则可触发错误。能力可采取各种形式,但一种类型的能力是有界限指标(其也可称为“胖指标(fat pointer)”)。
各能力可包括约束信息,所述约束信息用以限制可在使用所述能力时执行的操作。例如,就有界限指标而论,此可提供用以识别可在使用所述能力时由处理电路系统存取的存储器地址的非可扩充范围的信息连同识别相关联权限的一个或多个权限旗标。
支持向量集中或向量分散指令的执行,但同时使得能够通过能力指定各种地址指示,以从通过使用能力所提供的安全性效益来获益将是合乎需要的。然而,归因于联合地址指示提供以形成能力的约束信息,提供地址指示的能力固有地大于等效的标准地址指示。
发明内容
在第一示例布置中,提供一种设备,所述设备包括:处理电路系统,所述处理电路系统执行向量处理操作;一组向量寄存器;和指令解码器,所述指令解码器解码向量指令以控制所述处理电路系统,以执行由所述向量指令指定的所述向量处理操作;其中:所述指令解码器响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;所述指令解码器进一步经布置以控制所述处理电路系统,以:针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
在进一步的示例布置中,提供一种在设备内执行存储器存取操作的方法,所述设备提供执行向量处理操作的处理电路系统和一组向量寄存器,所述方法包括:响应于指定多个存储器存取操作的给定向量存储器存取指令而利用指令解码器,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;控制所述处理电路系统,以:针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
在更进一步的示例布置中,提供一种用于控制主机数据处理设备以提供指令执行环境的计算机程序,所述计算机程序包括:处理程序逻辑,所述处理程序逻辑执行向量处理操作;向量寄存器仿真程序逻辑,所述向量寄存器仿真程序逻辑仿真一组向量寄存器;以及指令解码程序逻辑,所述指令解码程序逻辑解码向量指令以控制所述处理程序逻辑,以执行由所述向量指令指定的所述向量处理操作;其中:所述指令解码程序逻辑响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;所述指令解码程序逻辑进一步经布置以控制所述处理程序逻辑:针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
在又更进一步的示例布置中,提供一种设备,所述设备包括:处理构件,所述处理构件用于执行向量处理操作;一组向量寄存器构件;和指令解码构件,所述指令解码构件用于解码向量指令以控制所述处理构件,以执行由所述向量指令指定的所述向量处理操作;其中:所述指令解码构件响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、用于从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器构件中的至少一个向量寄存器构件以及用于从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器构件中的多个向量寄存器构件,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器构件的数目大于从所述数据向量指示字段所确定的向量寄存器构件的数目;所述指令解码构件进一步经布置以用于控制所述处理构件:针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器构件之间移动。
附图说明
本技术将仅通过图示、参照如随附附图中所示出的其示例来进一步地描述,其中:
图1是根据一个示例实施方案的设备的框图;
图2示出根据一个示例实施方案的联合能力的标签位的使用;
图3A和图3B示出根据一个示例实施方案的不同方式,其中有效能力指示(其在一个示例中采取标签位的形式)可联合向量寄存器的各能力大小块存储以指示所述能力大小块是否存储有效能力;
图4A和图4B是示出根据一个示例实施方案的可如何管理联合向量寄存器的各能力大小块维持的标签位的流程图;
图5A示出根据一个示例实施方案的可在向量存储器存取指令内提供的字段,同时图5B是示出根据一个示例实施方案的当执行此向量存储器存取指令时所执行的步骤的流程图;
图6A和图6B是示出根据一个示例实施方案的可用以确定当执行集中和分散操作时保存所用的所需能力的多个向量寄存器的流程图;
图7示意地示出根据一个示例实施方案的可如何将一组向量寄存器逻辑地分割成多个区段;
图8A至图8C示出可在执行本文所述类型的集中或分散操作时使用的数据元素和相关联能力的特定示例布置;
图9是示出根据一个示例实施方案的可如何确定各数据元素的相关联能力的流程图;
图10展示向量指令的重叠执行的示例;
图11展示在不同的处理器实施方案之间或在不同的指令执行情况之间的执行阶段扩缩相连的向量指令之间的重叠量的三个示例;
图12是示出在一个示例实施方案中可如何使用向量能力存储器转移指令序列以在存储器与向量寄存器之间移动能力的流程图,移动方式确保能力被存储在多个向量寄存器内的布置中,此举允许在以本文所述的方式执行集中和分散操作时使用;
图13示意地示出根据本文所述的技术的当利用向量能力存储器转移指令序列以在存储器与向量寄存器之间转移能力时,可如何存取不同的存储器库;并且
图14展示可使用的模拟器示例。
具体实施方式
根据本文所述的技术,提供一种设备,所述设备具有:处理电路系统,所述处理电路系统执行向量处理操作;一组向量寄存器;和指令解码器,所述指令解码器解码向量指令以控制所述处理电路系统,以执行由所述向量指令指定的所述向量处理操作。由向量指令指定的向量处理操作可通过对向量中的多个数据元件中的每一者独立地执行所需操作来实施,并且那些所需操作可平行地、循序地一个接一个、或依群组执行(例如,其中成群组的操作可平行地执行,并且各群组可循序地执行)。
所述指令解码器可经布置以处理指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联的数据元素,并且因此多个存储器存取操作可集体视为实施由所述向量存储器存取指令指定的向量存储器存取操作。具体地,响应于此给定向量存储器存取指令,所述指令解码器可经布置以从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器。所述从数据向量指示字段所确定的各向量寄存器因此可例如形成用于向量分散操作的来源寄存器(所述向量分散操作寻求将来自所述来源寄存器的数据元素存储到存储器中的不同位置),或者可充当用于向量集中操作的目的地寄存器(所述向量集中操作寻求从存储器中的不同位置载入数据元素以用于存储在所述向量寄存器中)。
所述指令解码器也经布置以从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器。在一个示例实施方案中,使用单个能力向量指示字段,并且从所述单个能力向量指示字段中的信息确定所述多个向量寄存器。然而,在替代实施方案中,可提供多个能力向量指示字段,例如以允许各能力向量指示字段识别对应的向量寄存器。在一个示例实施方案中,所述多个向量寄存器的各向量寄存器含有多个能力,而在另一示例中,所述多个向量寄存器的各向量寄存器含有单个能力。
所述所确定的多个向量寄存器中的各能力与所述多个数据元素中的数据元素中的一个数据元素相关联,并且提供地址指示和约束在存取存储器时使用所述地址指示的约束信息。所述约束信息可采取各种形式,但可例如识别用以确定在使用由能力所提供的地址指示时可存取的存储器地址的可允许范围的范围信息,和/或指定可使用地址指示执行的存取类型的一个或多个权限属性(例如,是否允许读取存取、是否允许写入存取、是否可使用能力以产生要提取和执行的指令的存储器地址、是否允许来自特定安全或特权层级的存取等)。在进一步的示例中,所述约束信息可为识别指示一组条件约束信息中的项目的值的条件约束。所述组条件约束信息中的各项目可采取各种形式,但可例如识别用以确定在使用由能力所提供的地址指示时可存取的存储器地址的可允许范围的范围信息,和/或指定可使用地址指示执行的存取类型的一个或多个权限属性(例如,是否允许读取存取、是否允许写入存取、是否可使用能力以产生要提取和执行的指令的存储器地址、是否允许来自特定安全或特权层级的存取等)。在一些实施方案中,所产生的存储器地址可为直接对应于存储器系统中的位置的物理存储器地址,而在其它实施方案中,所产生的存储器地址可为虚拟地址,可需要对所述虚拟地址执行地址转译才能确定要存取的物理存储器地址。
根据本文所述的技术,从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目。
所述指令解码器进一步经布置以控制所述处理电路系统,以针对所述多个数据元素中的各给定数据元素,基于由相关联能力所提供的地址指示来确定存储器地址(其可为虚拟地址或物理地址中的任一者),并且针对相关联能力的约束信息,确定是否就所确定的存储器地址允许要用以存取给定数据元素的存储器存取操作。如先前所提及,所述约束信息可采取各种形式,并且因此此处用以确定是否允许要用以存取给定数据元素的存储器存取操作所执行的检查可采取各种形式。因此,那些检查可例如识别是否可鉴于能力中的任何范围约束信息而存取所确定的存储器地址,并且也可确定是否允许存取类型(例如,如果存取操作要执行写入到存储器,能力中的约束信息是否允许执行此写入)。
接着,所述处理电路系统可经布置以针对允许存储器存取操作的各数据元素,实现存储器存取操作的执行,其中针对任何给定数据元素执行存储器存取操作致使所述给定数据元素在存储器中的所确定的存储器地址与至少一个向量寄存器之间移动(须理解,移动方向取决于数据是否从存储器载入寄存器中或从寄存器存储到存储器中)。在一个示例实施方案中,在此程序期间,原始位置中的给定数据元素可保持原样,并且因此在所述情况下,可通过复制给定数据元素来执行移动操作。例如,此一般可为至少在从存储器载入数据元素以用于存储在向量寄存器内时的情况,其中接着存储在向量寄存器内的数据元素是存储在存储器中的数据元素的副本。
虽然在一个示例实施方案中,存储器存取操作可针对允许那些存储器存取操作的各数据元素执行,但在其它实施方案中,可决定在不允许存储器存取操作中的另一存储器存取操作的情况下抑制一个或多个经允许的存储器存取操作的执行。确切地,在此情况下哪些允许的存取被抑制可取决于实施方案,以及不允许其相关联的存取的数据元素在数据元素的向量中的所在之处。纯粹举说明性示例来说,各种存取可循序地执行,并且因此当检测到一个不允许的存取时,可决定无论后续存取是否允许均抑制所述后续存取,但较早之前的存取则已经执行。
在一个示例实施方案中,提供一种跟踪存储在向量寄存器内的有效能力的机制。具体地,在一个示例实施方案中,所述设备进一步包括能力指示存储装置,所述能力指示存储装置提供与所述组向量寄存器中的给定向量寄存器内的各能力大小块相关联的有效能力指示字段,其中各有效能力指示字段经布置以设定为指示相关联能力大小块何时存储有效能力,否则将其清除。虽然在一个示例实施方案中,所述组向量寄存器中的向量寄存器的任何者可能够存储能力,然而在另一示例实施方案中,存储能力的能力可限制在所述组中的向量寄存器的子集,并且在后一种情况下,能力指示存储装置将仅需要提供用于向量寄存器的所述子集内的各能力大小块的有效能力指示字段。
虽然在一个示例实施方案中,所述能力指示存储装置可分开地提供到所述组向量寄存器,在一替代示例实施方案中,所述能力指示存储装置可并入所述组向量寄存器内。
为了约束所述有效能力指示字段的设定方式,所述处理电路系统可经布置以仅允许将任何有效能力指示字段设定为指示响应于能够由所述设备执行的一组指令中的一个或多个特定指令的执行而在所述相关联的能力大小块中存储有效能力。通过以此方式限制有效能力指示字段的设定,此可例如通过禁止指示应将向量寄存器内的通用数据的能力大小块视为能力的任何意图而改善安全性。因此,不会通过非能力操作或通过使能力以终止成为有效的方式变动的任一者建立有效能力的对向量执行的操作可经布置以致使清除相关联的有效能力指示字段,因此指示有效能力并未存储在其中。因此,举例来说,到数据的能力大小块的部分写入或非能力的写入将清除相关联的有效能力指示字段。也可通过各种非指令操作(例如,与异常处置相关联的向量寄存器状态的堆叠和清除)或在一些实施方案中通过复位操作来清除能力指示字段。
如先前所提及,用以在执行上文提及的给定向量存储器存取指令时提供所需能力的向量寄存器的数目大于含有经受存储器存取操作的数据元素的向量寄存器的数目。在一个示例实施方案中,形成从至少一个能力向量指示字段所确定的多个向量寄存器的向量寄存器的数目是二的幂次。具体地,存储能力所需的向量寄存器的数目取决于数据元素与能力之间的大小差异,并且在一个示例实施方案中,所述差异可依二的幂次而变化。在本文中应注意,当考虑能力大小时,用以指示能力是有效能力的任何相关联旗标(例如先前提及的有效能力指示字段)并未视为能力本身的部分。
如先前所提及,如果需要,可使用多个能力向量指示字段以指定在执行给定向量存储器存取指令时存储所需能力的不同向量寄存器。此方法允许不同向量寄存器相对于彼此任意地定位并且在指令编码中指定。然而,在一个示例实施方案中,所述至少一个能力向量指示字段是经布置以识别一个向量寄存器的单个能力向量指示字段,并且所述指令解码器经布置以基于所确定关系来确定所述多个向量寄存器中的剩余的向量寄存器。就指令编码的观点看来,此方法可为有利的,因为一般来说,指令编码空间相当有限,并且提供多个能力向量指示字段以识别要存储所需能力的向量寄存器中的每一者可为不切实际的。
取决于实施方案,基于所识别的一个向量寄存器和所确定关系来确定剩余的向量寄存器的方式可采取各种形式。例如,所确定关系可指定向量寄存器彼此循序、向量寄存器是偶数/奇数对、或已知的位移存在不同向量寄存器之间。替代地,可使用任何其它合适的指示关系。
在一个特定的示例实施方案中,存储所需能力的所述多个向量寄存器中的向量寄存器的数目是2N,并且所述单个能力向量指示字段指示识别一个向量寄存器的第一向量寄存器编号,其中第一向量寄存器编号经约束而使其的N个最低有效位处于逻辑零值。接着,指令解码器经布置以通过重复使用所述第一向量寄存器编号和将N个最低有效位中的至少一个最低有效位选择性地设定为逻辑值一来针对所述剩余的向量寄存器中的每一者产生向量寄存器编号。此可提供用于计算不同向量寄存器的特别简单且有效率的机制,所述向量寄存器将在执行给定向量存储器存取指令时提供所需能力。
在一些实施方案中,例如,由于给定向量存储器存取指令仅针对与具有特定固定大小的数据元素并用而获支持,保存能力所需的向量寄存器的数目将是固定的,并且其中能力也具有固定大小。然而,在更普遍的情况下,可由所述指令解码器在执行阶段基于将对其执行给定向量存储器存取指令的数据元素的大小和能力大小的知识推断向量寄存器的数目。
有若干单个能力向量指示字段可经布置以指示第一向量寄存器编号的方式。虽然在一个示例实施方案中,所述单个能力向量指示可直接识别所述第一向量寄存器编号,然而在其它实施方案中,所述单个能力向量指示可指定足以使得能够确定所述第一向量寄存器编号的信息。例如,在所述第一向量寄存器编号经约束而使其的N个最低有效位处于逻辑零值的上述情况下,所述N个最低有效位不需要在单个能力向量指示字段内识别,取而代之地,可硬连线到逻辑零值。
与不同数据元素相关联的能力在用以提供能力的向量寄存器内的布局方式可取决于实施方案而变化。然而,在一个示例实施方案中,对于与所述至少一个向量寄存器中的相邻位置相关联的任何给定数据元素对,所述相关联的能力被存储在所述多个向量寄存器的不同的向量寄存器中。已发现,当执行给定向量存储器存取指令时,此一布置可允许有效率的实施方案。
确定任何特定数据元素的相关联能力在多个向量寄存器内的位置的方式可取决于实施方案而变化。然而,在一个示例实施方案中,从所述数据向量指示字段所确定的所述至少一个向量寄存器包括单个向量寄存器,并且各数据元素与所述单个向量寄存器的对应的数据通道相关联。进一步地,各能力位于所述多个向量寄存器中的向量寄存器中的一个向量寄存器内的能力通道内。此处应注意,由于数据元素和能力具有不同大小的事实,数据通道的宽度一般将不同于能力通道的宽度。使用此布置,接着对于给定数据元素,含有所述相关联能力的所述多个向量寄存器内的所述向量寄存器可依据对应的所述数据通道的通道数目的给定数目个最低有效位确定,并且含有所述相关联能力的所述能力通道可依据对应的所述数据通道的所述通道数目的剩余位确定。因此,此提供用于针对各数据元素确定相关联能力的位置的特别有效率的机制。
在一个特定示例布置中,含有所述多个能力的向量寄存器的数目是P,逻辑上视为具有0至P-1的值的序列,并且任何给定向量寄存器中的能力通道的数目是M,所述数目具有从0至M-1的值。进一步地,与给定数据元素相关联的数据通道是数据通道X,所述数据通道具有从0至X-1的值。使用此类术语,接着在一个示例实施方案中,所述多个向量寄存器内的所述相关联能力的位置可通过将X除以P以得出商数和余数来确定,其中商数识别含有所述相关联能力的所述能力通道,并且余数识别含有所述相关联能力的所述多个向量寄存器内的所述向量寄存器。因此,在此实施方案中,可轻易且有效率地确定用于定位给定数据元素的相关联能力所需要的向量寄存器和能力通道两者。
应注意,虽然在上述示例中,含有多个能力的多个向量寄存器在逻辑上视为具有0至P-1的值的序列,所述值并非意指与那些向量寄存器相关联的逻辑向量数目必须是相连的逻辑向量数目,实际上也非意指向量寄存器必须在所述组向量寄存器内相对于彼此循序地物理定位。
在一个示例实施方案中,可将所述组向量寄存器逻辑地分割为多个区段,其中各区段含有来自所述组向量寄存器中的向量寄存器中的每一者的对应部分,并且所述多个能力可被定位在所述多个向量寄存器内,使得对于各数据元素,相关联的能力被存储在与所述数据元素相同的区段内。通过此方法,此可允许将给定向量存储器存取指令的执行划分成多个“节拍”,并且在各节拍期间仅存取所述组向量寄存器的一个区段以执行所述给定向量存储器存取指令。通过允许所述向量存储器存取指令划分成多个节拍,此可允许所述向量存储器存取指令的执行与一个或多个其它指令的执行重叠,可导致高度有效率的实施方案。具体地,由于在任何特定节拍期间,于所述节拍期间执行存储器存取操作所需的数据元素和能力可全部得自所述组向量寄存器的单个区段,此使任何其它区段在重叠指令的执行期间可供存取。
在一个示例实施方案中,所述处理电路系统可经布置以在一个或多个节拍期间针对给定区段的下一区段内的数据元素执行存储器存取操作之前,在一个或多个节拍期间针对所述给定区段内的数据元素执行存储器存取操作。虽然在一个示例实施方案中,用以执行所述给定向量存储器存取指令的所述多个节拍中的各节拍可存取不同区段,此并非必要条件,并且在一些实施方案中,情况可为那些节拍中的多于一个节拍存取相同区段。
有若干方式可将执行上述给定向量存储器存取指令时所需的能力从存储器载入并接着配置在先前所讨论的布置中的多个向量寄存器内,并且实际上,有若干方式在适当时机将向量寄存器内的那些能力回存到存储器。然而,在一个示例实施方案中,所述指令解码器经布置以解码多个向量能力存储器转移指令,所述多个向量能力存储器转移指令共同致使所述指令解码器控制所述处理电路系统以在所述存储器与所述多个向量寄存器之间转移多个能力,以及在转移期间重布置所述多个能力使得在所述存储器中循序地存储多个能力,并且在所述多个向量寄存器中解交错所述多个能力,使得在所述存储器中经循序存储的所述多个能力内的任何给定能力对被存储在所述多个向量寄存器的不同向量寄存器中。
应注意,用以采取上述步骤的多个向量能力存储器转移指令不需直接彼此接续,并且因此不需一个接着一个地循序执行。取而代之地,可有各执行所需工作的部分的多个相异指令,并且一旦所有指令均已执行,则随着能力在所述存储器与所述向量寄存器之间的移动(在一个示例中,复制)而需要的能力重布置将已执行。所述多个向量能力存储器转移指令可载入用以从所述存储器载入能力到所述多个向量寄存器中的指令,或存储用以从所述多个向量寄存器将能力回存到所述存储器的指令。
在一个示例实施方案中,各向量能力存储器转移指令经布置以识别对各其它向量能力存储器转移指令不同的能力,并且各向量能力存储器转移指令经布置以识别存取模式,所述存取模式致使所述处理电路系统在执行由所述存取模式指定的重布置的同时转移所述所识别能力。因此,在此布置中,执行各个别的向量能力存储器转移指令将致使针对通过所述指令转移的能力执行所需的重布置,其中其它的向量能力存储器转移指令接着用以转移其它能力和针对那些能力执行所需的重布置。
使用此实施方案,可针对各种不同指令进行布置以全部转移相同的最大量数据,所述最大量数据是就任何特定系统中可用的有限的存储器带宽而选择。此方法可避免任何个别指令停滞,并且因此不需要任何定序状态机以便实施此方法。此方法也允许在此能力转移程序进行的同时排程其它指令。进一步地,通过以上文所讨论的方式布置指令中的每一者以对不同能力进行操作,任何个别指令可针对各节拍予以布置以仅在向量寄存器的相同区段内操作。如先前所讨论,仅在给定区段内操作允许在不同区段上操作的指令的重叠。
在一个示例实施方案中,所述存储器是由多个存储器库组成,并且针对各向量能力存储器转移指令定义存取模式,以在由停滞处理电路系统执行所述向量能力存储器转移指令时致使所述存储器库中的多于一个存储器库被存取。成库的存储器使硬件更容易实施往返存储器的平行转移,并且因此指定实现此情况的存取模式是有利的。
除了上述的向量能力存储器转移指令以外,可使用向量载入和存储指令以依需要且在需要时将数据元素从存储器载入到向量寄存器中,或者将那些数据元素从向量寄存器回存到存储器。
虽然用以保存数据元素的向量寄存器的数目和用以保存相关联能力的向量寄存器的数目可依据实施方案而变化,但在一个特定的示例实施方案中,从给定向量存储器存取指令的数据向量指示字段所确定的至少一个向量寄存器包括单个向量寄存器,能力的大小是数据元素的两倍(如先前所提及,当考虑能力大小时,用以指示能力是有效能力的任何旗标并未视为能力的部分),并且从至少一个能力向量指示字段所确定的多个向量寄存器包括两个向量寄存器。已发现,此布置提供特别有用的实施方案,用于使用导出自能力的存储器地址来执行向量集中和分散操作。
在一个示例实施方案中,所述给定向量存储器存取指令可进一步包括指示地址位移的立即值,并且所述处理电路系统可经布置以针对所述多个数据元素中的各给定数据元素,通过组合所述地址位移与由所述相关联能力所提供的所述地址指示来确定所述给定数据元素的所述存储器地址。此可提供有效率的实施方案,用于从不同能力中所提供的地址指示来计算存储器地址。
在一个示例实施方案中,所述给定向量存储器存取指令可进一步包括指示地址位移的立即值,并且针对各给定数据元素,所述处理电路系统可经布置以通过依据所述地址位移调整所述地址指示来更新所述多个向量寄存器中的所述相关联能力的所述地址指示。因此,举例来说,一旦在第一向量存储器存取指令的执行期间已使用特定能力中的地址指示,如向量寄存器中存储的能力内所指示的地址指示可以上述方式更新,以准备好联合后续的向量存储器存取指令使用。
在一些情况下,可执行上述调整程序的两者,使得地址位移与能力所提供的地址指示组合(例如,相加到其)以识别要存取的存储器地址,并且所述相同的更新地址经写回到能力寄存器作为更新的地址指示。一般来说,相同的立即值将用于调整程序两者,但如果需要,不同的立即值可用于各调整程序。
现将参照附图讨论特定的示例实施方案。
图1示意地示出支持向量指令的处理的数据处理设备2的示例。将理解,此为易于解释的简化图,并且实际上,设备可具有图1中为了简洁而未图示的许多元件。设备2包括用于响应于由指令解码器6解码的指令而实行数据处理的处理电路系统4。程序指令经提取自存储器系统8并由指令解码器予以解码以产生控制信号,所述控制信号控制处理电路系统4以按架构所定义的方式处理指令。例如,解码器6可解译经解码指令的运算码和指令的任何额外控制字段以产生控制信号,所述控制信号致使处理电路系统4启动适当的硬件单元以执行操作(例如算术运算、载入/存储操作、或逻辑运算)。设备具有一组纯量寄存器10和一组向量寄存器12,还可具有其它寄存器(未图示),例如用于存储用以配置处理电路系统的操作的控制信息。响应于算术或逻辑指令,处理电路系统一般从寄存器10、12读取源运算元,并且将指令结果写回到寄存器10、12。响应于载入/存储指令,经由处理电路系统4内的载入/存储单元18在寄存器10、12与存储器系统8之间转移数据值。存储器系统8可包括一个或多个快取层级和主存储器。
纯量寄存器组10包括若干纯量寄存器,所述纯量寄存器用于存储包括单个数据元素的纯量值。指令解码器6和处理电路系统4所支持的一些指令可为纯量指令,所述纯量指令处理读取自纯量寄存器10的纯量运算元以产生写回到纯量寄存器的纯量结果。
所述组向量寄存器12包括若干向量寄存器,所述向量寄存器各自经布置以存储包括多个元素的向量值。响应于向量指令,指令解码器6可控制处理电路系统4,以对读取自向量寄存器12中的一个向量寄存器的向量运算元的相应元素执行若干向量处理通道,以产生要写入到纯量寄存器10的纯量结果或要写入到向量寄存器12的进一步的向量结果。一些向量指令可从一个或多个纯量运算元产生向量结果,或者可对纯量寄存器文件中的纯量运算元执行额外纯量运算,以及对读取自向量寄存器文件12的向量运算元执行向量处理通道。因此,一些指令可为混合的纯量-向量指令,对于所述指令,指令的一个或多个来源寄存器和目的地寄存器中的至少一者是向量寄存器12,并且所述一个或多个来源寄存器和所述目的地寄存器中的另一者是纯量寄存器10。
向量指令也可包括致使在向量寄存器12与存储器系统8中的位置之间转移数据值的向量载入/存储指令。载入/存储指令可包括相连的载入/存储指令,对于所述指令,存储器中的位置对应于相连的地址范围;或包括集中/分散类型向量载入/存储指令,所述指令指定若干离散地址并控制处理电路系统4,以从那些地址中的每一者将数据载入向量寄存器的相应元件中,或将数据从向量寄存器的相应元件存储到离散地址。
处理电路系统4可支持具有一系列不同数据元素大小的向量的处理。例如,128位向量寄存器12可分割为十六个8位数据元素、八个16位数据元素、四个32位数据元素、或两个64位数据元素。控制寄存器可用以指定当前所用的数据元素大小,或者替代地,此可为要执行的给定向量指令的参数。
处理电路系统4可包括用于处理不同级别指令的若干相异硬件块。例如,与存储器系统8互动的载入/存储指令可由专用的载入/存储单元18处理,而算术或逻辑指令可由算术逻辑单元(ALU)处理。ALU本身可进一步分割为乘法累加单元(MAC)和进一步的单元,所述乘法累加单元用于执行涉和乘法的运算,所述进一步的单元用于处理其它种类的ALU运算。也可提供浮点单元,所述浮点单元用于处置浮点指令。与向量指令相比,不涉及任何向量处理的纯粹的纯量指令也可由分开的硬件块处置,或重复使用相同的硬件块。
如先前所讨论,可支持的向量载入/存储指令的一种类型是向量集中/分散指令。此向量指令可指示存储器中的若干离散地址,并且控制处理电路系统4从那些离散地址将数据载入到向量寄存器的相应元件中(在向量集中指令的情况下),或者将数据从向量寄存器的相应元件存储到离散地址(在向量分散指令的情况下)。根据本文所述的技术,提供能够指定要用以确定不同存储器地址的能力向量的新形式向量集中/分散指令,而非将标准地址指示的向量用以识别各种存储器地址。此可对用以实施向量集中/分散操作的个别存储器存取操作的性能提供更精细的控制,因为分开的能力可经定义用于与那些个别的存储器存取操作中的每一者联合使用。除了提供地址指示以外,各能力一般将包括用以限制可在使用所述能力时执行的操作的约束信息。例如,约束信息可识别在使用由能力所提供的地址指示时可由处理电路系统存取的存储器地址的非可扩充范围,并且也可提供识别相关联权限的一个或多个权限旗标(例如,是否允许读取存取、是否允许写入存取、是否允许来自指定特权或安全层级的存取、是否可使用能力以产生要提取和执行的指令的存储器地址等)。
当执行此新形式的向量集中/分散指令时,要在存储器与向量寄存器之间移动(移动方向取决于所执行的是向量集中操作或向量分散操作)的各数据元素将具有相关联的能力,并且处理电路系统4内的能力存取检查电路系统16可用以针对各数据元素执行能力检查,以就相关联能力所指定的约束信息而确定是否允许要用以存取所述给定数据元素的存储器存取操作。因此,此可涉及检查下列两者:存储器地址是否鉴于能力中的任何范围的约束信息而是可存取的;以及存取类型是否鉴于能力中的约束信息而被允许。将参照若干剩余附图更详细地讨论关于执行此向量集中/分散指令时所需的多个能力如何布置在一系列向量寄存器内的更多细节。
如图1所示,如果需要,可提供节拍控制电路系统20以控制指令解码器6和处理电路系统4的操作。具体地,在一些示例实施方案中,向量指令的执行可划分成称为“节拍”的部分,其中各节拍对应于具有预定大小的向量的一部分的处理。如稍后将参照图10和图11更详细地讨论,此可允许向量指令的重叠执行,从而改善性能。
图2示意地示出标签位可如何与个别数据块联合使用,以识别那些数据块是表示能力或表示正常数据。具体地,存储器地址空间110将存储一般将具有指定大小的一系列数据块115。纯粹为了说明目的,假设在此示例中,各数据块包括64个位,但在其它示例实施方案中,可使用不同大小的数据块(例如,当由128位的信息定义能力时,可使用128个位数据块)。与各数据块115相关联,提供标签字段120,在一个示例中,所述标签字段是称为标签位的单个位字段,所述位字段经设定为识别相关联的数据块表示能力,并且经清除以指示所述相关联的数据块表示正常数据,并且因此无法视为能力。将理解,与设定或清除状态相关联的实际值可依据示例实施方案而变化,但纯粹为了说明,在一个示例实施方案中,如果标签位具有1值,则指示相关联的数据块是能力,并且如果所述标签位具有0值,则指示相关联的数据块含有正常数据。在一个示例实施方案中,标签位可不形成一般存储器地址空间的部分,并且取而代之地可“带外(out-of-band)”地存储在例如相异的标签存储器中。
当能力经载入处理电路系统可存取的寄存器100中时,则标签位随能力信息移动。因此,当能力经载入寄存器100中时,地址指示102(其在本文中也可称为指标)和提供约束信息(例如先前提及的范围信息和权限信息)的元数据104将载入寄存器中。此外,联合所述寄存器或作为其内的特定位字段,标签位106将经设定为识别内容表示有效能力。类似地,当有效能力经往外回存到存储器时,相关的标签位120将联合在其中存储能力的数据块而设定。通过此方法,可区别能力与正常数据,并且因此确保正常数据无法用作为能力。
设备可具备用于存储能力的专用能力寄存器(图1中未图示),并且因此图2中的寄存器100可为专用的能力寄存器。然而,为了执行上文提及的新形式的向量集中/分散指令的目的,需要将所需能力放在所述组向量寄存器12内的若干寄存器内。为了实现存储在向量寄存器内的有效能力与正常数据的区分,所述组向量寄存器通过提供相关联的有效能力指示存储装置来增补,并且在图3A和图3B中示意地展示可实施此的两个不同方式。在图3A所示的示例中,一组向量寄存器130包括多个向量寄存器135,其中各向量寄存器具有足以提供若干能力大小块137的大小。纯粹举例来说,当能力的长度是64个位时,各能力大小块137可为64个位,并且各向量寄存器的长度可为2N乘以64个位,其中N是0或更大的整数。
在图3A的特定示例中,假设各向量寄存器的长度是128个位,并且因此各向量寄存器具有两个能力大小块137。联合所述组向量寄存器提供有效能力指示存储装置140,有效能力指示存储装置140具有用于各向量寄存器135的项目145。各项目145为相关联向量寄存器135中的各能力大小块137提供有效能力指示字段。有效能力指示字段可采取各种形式,但在一个示例实施方案中,可为单个位字段,并且因此在一个示例中,可采取先前所述的标签位的形式。在此类情况下,将理解,各项目145为相关联向量寄存器135中的各能力大小块137提供标签位,以识别能力大小块是否存储有效能力。
虽然在图3A的示例中,将有效能力指示存储装置140视为与所述组向量寄存器130分开的结构,在一替代实施方案中,有效能力指示存储装置可通过增加向量寄存器的大小以容纳必要的标签位而有效地并入所述组向量寄存器内。如图3B所示的此布置,其中所述组向量寄存器150包括若干能力大小块160、164,所述能力大小块中的每一者具有相关联的有效能力指示字段162、166以存储相关联的标签位。应注意,在此布置中,不认为能力的大小改变,并且因此在先前所提及的示例中,各能力的长度仍是64个位。然而,向量寄存器经扩充以为相关联的标签位提供空间。因此,考虑图3B的示例,其中再次认为两个能力可存储在各向量寄存器内,并且假设各能力的长度是64个位,能够存储能力的任何向量寄存器的长度可经布置为130个位,以实现能力和它们的相关联标签位两者的存储。虽然在此示例中,标签位是向量寄存器155的部分,但仍可如先前所述般紧密地控制标签位的存取,使得通用处理指令不可直接存取标签位,并且使用非能力指令使向量寄存器中的值变动导致标签清除。
应注意,虽然在图3A和图3B的示例中,假设向量寄存器的全部均能够存储能力,但在替代实施方案中,可保留组中的向量寄存器的子集以用于存储能力,并且在此类情况下,仅所述向量寄存器子集必须具备相关联的有效能力指示存储装置,无论作为离散存储装置(按照图3A的示例)或并入向量寄存器结构本身内(按照图3B的示例)。
图4A和图4B是示出根据一个示例实施方案的可如何管理联合向量寄存器的各能力大小块维持的标签位的流程图。图4A示出一些步骤,所述步骤经执行以决定针对相关联的标签位采取何种动作,所述相关联的标签位是针对经写入的向量寄存器内的能力大小块维持。具体地,如果在步骤170处,确定对向量寄存器执行写入操作,则图4A的程序的剩余部分是针对经写入的所述向量寄存器内的各能力大小块执行。
在步骤172处,确定就向量寄存器的给定能力大小部分写入的数据是否具有完整的能力块大小。如果否,则在标签位先前经设定的情况下将其清除,并且相应地,程序继续进行到步骤174,其中标签位经清除。此方法防止能力的非法修改。例如,如果尝试修改向量寄存器内所存储的有效能力的一定数目个位,则上述程序将致使标签位经清除,防止将现经存储在向量寄存器中的修改版本用作为能力。
然而,假设信息的完整的能力大小块经写入到向量寄存器的给定能力大小部分中,则在步骤176处确定有效能力是否被写入。如果否,则程序再次继续进行到步骤174,其中标签位经清除。然而,如果有效能力被写入,则程序继续进行到步骤178,其中标签位经设定。
应注意,不仅在写入到向量寄存器的指令的执行期间可清除与向量寄存器内的能力大小块相关联的标签位。具体地,如图4B所指示,在步骤180处可确定是否已采取任何步骤以致使向量寄存器的能力大小块中所存储的能力不再有效。在未检测到此条件的情况下,则如步骤185所指示,不更新相关联的标签位,但每当检测到所述条件时,则在步骤190,相关联的标签位经清除。
图5A示意地示出根据一个示例实施方案的可在向量存储器存取指令200(本文也称为向量集中或向量分散指令)内提供的字段。运算码字段205是用以识别向量存储器存取指令的形式,并且因此在此情况下可用以识别是否指定集中变体或分散变体,并且用以识别指令是使用能力以确定要存取的存储器地址的先前所述类型。
数据向量指示字段210用以识别至少一个向量寄存器,所述向量寄存器要与将通过指令执行而在所述组向量寄存器与存储器之间移动的数据元素相关联。在一个示例实施方案中,通过数据向量指示字段210识别单个向量寄存器。将理解,此所识别向量寄存器将在执行向量分散操作时充当来源向量寄存器,或者将在执行向量集中操作时充当目的地向量寄存器。
也可提供至少一个能力向量指示字段215,所述至少一个能力向量指示字段的内容用以识别多个向量寄存器,所述多个向量寄存器存储确定要经受向量分散或向量集中操作的数据元素中的每一者的存储器地址所需的能力。虽然在一个实施方案中,可提供多个能力向量指示字段(例如,一个字段用于含有所需能力的向量寄存器中的每一者),但在另一示例实施方案中,单个能力向量指示字段用以提供充分信息以确定存储能力的向量寄存器中的一个向量寄存器,其中接着基于一些预定关系来确定其它向量寄存器。从指令编码的观点看来,此后一种方法可为有利的。预定关系可采取各种形式。例如,向量寄存器可彼此循序,可形成偶数/奇数对,或者已知的位移可存在于不同的向量寄存器之间。
如图5A所示,指令200也可包括一个或多个任选字段220以检索额外信息。例如,指示地址位移的立即值可经指定,所述立即值可以各种方式使用。例如,地址位移可与各能力中的地址指示组合(例如,相加到其),以识别要存取的存储器地址。作为另一示例,地址位移可用以更新各能力中的地址指示(例如,再次通过组合地址位移与现有地址指示),使得向量寄存器中经更新的能力接着准备好与后续的向量存储器存取指令联结地使用。实际上,在一个示例实施方案中,可执行上述地址指示调整程序两者,并且相同的立即值一般将用于调整程序两者。
作为可在一个或多个字段220内提供的任选信息的另一示例,可提供信息以指定要在指令执行期间存取的数据元素的数据元素大小和/或能力大小。在一些实施方案中,此信息可为不必要的,因为能力大小可为固定的,而且情况可为仅允许本文所述类型的向量存储器存取指令对具有特定大小的数据元素执行,并且因此在所述示例情况下,数据元素大小和能力大小两者已知,而不需由指令分开指定。
应注意,虽然在图5A中,形成各字段的不同位展示为相连,但此纯粹为了说明目的,并且确切地,指令内的哪些位与哪些字段相关联将取决于实施方案而变化。纯粹举例来说,如果向量寄存器识别符字段的宽度是四个位,可将三个位一起组成群组,但在指令编码内的别处提供第四个位。
图5B是示出执行向量存储器存取指令(例如图5A所示)时所执行的步骤的流程图。在步骤230,确定是否要执行向量存储器存取指令,并且如果如此,则程序继续进行到步骤235,其中从数据向量指示字段中的信息确定与数据元素相关联的向量寄存器。
在步骤240,也使用至少一个能力向量指示字段中的信息确定含有所需能力的多个向量寄存器。如先前所讨论,可提供多个能力向量指示字段,所述多个能力向量指示字段中的每一者例如识别向量寄存器中的一个向量寄存器,或替代地,可提供单个能力向量指示字段,以实现向量寄存器中的一个向量寄存器的确定,其中接着就已知关系来确定其它的向量寄存器。
在步骤245,对于向量存储器存取指令与其相关的各给定数据元素,基于由相关联能力所提供的地址指示而针对所述给定数据元素来确定存储器地址。此外,基于相关联能力的约束信息确定是否允许要用以存取所述给定数据元素的存储器存取操作。此不仅可涉及确定存储器地址是否在相关联能力中的范围约束信息所指定的允许范围内,并且也可涉及确定是否符合相关联能力的元数据所指定的任何其它条件约束(例如,在向量分散操作被执行的情况中,是否允许使用相关联能力的写入存取,并且因此针对给定数据元素执行的个别的存储器存取操作是写入操作)。
在步骤250,可针对已确定为允许存储器存取操作的各数据元素而实现存储器存取操作的执行。虽然在一个示例实施方案中,存储器存取操作可针对允许那些存储器存取操作的各数据元素执行,但在其它实施方案中,可决定在不允许存储器存取操作中的另一存储器存取操作的情况下抑制一个或多个经允许的存储器存取操作的执行。如先前所提及,确切地,在此情况下哪些允许的存取被抑制可取决于实施方案,以及不允许其相关联的存取的数据元素在数据元素的向量中的所在之处。
图6A是示出在提供单个能力向量指示字段的实施方案中可用以确定保存所需能力的多个向量寄存器的技术的流程图。在步骤300,从所述单个能力向量指示字段中的信息确定保存所需能力的一个向量寄存器。接着,在步骤310处,从步骤300处所识别的向量寄存器和已知的经确定关系确定保存所需能力的各其它向量寄存器。所述经确定关系可为隐含的,或者替代地可在能力向量指示字段内(或者实际上在指令的另一字段内)指定。
图6B示出可用于计算保存所需能力的不同向量寄存器的特定示例实施方案。在步骤320,确定含有所需能力的向量寄存器的数目,在此示例实施方案中,有2N个此类向量寄存器。在一些实施方案中,例如,由于给定向量存储器存取指令仅针对与具有特定固定大小的数据元素并用而获支持,因此保存能力所需的向量寄存器的数目将是固定的,并且其中能力也具有固定大小。然而,替代地,向量寄存器的数目可例如由指令解码器在执行阶段基于由指令所指定的数据元素大小和能力大小信息予以确定。
在步骤330,第一向量寄存器编号是从能力向量指示字段中所提供的信息确定,但在此实施方案中,所述向量寄存器编号的最低有效N个位经约束为逻辑零值。在此实施方案中,将理解,能力向量指示字段不需要指定那些位,因为其可硬连线到0。
在步骤340,通过操纵第一经确定向量寄存器编号的N个最低有效位来确定用于含有所需能力的多个向量寄存器的各其它向量寄存器编号。此为指定含有所需能力的多个向量寄存器提供特别简单且有效率的机制。
图7示出如何可将所述组向量寄存器350视为由多个逻辑区段360、365组成。各向量寄存器355在区段中的每一者内具有部分357、359。虽然在图7中展示两个区段,在其它实施方案中,可提供多于两个区段。在一些实施方案中,向量寄存器的每一部分357、359仅将提供单个能力,而在其它实施方案中,寄存器的各部分可足够大以保存多个能力。通过此方法,此可允许将向量指令(包括给定向量存储器存取指令)的执行划分成多个“节拍”,并且在各节拍期间仅存取所述组向量寄存器的一个区段以便执行向量指令。通过允许向量指令划分成多个节拍,此可允许向量指令的执行与一个或多个其它向量指令的执行重叠,从而可导致高度有效率的实施方案。例如,给定向量存储器存取指令可与向量算术指令重叠。具体地,在一个示例实施方案中,于任何特定节拍期间执行存储器存取操作所需的数据元素和能力可全部得自所述组向量寄存器的单个区段,并且此接着使任何其它区段在重叠指令的执行期间可供存取。稍后将参考图10和图11更详细地讨论基于节拍的实施方案的更多细节。
图8A至图8C示出数据元素和相关联能力的不同特定示例布置,所述布置可在执行本文所述的集中或分散操作时使用。如图8A所标注,术语“CX”识别用以确定用于对应的数据值“DX”的存储器地址的能力。图8A所示的向量寄存器400是与执行向量存储器存取指令期间所存取的数据元素相关联的向量寄存器。在此示例实施方案中,假设向量寄存器400的宽度是128个位,并且各数据元素的宽度是32个位,并且结果是四个数据元素与向量寄存器400相关联。各数据元素可视为与向量寄存器400的对应的数据通道相关联,并且如图8A所示,数据通道可因此采取0至3的值。
在图8A至图8C所示的示例中,能力宽度是64个位,并且因此图8A的示例中的各向量寄存器405、410可存储两个能力(为了在图8A至图8C中示出的目的,省略经提供以保存先前讨论的标签值的任何额外位)。特定向量寄存器内的各能力可视为占用相关联的能力通道,并且因此在图8A的示例中有两个能力通道,所述能力通道称为通道0和1。如图8A所示,能力C0占用第一能力寄存器QN 405内的能力通道0,能力C1占用第二能力寄存器QN+1 410内的能力通道0,能力C2占用第一能力寄存器QN 405内的能力通道1,并且能力C3占用第二能力寄存器QN+1 410内的能力通道1。因此,可认识到,对于与向量寄存器400中的相邻位置相关联的任何给定数据元素对,通过此布置将相关联的能力存储在多个向量寄存器405、410中的不同的向量寄存器中。
已发现此布置是高度有利的,因为其意指联合特定数据元素序列所需的能力全部可在向量寄存器的相同部分357、359内找到。具体地,在图8A所示的示例中,数据元素D0和D1以及识别那些数据元素的存储器地址所需的能力C0和C1全部可在相关向量寄存器的下半部中找到,并且类似地,数据元素D2和D3以及识别那些数据元素的存储器地址所需的能力C2和C3全部可在相关向量寄存器的上半部中找到。此可例如支持如先前所提及的向量存储器存取指令的节拍式执行。
虽然在图8A中,数据值是32位,此并非必要条件,并且图8B展示数据元素宽度是16个位的替代示例。因此,128位宽的向量寄存器415可与八个数据元素相关联,并且需要四个向量寄存器QN到QN+3 420、425、430、435来保存相关联能力。再次,能力以相似于图8A的方式布局,其中前四个能力存储在向量寄存器420、425、430、435的下半部内,并且后四个能力存储在那些向量寄存器的上半部内。
将向量寄存器视为128位寄存器也非必要条件,并且在图8C的示例中,寄存器中的每一者的宽度是256个位。在此特定示例中,数据元素的宽度是32个位,并且能力维持与其它示例相同(即,宽度64位)。在此示例中,可见到,因此有八个数据元素与向量寄存器440相关联,并且两个向量寄存器445、450是用以存储八个能力,其中各寄存器内放置四个能力。能力经布置使得其以递增顺序存储在能力通道0、能力通道1、能力通道2和能力通道3中,因此遵循先前参照图8A和图8B的其它两个示例所讨论的一般模式。
当执行先前所述的向量存储器存取指令的节拍式执行时,则在一个示例实施方案中,向量寄存器的各区段可经布置以存储一个或多个能力。因此,鉴于图8A或图8B的示例,向量寄存器可视为由两个区段组成,允许在第一节拍中处理所需存取操作的一半并在第二节拍中处理剩余的一半。类似地,鉴于图8C,所述组向量寄存器可视为由两个或四个区段组成,分别允许在两个或四个节拍期间执行所需的存取操作。然而,应注意,向量寄存器的各逻辑区段足够宽以容纳至少一个能力不一定是必要条件。例如,在一些实施方案中,可具有的区段大小小于能力大小(例如,32位区段大小与64位能力)。
图9是示出当使用图8A至图8C所示意示出的能力布局时,可如何确定各数据元素的相关联能力的流程图。在步骤450处,参数M经设定为等于能力通道的数目,并且参数P经设定为等于保存能力的向量寄存器的数目。在步骤455处,将向量寄存器视为由0至P-1的序列值识别,并且将能力通道视为由0至M-1的序列值识别。在步骤460处,参数X经设定为0,并且接着在步骤465处,对于通道X中的数据元素,执行计算X/P。
在步骤470处,得自上述计算的商数和余数是分别用以识别能力通道和含有相关联能力的向量寄存器。在步骤475处,确定数据通道X是否是最后一个数据通道,并且如果否,则在返回步骤465之前于步骤480处将X的值增量。一旦在步骤475处确定数据通道X是最后一个数据通道,接着程序结束于步骤485处。
在一些应用(例如数字信号处理(DSP))中,可有数目大略相等的ALU和载入/存储指令,并且因此一些大块(例如MAC)可保持闲置持续显著时间量。此无效率在向量架构上可恶化,因为执行资源是随向量通道的数目扩缩以实现较高性能。在较小处理器(例如单个周期/指令发送(single issue)、循序(in-order)的核心)上,完全横向扩展的向量管线的面积附加负担可为禁止的。一种最小化面积冲击同时更好地使用可用执行资源的方法是使指令执行重叠,如图10所示。在此示例中,三个向量指令包括载入指令VLDR、乘法指令VMUL和移位指令VSHR,并且即使所有这些指令之间存在数据相依性,所述指令仍可同时执行。这是因为VMUL的元件1仅相依于Q1的元件1,而非Q1寄存器的整体,因此执行VMUL可在完成执行VLDR之前开始。通过允许指令重叠,昂贵的块(如乘法器)可有更多时间保持作用中。
因此,可能需要实现微架构实施方案以使向量指令的执行重叠。然而,如果架构假设有固定量的指令重叠,则虽然此在微架构实施方案实际上匹配架构所假设的重叠指令量时可提供高效率,如果扩缩到使用不同重叠或完全不重叠的不同微架构则会导致问题。
替代地,架构可支持如图11的示例所示的一系列不同重叠。向量指令的执行是划分成称为“节拍”的部分,其中各节拍对应于具有预定大小的一部分向量的处理。节拍是向量指令的不可部分完成部分,所述部分被完全执行或完全不执行,而无法部分地执行。一个节拍中所处理的向量部分的大小是由架构所定义,并且可为向量的任意分额。在图11的示例中,节拍经定义为处理对应于向量的四分之一宽度,使得每一向量指令有四个节拍。清楚地,此仅为一个示例,并且其它架构可使用不同的节拍数(例如,二或八)。对应于一个节拍的向量部分的大小可为相同于、大于、或小于经处理的向量的数据元素大小。因此,即使元素大小在不同实施方案之间或在不同指令之间的执行阶段有所变化,节拍是所处理的向量的某一固定宽度。如果一个节拍中所处理的向量部分包括多个数据元素,则在相应元素之间的边界处可停用进位信号以确保独立地处理各元素。如果一个节拍中所处理的向量部分对应于元素的仅一部分,并且硬件不足以平行地计算若干节拍,则一个处理节拍期间所产生的进位输出可作为进位输入而输入到接续的处理节拍,使得两个节拍的结果共同形成数据元素。
如图11所示,处理电路4的不同的微架构实施方案在抽象架构时钟的一个“滴答(tick)”中可执行不同的节拍数。此处,“滴答”对应于架构状态前进的单位(例如,在简单架构上,各滴答可对应于更新所有与执行指令相关联的架构状态的情况,包括更新程序计数器以指向下一指令)。所属领域的技术人员将理解,已知的微架构技术(例如管道化)可意指单个滴答可需要多个时钟循环以在硬件层级下执行,并且实际上硬件层级下的单个时钟循环可处理多个指令的多个部分。然而,此类微架构技术对软件并不可见,因为滴答在架构层级下是不可部分完成的。为简明起见,此类为架构在本公开的进一步描述期间予以忽略。
如图11的下部示例所示,一些实施方案可通过提供用于在一个滴答内平行地处理所有节拍的充分的硬件资源而将向量指令的全部四个节拍排程在相同滴答中。此可适于较高性能的实施方案。在此情况下,架构层级下不需要指令之间的任何重叠,因为整个指令可在一个滴答中完成。
另一方面,更具面积效率的实施方案可提供每一滴答仅可处理两个节拍的较窄的处理单元,并且如图11的中间示例所示,指令执行可与与第一指令的第三或第四节拍平行实行的第二向量指令的第一和第二节拍重叠,其中那些指令是在处理电路系统内于不同执行单元上执行(例如,在图11中,第一指令是使用载入/存储单元18执行的载入指令(且可例如是本文所述类型的向量集中指令),并且第二指令是使用处理电路系统4内所提供的MAC单元执行的乘法累加指令)。
又有更具能量/面积效率的实施方案可提供较窄的硬件单元,并且一次仅可处理单个节拍,并且在此情况下,每一滴答可处理一个节拍,其中指令执行如图11的顶部示例所示般重叠并交错两个节拍。在一个示例实施方案中,区段大小可用以影响指令之间的交错量(因为当执行特定节拍时,需要从相同区段得到数据的全部)。在图11所示出的顶部示例中,例如,情况可为节拍大小是32个位,但区段大小是64个位,并且因此其是指令交错两个节拍的原因。
将理解,图11所示的重叠仅是一些示例,并且其它实施方案也是可行的。例如,处理电路系统4的一些实施方案可支持多个指令在相同滴答中平行地双发,使得有较大的指令流通量。在此情况下,在一个循环中共同开始的两个或更多个向量指令可具有与在下一循环中开始的两个或更多个向量指令重叠的一些节拍。
除了在实施方案之间变化重叠量以扩缩到不同的性能点以外,向量指令之间的重叠量也可在程序内的向量指令的不同执行情况之间的执行阶段改变。因此,处理电路系统4可具备如图1所示的节拍控制电路系统20,所述节拍控制电路系统用于控制相对于先前指令执行给定指令的时序。此给予微架构在某些更难以实施的边角情况下或依据指令可用的资源选择不重叠指令的自由度。例如,如果有需要相同资源的给定类型(例如,乘法累加)的背对背指令且所有可用的MAC或ALU资源均已由另一指令使用,则可没有足够的自由资源开始执行下一指令,并且因此,比起重叠,第二指令的发出可等待到完成第一指令为止。
图12是流程图,示出可如何使用向量能力存储器转移指令序列以在存储器与多个向量寄存器之间移动一系列能力,同时执行必要的重布置以确保那些能力均以经由参照图8A至图8C的先前示例的说明而示出的形式的布置存储在向量寄存器内。
在步骤490,向量能力存储器转移指令序列经解码,其中各此类指令定义相关联的存取模式,并且识别先前所述的向量集中/分散指令的任何特定情况所需的能力子集。在一个示例实施方案中,各个别向量能力存储器转移指令识别对序列中的各其它向量能力存储器转移指令不同的能力子集。
在步骤492,接着在存储器与所识别向量寄存器之间移动能力,同时执行由各向量能力存储器转移指令的存取模式所定义的解交错(在执行载入操作的情况中)或交错(在执行存储操作的情况中)。结果,多个能力可经布置以循序地存储在存储器中,同时在多个向量寄存器中,多个能力经解交错,使得经循序地存储在存储器中的任何给定能力对被存储在不同的向量寄存器中。
用以执行图12示出的步骤的多个向量能力存储器转移指令在程序顺序中不需直接彼此接续,并且因此不需一个接着一个地循序执行。一旦序列内的所有向量能力存储器转移指令均经执行,则将已执行随着能力在存储器与向量寄存器之间移动所需的能力重布置。
在一个示例实施方案中,存储器是由多个存储器库组成,并且针对各向量能力存储器转移指令定义存取模式,以在执行所述向量能力存储器转移指令时致使所述存储器库中的多于一个存储器库被存取。成库的存储器使硬件更容易实施往返存储器的平行转移,并且因此指定实现此情况的存取模式是有利的。此示意地示出于图13中,对于由两个存储器库496、498组成的存储器的示例,其中各存储器库的宽度是64个位。使用此存储器库配置,则当存储器存取逻辑494处理存储器地址时,可考虑地址的位三以确定存取哪一个库。具体地,如果地址的位3(即,第四个地址位,假设第一个地址位是位0)是逻辑0值,则存取存储器库496,而如果地址的位3是逻辑1值,则存取另一存储器库498。由于能力是64位能力,将理解,奇数能力将存储在一个库中,而偶数能力存储在另一个库中。
纯粹举例来说,鉴于图8A所示的能力布置,在存储器中经循序定位的能力C0至C3可使用下列的两个向量能力存储器转移指令载入能力寄存器405和410中:
VLDRC2_1:C0→Qn[63:0],C3→Q(n+1)[127:64]
VLDRC2_2:C1→Q(n+1)[63:0],C2→Qn[127:64]
参照图12,将理解,当执行那些指令中的每一者时,库496、498的两者均经存取,因为能力C0与能力C3将在不同库中,并且能力C1与能力C2将在不同库中。而且,由各指令转移的两个能力常驻在向量寄存器的不同的能力通道内,并且因此在一个示例实施方案中可同时写入向量寄存器中。
图14示出可用的模拟器实施方案。虽然先前所述的示例以用于操作支持所关注技术的特定处理硬件的设备和方法来实施本发明,但也可能根据本文所述的示例提供指令执行环境,所述指令执行环境是通过使用计算机程序实施。此类计算机程序常称为模拟器,因为其提供硬件架构的基于软件的实施方案。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转译器(包括动态二进制转译器)。一般来说,模拟器实施方案可在任选地执行主机操作系统510、支持模拟器程序505的主机处理器515上执行。在一些布置中,在硬件与所提供的指令执行环境和/或相同的主机处理器上提供的多个相异指令执行环境之间可有多层模拟。历史上,已需要强大的处理器来提供以合理速度执行的模拟器实施方案,但此种方法在某些情况下可为有正当理由的,例如当因为兼容性或再使用原因而需要运行另一处理器原生的码时。例如,模拟器实施方案可提供具有不为主机处理器硬件所支持的额外功能性的指令执行环境,或提供一般与不同的硬件架构相关联的指令执行环境。模拟的综述于“一些有效架构模拟技术(Some Efficient Architecture Simulation Techniques)”(Robert Bedichek,Winter 1990USENIX Conference,第53至63页)中给出。
在先前已参照特定硬件架构或特征描述实施的情况下,在模拟实施方案中,等效功能性可通过合适的软件架构或特征提供。例如,可在模拟实施方案中将特定电路系统提供作为计算机程序逻辑。类似地,存储器硬件(例如寄存器或快取)可在模拟实施方案中提供作为软件数据结构。而且,用以存取硬件设备2中的存储器8的物理地址空间可仿真为模拟的地址空间,所述地址空间通过模拟器505映射到主机操作系统510所用的虚拟地址空间上。在先前描述的示例中提及的硬件元件中的一者或多者存在于主机硬件(例如,主机处理器515)上的布置中,一些模拟实施方案可(在适当处)利用主机硬件。
模拟器程序505可存储在计算机可读存储介质(其可为非暂态介质)上,并且提供虚拟硬件接口(指令执行环境)给目标码500(其可包括应用程序、操作系统和超管理器),所述硬件接口与通过模拟器程序505模型化的硬件架构的硬件接口相同。因此,目标码500的程序指令可在指令执行环境内使用模拟器程序505执行,使得实际上不具有上文所讨论的设备2的硬件特征的主机计算机515可仿真那些特征。模拟器程序可包括:处理程序逻辑520,所述处理程序逻辑仿真处理电路系统4的行为;指令解码程序逻辑525,所述指令解码程序逻辑仿真指令解码器6的行为;和向量寄存器仿真程序逻辑522,所述向量寄存器仿真程序逻辑维持数据结构以仿真向量寄存器12。因此,本文所述的用于使用能力执行向量集中或分散操作的技术在图14的示例中可通过模拟器程序505以软件执行。
在本申请案中,用语“被配置为...”用以意指设备的元件具有能够实行所述经定义操作的配置。在此上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,所述设备可具有专用硬件,所述专用硬件提供经定义的操作,或者处理器或其它处理装置可经编程以执行所述功能。“被配置为”并不意味着设备元件需要以任何方式改变以提供所定义的操作。
虽然本文已参照附图详细地描述本发明的说明性示例,应了解本发明不限于所述精确示例,并且所属领域的技术人员可于其中实行各种变化、增添和修改,而不脱离如随附权利要求书所定义的本发明的范围。例如,可用独立项的特征在不脱离本发明的范围的情况下作出与附属项的特征的各种组合。

Claims (20)

1.一种设备,所述设备包括:
处理电路系统,所述处理电路系统执行向量处理操作;
一组向量寄存器;和
指令解码器,所述指令解码器解码向量指令以控制所述处理电路系统,以执行由所述向量指令指定的所述向量处理操作;
其中:
所述指令解码器响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;
所述指令解码器进一步经布置以控制所述处理电路系统,以:
针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及
针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
2.根据权利要求1所述的设备,所述设备进一步包括能力指示存储装置,所述能力指示存储装置提供与所述组向量寄存器的给定向量寄存器内的各能力大小块相关联的有效能力指示字段,其中各有效能力指示字段经布置以设定为指示所述相关联能力大小块何时存储有效能力,否则将其清除。
3.根据权利要求2所述的设备,其中所述能力指示存储装置并入到所述组向量寄存器内。
4.根据权利要求2或权利要求3所述的设备,其中所述处理电路系统经布置以仅允许将任何有效能力指示字段设定为指示响应于能够由所述设备执行的一组指令中的一个或多个特定指令的执行而在所述相关联的能力大小块中存储有效能力。
5.根据任一前述权利要求所述的设备,其中形成从所述至少一个能力向量指示字段所确定的所述多个向量寄存器中的向量寄存器的数目是二的幂次。
6.根据任一前述权利要求所述的设备,其中所述至少一个能力向量指示字段是经布置以识别一个向量寄存器的单个能力指示字段,并且所述指令解码器经布置以基于所确定的关系来确定所述多个向量寄存器中的剩余的向量寄存器。
7.根据权利要求6所述的设备,其中所述多个向量寄存器中的向量寄存器的数目是2N,所述单个能力向量指示字段指示识别所述一个向量寄存器的第一向量寄存器编号,其中所述第一向量寄存器编号经约束而使其的N个最低有效位处于逻辑零值,并且所述指令解码器经布置以通过重复使用所述第一向量寄存器编号和将所述N个最低有效位中的至少一个最低有效位选择性地设定为逻辑值一而针对所述剩余的向量寄存器中的每一者产生向量寄存器编号。
8.根据任一前述权利要求所述的设备,其中对于与所述至少一个向量寄存器中的相邻位置相关联的任何给定数据元素对,所述相关联的能力被存储在所述多个向量寄存器的不同的向量寄存器中。
9.根据任一前述权利要求所述的设备,其中:
从所述数据向量指示字段所确定的所述至少一个向量寄存器包括单个向量寄存器,并且各数据元素与所述单个向量寄存器的对应的数据通道相关联;
各能力位于所述多个向量寄存器中的所述向量寄存器中的一个向量寄存器内的能力通道内;并且
对于给定数据元素,含有所述相关联能力的所述向量寄存器是依据所述对应的数据通道的通道数目的给定数目个最低有效位来确定,并且含有所述相关联能力的所述能力通道是依据所述对应的数据通道的所述通道数目的剩余位来确定。
10.根据权利要求9所述的设备,其中:
含有所述多个能力的所述多个向量寄存器中的向量寄存器的数目是P,逻辑上视为具有0至P-1的值的序列,并且任何给定向量寄存器中的能力通道的数目是M,所述数目具有从0至M-1的值;
与所述给定数据元素相关联的所述数据通道是数据通道X,所述数据通道具有从0至X-1的值,并且所述多个向量寄存器内的所述相关联能力的位置是通过将X除以P以得出商数和余数来确定,其中所述商数识别含有所述相关联能力的所述能力通道,并且所述余数识别含有所述相关联能力的所述向量寄存器。
11.根据任一前述权利要求所述的设备,其中:
所述组向量寄存器经逻辑地分割成多个区段,其中各区段含有来自所述组向量寄存器中的所述向量寄存器中的每一者的对应部分;
所述多个能力位于所述多个向量寄存器内,使得对于各数据元素,所述相关联能力存储在与所述数据元素相同的区段内;并且
所述给定向量存储器存取指令的执行划分成多个节拍,并且在各节拍期间仅存取所述组向量寄存器的一个区段以执行所述给定向量存储器存取指令。
12.根据权利要求11所述的设备,其中所述处理电路系统经布置以在一个或多个节拍期间针对给定区段的下一区段内的所述数据元素执行所述存储器存取操作之前,在一个或多个节拍期间针对所述给定区段内的所述数据元素执行所述存储器存取操作。
13.根据任一前述权利要求所述的设备,其中:
所述指令解码器经布置以解码多个向量能力存储器转移指令,所述多个向量能力存储器转移指令共同致使所述指令解码器控制所述处理电路系统以在所述存储器与所述多个向量寄存器之间转移多个能力,以及在所述转移期间重布置所述多个能力使得在所述存储器中循序地存储所述多个能力,并且在所述多个向量寄存器中解交错所述多个能力,使得在所述存储器中经循序存储的所述多个能力内的任何给定能力对被存储在所述多个向量寄存器的不同向量寄存器中。
14.根据权利要求13所述的设备,其中各向量能力存储器转移指令经布置以识别对各其它向量能力存储器转移指令不同的能力,并且各向量能力存储器转移指令经布置以识别存取模式,所述存取模式致使所述处理电路系统在执行由所述存取模式指定的所述重布置的同时转移所述所识别能力。
15.根据权利要求14所述的设备,其中:
所述存储器是由多个存储器库组成;并且
针对各向量能力存储器转移指令定义所述存取模式,以便在由所述处理电路系统执行所述向量能力存储器转移指令时致使所述存储器库中的多于一个存储器库被存取。
16.根据任一前述权利要求所述的设备,其中:
从所述给定向量存储器存取指令的所述数据向量指示字段所确定的所述至少一个向量寄存器包括单个向量寄存器,所述能力的大小是所述数据元素的两倍,并且从所述至少一个能力向量指示字段所确定的所述多个向量寄存器包括两个向量寄存器。
17.根据任一前述权利要求所述的设备,其中所述给定向量存储器存取指令进一步包括指示地址位移的立即值,并且所述处理电路系统经布置以针对所述多个数据元素中的各给定数据元素,通过组合所述地址位移与由所述相关联能力所提供的所述地址指示来确定所述给定数据元素的所述存储器地址。
18.根据任一前述权利要求所述的设备,其中所述给定向量存储器存取指令进一步包括指示地址位移的立即值,并且针对各给定数据元素,所述处理电路系统经布置以通过依据所述地址位移调整所述地址指示来更新所述多个向量寄存器中的所述相关联能力的所述地址指示。
19.一种在设备内执行存储器存取操作的方法,所述设备提供执行向量处理操作的处理电路系统和一组向量寄存器,所述方法包括:
响应于指定多个存储器存取操作的给定向量存储器存取指令而利用指令解码器,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;
控制所述处理电路系统,以:
针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及
针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
20.一种用于控制主机数据处理设备以提供指令执行环境的计算机程序,所述计算机程序包括:
处理程序逻辑,所述处理程序逻辑执行向量处理操作;
向量寄存器仿真程序逻辑,所述向量寄存器仿真程序逻辑仿真一组向量寄存器;和
指令解码程序逻辑,所述指令解码程序逻辑解码向量指令以控制所述处理程序逻辑,以执行由所述向量指令指定的所述向量处理操作;
其中:
所述指令解码程序逻辑响应于指定多个存储器存取操作的给定向量存储器存取指令,其中各存储器存取操作是要执行以存取相关联数据元素、从所述给定向量存储器存取指令的数据向量指示字段确定与多个数据元素相关联的所述组向量寄存器中的至少一个向量寄存器以及从所述给定向量存储器存取指令的至少一个能力向量指示字段确定含有多个能力的所述组向量寄存器中的多个向量寄存器,各能力与所述多个数据元素中的所述数据元素中的一个数据元素相关联,并且提供地址指示和存取存储器时约束所述地址指示的使用的约束信息,其中从所述至少一个能力向量指示字段所确定的向量寄存器的数目大于从所述数据向量指示字段所确定的向量寄存器的数目;
所述指令解码程序逻辑进一步经布置以控制所述处理程序逻辑:
针对所述多个数据元素中的各给定数据元素,基于由所述相关联能力所提供的所述地址指示来确定存储器地址,并且针对所述相关联能力的所述约束信息,确定是否就所述所确定的存储器地址允许要用以存取所述给定数据元素的所述存储器存取操作;以及
针对所述存储器存取操作经允许的各数据元素,实现所述存储器存取操作的执行,其中针对任何给定数据元素执行所述存储器存取操作致使所述给定数据元素在所述存储器中的所述所确定的存储器地址与所述至少一个向量寄存器之间移动。
CN202280090725.7A 2022-02-07 2022-12-20 用于执行存储器存取操作的技术 Pending CN118647971A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2201544.0A GB2615352B (en) 2022-02-07 2022-02-07 Technique for performing memory access operations
GB2201544.0 2022-02-07
PCT/GB2022/053313 WO2023148467A1 (en) 2022-02-07 2022-12-20 Technique for performing memory access operations

Publications (1)

Publication Number Publication Date
CN118647971A true CN118647971A (zh) 2024-09-13

Family

ID=80461352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280090725.7A Pending CN118647971A (zh) 2022-02-07 2022-12-20 用于执行存储器存取操作的技术

Country Status (6)

Country Link
KR (1) KR20240140968A (zh)
CN (1) CN118647971A (zh)
GB (1) GB2615352B (zh)
IL (1) IL314155A (zh)
TW (1) TW202347121A (zh)
WO (1) WO2023148467A1 (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2520571B (en) * 2013-11-26 2020-12-16 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector processing

Also Published As

Publication number Publication date
WO2023148467A9 (en) 2024-08-08
GB2615352B (en) 2024-01-31
WO2023148467A1 (en) 2023-08-10
TW202347121A (zh) 2023-12-01
KR20240140968A (ko) 2024-09-24
IL314155A (en) 2024-09-01
GB2615352A (en) 2023-08-09

Similar Documents

Publication Publication Date Title
CN109643233B (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
IL256163A (en) A device and method for transferring multiple data structures between memory and multiple vector registers
CN108205448B (zh) 具有在每个维度上可选择的多维循环寻址的流引擎
US11307855B2 (en) Register-provided-opcode instruction
US20230385063A1 (en) Streaming engine with early exit from loop levels supporting early exit loops and irregular loops
JP7084882B2 (ja) 並べ替え動作を実行するための装置および方法
US9965275B2 (en) Element size increasing instruction
US20190324754A1 (en) Stream reference register with double vector and dual single vector operating modes
US20170277537A1 (en) Processing mixed-scalar-vector instructions
US20230289186A1 (en) Register addressing information for data transfer instruction
US11106465B2 (en) Vector add-with-carry instruction
JP2020502669A (ja) ベクトル生成命令
TW202403544A (zh) 向量擷取及合併指令
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
US11269649B2 (en) Resuming beats of processing of a suspended vector instruction based on beat status information indicating completed beats
CN118647971A (zh) 用于执行存储器存取操作的技术
JP2024503638A (ja) メモリコピーサイズ判定命令及びデータ転送命令
TW202403546A (zh) 用於可擴縮向量指令集架構的子向量支援指令
GB2617828A (en) Technique for handling data elements stored in an array storage
JP3532026B2 (ja) 演算装置
JPS63111532A (ja) マイクロプロセツサによる命令シミユレ−ト方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication