CN114586002A - 改变数据格式的交织数据转换 - Google Patents

改变数据格式的交织数据转换 Download PDF

Info

Publication number
CN114586002A
CN114586002A CN201980101482.0A CN201980101482A CN114586002A CN 114586002 A CN114586002 A CN 114586002A CN 201980101482 A CN201980101482 A CN 201980101482A CN 114586002 A CN114586002 A CN 114586002A
Authority
CN
China
Prior art keywords
data
format
interleaved
data format
bits
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
CN201980101482.0A
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN114586002A publication Critical patent/CN114586002A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

方法、系统和装置可提供识别要被存储在数据存储装置中的第一数据和第二数据的技术。第一数据和第二数据的每一者采取第一数据格式。一些技术还可将第一数据与第二数据交织。交织的第一和第二数据采取第二数据格式。第二数据格式与第一数据格式不同。

Description

改变数据格式的交织数据转换
技术领域
实施例概括而言涉及数据的交织,以高效地利用计算体系结构的各种特征。更具体而言,实施例涉及将两个或更多个数字交织在一起,以减小存储器带宽和时延,以及促进在硬件元件上的执行。
背景技术
某些工作负载(例如,深度学习工作负载和/或神经网络学习)中的许多计算周期可包括存储器带宽密集的操作。例如,数据可被存储在缓存中,然后在要基于数据执行数学运算(例如,矩阵乘法)时被加载到寄存器中。例如,深度学习工作负载和/或神经网络学习可以执行矩阵乘法来确定权重。对于计算和通信敏感的运算,例如矩阵乘法和卷积,存储器带宽都可能是一个重要因素。此外,这些运算的性能指标可能在很大程度上受到时延严重的指令的吞吐量(例如,每指令周期或CPI)的影响。
附图说明
通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点对于本领域技术人员而言将变得清楚,附图中:
图1A和1B图示了根据一实施例的交织、存储、加载和提取数据的过程的示例;
图2是根据一实施例的数据处理的方法的示例的流程图;
图3图示了根据一实施例的生成和访问交织数据结构的过程的示例;
图4是根据一实施例的基于预测使用模型来交织和存储数据的方法的示例的流程图;
图5是根据一实施例的开发前向使用模型的方法的示例的流程图;
图6是根据一实施例的触发交织过程的方法的示例的流程图;
图7是根据一实施例的应用编程接口;
图8是根据一实施例的计算系统的示例的框图;
图9是根据一实施例的半导体装置的示例的图示;
图10是根据一实施例的处理器的示例的框图;并且
图11是根据一实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
图1A和1B图示了交织存储、加载和提取第一和第二数据302、304的过程300。第一和第二数据302、304可以采取第一数据格式(例如,BFloat16或大脑浮点),这是第二数据格式(例如,32比特,Float32浮点)的截断(例如,16比特)版本。一些应用可以基于第一和第二数据302、304执行运算,以加速运算,例如深度学习和近传感器计算。虽然第一数据格式可能不像第二数据格式那样精确,但第一数据格式仍然可以允许在降低处理功率、提高速度和减小存储器带宽的情况下进行准确计算(例如,用于深度学习应用的训练和推理)。
取决于底层计算机体系结构,一些存储和加载格式可基于第二数据格式进行运算,从而导致底层计算机体系结构和优选第一数据格式的一些应用之间的数据格式不匹配。在一些情况下,可能会实现昂贵的软件转换,以应对数据格式不匹配的问题。这样做可能会减小存储器带宽,但会减慢计算启动,造成不利影响。如下所述,过程300在避免这种不利影响的同时缓解了这种不匹配,以减小存储器带宽并且缓解高时延的计算启动。
过程300可包括将第一和第二数据302、304交织,以将交织数据308存储在数据存储装置306(例如,缓存、存储器、例如固态驱动器之类的长期存储器,等等)中。也就是说,第一和第二数据302、304可以是交织的。在这样做时,可以实现一种用于存储的交织编码方案和解码方案(下文进一步说明),该方案减少或完全避免了不同数据格式(例如,第一和第二数据格式)之间的额外转换的惩罚,同时也减小了存储器带宽。从而,可以通过访问不同的数据格式来实现灵活性和敏捷性,而没有过多的惩罚和转换。
过程300可以通过交织第一和第二数据302、304以在应用处理中的计算不敏感点将交织数据308存储在数据存储装置306中,来进一步增强计算工作负荷。例如,假设第一和第二数据302、304是由应用生成和使用的。该应用可具有高计算工作负载的时段,这些时段可能导致有限的资源(例如,存储器带宽、处理器、加速器,等等)。过程300可以考虑可用资源的数量是否满足阈值。如果是,则过程300于是可以将第一和第二数据302、304交织,以将交织数据308存储在数据存储装置306中。
在一些实施例中,过程300可以进一步预测应用的操作是否将基于第一和第二数据302、304而执行。如果应用将在一定的时间范围内利用第一和第二数据302、304,则过程300可以将第一和第二数据302、304交织,以将交织数据308存储在数据存储装置306中。在一些实施例中,如果要在该时间范围内利用第一和第二数据302、304,则过程300可以交织第一和第二数据302、304,而不考虑可用资源。在这样做时,当应用利用第一和第二数据302、304以避免高时延计算启动时,可以避免资源密集的转换操作。
如图所示,第一数据302可包括比特302a-302h。第二数据304可包括比特304a-304h。虽然示出了一定数目的比特302a-302h和304a、304h,但将会理解,这个数目可以是不同的,而不更改本论述的范围。过程300可以将第一和第二数据302、304交织,以将第一和第二数据302、304存储在数据存储装置中。
从而,第一和第二数据302、304可被交织以生成交织数据308。交织数据308可采取与第一和第二数据302、304的第一数据格式不同的第二数据格式。也就是说,交织数据308可包括第一数据302的比特302a-302h,这些比特与第二数据304的比特304a、304h以连续和相邻的方式交替。从而,第一数据302的大小可以是交织数据308的大小的大约一半,并且第二数据304的大小可以是交织数据308的大小的大约一半。
第一数据302和第二数据304的对应比特位置(例如,零比特、第一比特,等等)可以被存储在彼此紧挨的位置。从而,第一数据302的比特302h(例如,比特位置零)可以被存储在第二数据304的比特304h(例如,比特位置零)旁边,等等依此类推,直到第一数据302的比特302a(例如,比特位置七)被存储在第二数据304的比特304a(例如,比特位置七)旁边。
交织数据308避免了存储第一数据302和第二数据304的较低效率的方法。例如,较低效率的方法可以将第一数据302和第二数据304分离成非连续和非交织的存储区域,并且用填充比特填充第一数据302和第二数据304的每一者,直到第一数据302和第二数据304各自处于第二数据格式为止。例如,在较低效率的方法中,第一数据302可以被填充(例如,以维持16比特)并且被存储在第一存储器区域中,并且第二数据304可以被填充(例如,以维持16比特)并且被存储在与第一存储器区域不重叠的第二存储器区域中。这样做会要求更多的存储器占用空间和至少两个高时延的操作来存储。相比之下,上述的交织和存储具有较小的存储器占用空间,并且可能只包括一次存储。
上述生成交织数据308的修改可以通过可接受的精度损失来将带宽减半。应当注意,交织数据308、第一数据302和/或第二数据304可包括一些填充比特(例如,默认值为零的比特),只要准确度范围在应用的可接受参数之内。
交织数据308可被存储在数据存储装置中。例如,交织数据308可被存储在缓存的连续且不间断的存储器区域中,以便每个比特302a-302h与一个或多个比特304a-304h相邻。从而,在交织数据308中,只有来自第一和第二数据302、304的比特302b-302h、304a-304g可以被布置在最高比特302a和最低比特304h之间。
在图1B中,过程300可以取回交织数据308以执行数学运算310、316。值得注意的是,在一些实施例中,取回交织数据308可以只包括从数据存储装置的一个加载操作。数学运算316可以基于第一和第二数据302、304而执行。
为了生成解码后的第二数据314,过程300可以将第一数据302的比特302a-302h视为噪声314a-314h和/或解码后的第二数据304的填充比特。也就是说,在对第二数据314进行解码和/或执行数学运算316时,比特302a-302h的内容可被视为噪声314a-314h。解码后的第二数据314可被存储在第一硬件寄存器中。如图所示,解码后的第二数据314包括第二数据304的所有比特304a-304h。
类似地,为了生成解码后的第一数据312,过程300可以将第二数据304的比特304a-304h视为噪声312a-312h和/或解码后的第一数据312的填充比特。也就是说,在生成解码后的第一数据312和/或执行数学运算316时,比特304a-304h的内容可被视为噪声312a-312h。解码后的第一数据312可被存储在第二硬件寄存器中。如图所示,解码后的第一数据312包括第一数据302的所有比特302a-302h。
从而,例如,对于解码后的第一数据312,来自第二数据304的比特304a-304h可被视为噪声312a-312h,而不简单地是相同填充值。例如,对于解码后的第一数据312,如果比特302a是解码后的第一数据312的起始值,则噪声可以是比特302a左侧的随机填充值和/或噪声值312a-312h中的一个或多个。在一些实施例中,这样做可以在某些过程(例如正规化)期间增强深度学习的准确性。鉴于有噪声的足够随机性,该过程应当产生比截断或用相同的某个值填充更好的准确性。
与之不同,一些设计可能在较低的填充比特中全都包括相同的值(例如,零),这对深度学习没有意义,并且可能会劣化深度学习,而且除了填充以外,也不对应于在这种过程中将会使用的数据。例如,对于小端模式系统(little endian system),无论解码后的数据如何,相邻的较低比特将被视为较高比特的噪声。全都具有相同的值可能会降低准确性。例如,将全零作为较低比特可能会导致截断,造成~2.4小数位之后的数字的丢失。
同样,对于解码后的第二数据314,在数学运算316的执行期间,第一数据302的比特302a-302h可被视为噪声314a-314h,以增强精度。
数学运算316可以接受解码后的第一数据312和解码后的第二数据314作为输入。然后,数学运算316可以执行以基于彼此修改解码后的第一和第二数据312、314,并且生成输出。例如,数学运算316可以是矩阵乘法运算,其接受解码后的第一数据312作为第一矩阵,解码后的第二数据314作为第二矩阵,并且将第一和第二矩阵彼此相乘以生成输出。
过程300可适用于各种数据类型和运算,例如标量和向量运算。过程300因此可以缓解诸如深度学习和/或高性能计算应用之类的某些应用的存储器带宽问题,同时减轻副作用。例如,应用有可能以第一数据格式高效地执行计算,而计算体系结构则利用第二数据格式。从而,这样做允许在当前和后续的硬件产品上都部署第一数据格式(例如,BFloat16),这些硬件产品在第二数据格式上操作和/或接受第二数据格式(例如,Float 32)的指令。
另外,对于计算和通信敏感的运算,例如矩阵乘法和卷积,存储器带宽可能是一个重要因素。更具体而言,这些运算的性能指标可能受到管线LOAD、融合乘加(fused-multiply and add,FMA)和STORE的吞吐量(CPI)的强烈影响。对于一些情况,应用可以利用第一数据格式(例如,BFloat16)作为存储类型,从而与更大的第二数据格式(例如,Float32)相比节省存储器带宽,但仍然使用第二数据格式来参与FMA计算。从而,从第一数据格式到第二数据格式的转换可能是必要的。上述过程300可以在计算上不敏感的点执行这样的转换,而不会招致过多的开销。
图2示出了一种可提供增强的数据处理的方法360。方法360一般可由计算设备100实现,并且可结合本文描述的任何实施例一起操作,例如已经论述过的过程300(图1)。在一实施例中,方法360被实现在作为存储在诸如随机访问存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可编程ROM(programmable ROM,PROM)、固件、闪存等等之类的机器或计算机可读存储介质中的逻辑指令集合的一个或多个模块中,实现在诸如可编程逻辑阵列(programmable logic array,PLA)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、复杂可编程逻辑器件(complex programmable logicdevice,CPLD)之类的可配置逻辑中,实现在利用诸如专用集成电路(applicationspecific integrated circuit,ASIC)、互补金属氧化物半导体(complementary metaloxide semiconductor,CMOS)或晶体管-晶体管逻辑(transistor-transistor logic,TTL)技术之类的电路技术的固定功能逻辑硬件中,或者实现在这些的组合中。
例如,可以以一种或多种编程语言的任何组合来编写用于执行方法360中所示出的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如JAVA、SMALLTALK、C++之类的,还包括传统的过程式编程语言,比如“C”编程语言或类似的编程语言。此外,逻辑指令可包括汇编指令、指令集体系结构(instruction set architecture,ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、个性化电子电路和/或硬件原生的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器,等等)的状态信息。
图示的处理块362识别要被存储在数据存储装置中的第一数据和第二数据。第一数据和第二数据的每一者采取第一数据格式。例如,第一数据格式可以是Bfloat16格式。图示的处理块364将第一数据与第二数据交织。交织的第一和第二数据采取第二数据格式。第二数据格式与第一数据格式不同。例如,第二数据格式可以是Float32。
图3图示了生成和访问交织数据结构416的过程400。可以根据图1A和1B的过程300和/或图2的方法360来生成交织数据结构416。过程400可与本文描述的任何实施例相结合。
在过程400中,第一数据结构402和第二数据结构404可采取第一数据格式(例如,BFloat 16)。过程400可以将数据406交织来将第一数据结构402和第二数据结构404交织,以生成交织的数据结构416,该交织数据结构416被存储在数据存储装置414中。数据存储装置414可以是缓存、存储器、固态驱动器、硬盘驱动器,等等。例如,为了将数据406交织,过程400可以执行以下第一伪代码:
Figure BDA0003603822540000071
Figure BDA0003603822540000081
第一伪代码“N”可以由硬件寄存器(例如,向量寄存器)的数目限制。上述第一伪代码的执行可以交替地将第一数据结构402的数据和第二数据结构404的数据存储在交织数据结构416中。例如,比特402a-402h可以是第一数据结构402的一部分,而比特404a-404h可以是第二数据结构404的一部分。
然后,过程400可以从交织数据结构414中提取数据408。例如,可以执行以下第二伪代码,以从交织数据结构416中提取数据408:
Figure BDA0003603822540000082
Figure BDA0003603822540000091
第二伪代码
从而,为了从交织数据结构416中提取(例如,LOAD)被提取的第一数据结构410(该数据结构原来采取第一数据格式),过程400可以通过从数据存储装置414中的当前地址418减去两个字节来开始加载,并且直接以Float32的形式读取数据。从而,过程400可以用第二数据格式(例如,Float32指令)从数据存储装置414加载第一数据格式(例如,BFloat16)的数据,并且获得第二数据格式(例如,Float32)值,以避免与第一数据格式指令(例如,第一数据格式到第二数据格式的转换)相关联的惩罚。
例如,其他实现方式在从数据存储装置414取回第一数据格式的数据时,为了将数据从第一数据格式转换到第二数据格式,可能会招致性能惩罚。例如,其他实现方式可能要求时延和计算密集的特定指令,例如“VECTOR CONVERT”和“SCALAR CONVERT”。例如,“VECTOR CONVERT”可能比其他指令(例如FMA指令)有更大的吞吐量,从而“VECTORCONVERT”将阻止FMA启动,直到完成为止。从而,“VECTOR CONVERT”可能会减慢整个软件管线。SCALAR CONVERT也会带来更多的负面效应。当没有对转换(例如BFloat16标量转换)的硬件或编译器支持时,上述问题可能会加剧。简而言之,这些限制阻碍了吞吐量和效率。
与之不同,上述过程400避免了调用这种高成本的指令,而是在存储和加载期间纳入交织模型,以生成采用第二数据格式的提取的第一数据结构410,以及采用第二数据格式的提取的第二数据结构412。在一些实施例中,提取的第一数据结构410和提取的第二数据结构412可以一起形成数学运算的基础。在一些实施例中,提取的第一数据结构410可被利用在第一数学运算中,并且提取的第二数据结构412可被利用在不同于第一数学运算的第二数学运算中。也就是说,提取的第一数据结构410和提取的第二数据结构412可以是不同过程的一部分。
正如已经论述过的,与提取的第一数据结构410相关联的比特404a-404h可被视为噪声,并且与提取的第二数据结构412相关联的比特402a-402h可被视为噪声。这样做可以增强计算的处理和准确性。
图4图示了基于预测使用模型来交织和存储数据的方法430。方法430一般可结合本文描述的任何实施例来实现,例如已经论述过的过程300(图1A和1B)、方法360(图2)和过程400(图3)。更具体而言,方法430可作为存储在诸如RAM、ROM、PROM、固件、闪存等等之类的机器或计算机可读存储介质中的逻辑指令集合被实现在一个或多个模块中,被实现在诸如PLA、FPGA、CPLD之类的可配置逻辑中,被实现在利用诸如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或者被实现在这些的组合中。
图示的处理块432识别多个数据,这些数据采取第一数据格式(例如,BF16),并且将被以第二数据格式(例如,FP32)来存储。例如,图示的处理块432可以识别第一数据格式的精度对于一些数学运算而言是可接受的,但是底层硬件可以在第二数据格式上运算。
图示的处理块434从多个数据中识别出两个或更多个数据,这些数据基于预测使用模型将被用在与彼此的同一数学运算中。预测使用模型可以基于历史使用模型、人工智能分析、预取技术,等等。图示的处理块436将两个或更多个数据与彼此交织,以将两个或更多个数据从第一数据格式转换到第二数据格式。图示的处理块438将该交织的两个或更多个数据存储在连续的存储器中。
图示的处理块440识别在同一数学运算中使用的数据之间是否有可能进行更多的交织。例如,处理块440可以从预测使用模型中确定更多的潜在数字可以被交织,因此图示的处理块434执行。然而,如果基于将在同一数学运算中的数据,交织是不可能的,则图示的处理块442基于预测使用来彼此交织和存储剩余的数据。例如,即使两个数据不会被输入到同一数学过程中,处理块442也可以确定这两个数据将在不同的数学过程中在时间上彼此接近地(例如,同时或者一个紧接着另一个)被利用。从而,为了减少容易有时延的多次取回(例如,从长期存储装置取回),这两个数据可以被交织并存储在缓存或寄存器中。因此,图示的处理块442将剩余的数据交织在一起,以提高交织的数据可能只被加载一次的可能性。图示的处理块444存储任何其他尚未被存储的数据。
图5图示了用于开发前向使用模型(例如,预测使用模型)的方法500。方法500一般可结合本文描述的任何实施例来实现,例如已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)和方法430(图4)。例如,前向使用模型可以是如图4中描述的预测使用模型。更具体而言,方法500可作为存储在诸如RAM、ROM、PROM、固件、闪存等等之类的机器或计算机可读存储介质中的逻辑指令集合被实现在一个或多个模块中,被实现在诸如PLA、FPGA、CPLD之类的可配置逻辑中,被实现在利用诸如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或者被实现在这些的组合中。
图示的处理块502基于预测措施开发与数据相关联的前向使用模型。预测措施可以是历史使用模型、人工智能分析、预取技术,等等。图示的处理块504存储前向使用模型。图示的处理块506在交织期间访问前向使用模型,以识别被预测为将彼此邻近地(例如,在相同的数学运算中或者在不同的数学运算中同时)被利用的数据。
图6图示了触发交织过程的方法520。方法520一般可结合本文描述的任何实施例来实现,例如已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)和方法500(图5)。更具体而言,方法520可作为存储在诸如RAM、ROM、PROM、固件、闪存等等之类的机器或计算机可读存储介质中的逻辑指令集合被实现在一个或多个模块中,被实现在诸如PLA、FPGA、CPLD之类的可配置逻辑中,被实现在利用诸如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件中,或者被实现在这些的组合中。
图示的处理块522识别一个或多个性能因素。例如,该一个或多个性能因素可包括识别是否存在数据格式不匹配。例如,当应用可基于第一数据格式的数据执行,而底层硬件体系结构在第二数据格式上运算时,数据格式不匹配可能存在。该一个或多个性能因素还可包括识别计算工作负载和/或可用资源的数量。图示的处理块524确定一个或多个性能因素是否满足性能阈值。例如,当存在数据不匹配中的一个或多个时,如果计算工作负载低于计算阈值和/或可用资源高于资源阈值,则可以满足性能阈值。
如果满足性能阈值,则图示的处理块526执行如本文已经描述的交织过程,以存储和交织数据。否则,图示的处理块528执行非交织过程,来以非交织方式存储数据。
图7图示了一种体系结构510,该体系结构包括API 564(例如,ONEAPI),该API提供开发者接口以将BFloat16 568模型部署到API语言566内的API软件栈中。API 564可以将BFloat16存储类型部署到编译器扩展或库实现中,其通用解决方案对用户而言几乎是透明的,但保留了如上所述的益处。深度神经网络库576和机器学习缩放库578可以进一步部署BFloat16模型。API 564一般可结合本文描述的任何实施例来实现,例如已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)和方法520(图6)。API编译器引擎570和/或编译器运行时572可包括编译扩展,以支持BFloat16存储类型并且暴露出类似内在的API。
例如,API语言566可以支持存储(交织)和加载(取回交织的数字),如上所述。API编译器引擎570可包括执行存储和加载的内在函数。例如,API语言566和/或API编译器引擎570可以接受两个Bfloat16向量作为输入,并且自动存储具有如上所述的交织分布的底层数据。API语言566和/或API编译器引擎570加载向量大小的BFloat16元素并且转换为相应的浮点元素。
从而,API 564可以为直接使用API编程语言的最终用户提供高效的接口。API语言566、API编译器引擎570、编译器运行时572和移植工具590可以是最终用户直接可编程的。第一库574a至N库574n、机器学习缩放库578、深度神经网络库576和API分析工具580可以是基于API的编程。API 564可以在第一库574a至N库574n、机器学习缩放库578、深度神经网络库576中实现BFloat16存储类型。从而,第一库574a至N库574n、机器学习缩放库578、深度神经网络库576可以额外地实现如本文所述的实施例的一个或多个方面。
例如,深度神经网络库576和机器学习缩放库578可以是API 564的两个组件,这两个组件是深度学习工作负载的变体所关注和使用的。深度神经网络库576和机器学习缩放库578都可以集成本文描述的实施例,并且允许对于高级别开发者或最终用户的透明度。
如图所示,体系结构510包括多个异构设备588(588a-588d),例如,中央处理单元(CPU,例如,主机处理器)588a来实现标量功能,图形处理单元(GPU,例如,具有高度并行的处理能力的图形处理器)588b来实现向量功能,人工智能(AI)加速器588c来实现矩阵功能,以及现场可编程门阵列(FPGA)588d来实现空间功能。目标系统软件584a、584b、584c、584d可以作为API 564和异构设备588之间的中介与异构设备588交互。异构设备588可以执行与经由API 564和中间件及框架562接收的应用560相关联的过程,例如基于交织数据的数学运算。0级接口586可以为GPU 588b、AI加速器588c和FPGA 588d实现上述功能。主机接口582可以为CPU 588a实现上述功能。
现在转到图8,示出了存储器带宽增强的计算系统158(例如,服务器或节点)。计算系统158可与本文描述的任何实施例相结合,例如已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)、方法520(图6)和API 564(图7)。计算系统158一般可以是电子设备/平台的一部分,具有计算功能(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板设备、服务器)、通信功能(例如,智能电话)、成像功能(例如,相机、摄像机)、媒体播放功能(例如,智能电视/TV)、可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能(例如,汽车、卡车、摩托车),等等,或者这些的任何组合。在图示的示例中,系统158包括主机处理器160(例如,具有一个或多个处理器核心的CPU),其具有与系统存储器164相耦合的集成存储器控制器(integrated memory controller,IMC)162。
图示的系统158还包括图形处理器168(例如,图形处理单元/GPU)和输入输出(IO)模块166,它们与主机处理器160(例如,作为微控制器)一起实现在作为SOC的半导体管芯170上,其中IO模块166可与例如显示器172(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、输入外设156(例如,鼠标、键盘、麦克风)、网络控制器174(例如,有线和/或无线)以及大容量存储装置176(例如,HDD、光盘、SSD、闪存或其他NVM)进行通信。
在一些实施例中,SOC 170可以利用依赖性检查工具142来解析应用代码146,以生成前向使用模型。详细地说,SOC 170可以实现存储在例如NVM 176和/或系统存储器164上的指令以解析应用代码146。应用代码146可被存储在其他存储设备上,例如缓存154。
主机处理器160可以经由网络控制器174与另一计算设备(例如,神经网络中的节点)通信。计算系统158可以通过网络控制器174向神经网络中的其他节点提供数据。
主机处理器160可以基于前向使用模型和/或应用代码146生成交织数据140。在一些实施例中,网络控制器174可以从另一节点接收第一和第二数据。主机处理器160可以将第一和第二数据作为交织数据140存储在系统存储器164中。当需要交织数据140来处理时,主机处理器160可以在第一和第二硬件寄存器144、148中加载交织数据140。在一些实施例中,主机处理器160可以只将交织数据140存储在第一和第二寄存器144、148中的一个中。然后,主机处理器160可以处理交织数据140。在一些实施例中,图形处理器168可以执行以下各项的一些方面:生成交织数据140、将交织数据140存储到系统存储器164中、将交织数据140加载到第一或第二寄存器144、148中的一个或多个中、以及处理交织数据140。在一些实施例中,系统存储器164耦合到主机处理器160和图形处理器168,并且包括一组指令178,这些指令当被图形处理器168或主机处理器(例如,中央处理单元)中的一个或多个执行时,使得计算系统158执行本文描述的一个或多个实施例。
图9示出了半导体封装装置180。半导体封装装置180可与本文描述的任何实施例相结合,例如已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)、方法520(图6)、API 564(图7)和计算系统158(图8)。图示的装置180包括一个或多个衬底184(例如,硅、蓝宝石、砷化镓)和与(一个或多个)衬底184相耦合的逻辑182(例如,晶体管阵列和其他集成电路/IC组件)。在一个示例中,逻辑182至少部分被实现在可配置逻辑或固定功能逻辑硬件中。逻辑182可以实现已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)、方法520(图6)、API 564(图7)和计算系统158(图8)的一个或多个方面。在一些实施例中,逻辑182可以交织数据、存储数据、加载数据并且处理数据。
图10图示了根据一个实施例的处理器核心200。处理器核心200可以是用于任何类型的处理器的核心,例如微处理器、嵌入式处理器、数字信号处理器(digital signalprocessor,DSP)、网络处理器、或者其他执行代码的设备。虽然在图10中只图示了一个处理器核心200,但处理元件或者可包括多于一个图10中所示的处理器核心200。处理器核心200可以是单线程核心,或者对于至少一个实施例,处理器核心200可以是多线程的,因为其对于每个核心可包括多于一个硬件线程情境(或者说“逻辑处理器”)。
图10还图示了与处理器核心200相耦合的存储器270。存储器270可以是本领域技术人员已知的或者以其他方式可获得的各种存储器(包括存储器层次体系的各种层)中的任何一者。存储器270可包括要被处理器核心200执行的一个或多个代码213指令,其中代码213可实现已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)、方法520(图6)和API 564(图7)的一个或多个方面。处理器核心200遵循由代码213指示的指令的程序序列。每个指令可进入前端部分210并且被一个或多个解码器220处理。解码器220可生成诸如预定格式的固定宽度微操作之类的微操作作为其输出,或者可生成其他指令、微指令或者反映原始代码指令的控制信号。图示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们一般分配资源并且对与转换指令相对应的操作进行排队以便执行。
处理器核心200被示为包括具有一组执行单元255-1至255-N的执行逻辑250。一些实施例可包括专用于特定功能或功能集合的若干个执行单元。其他实施例可只包括一个执行单元或者可执行特定功能的一个执行单元。图示的执行逻辑250执行由代码指令指定的操作。
在代码指令所指定的操作的执行完成之后,后端逻辑260使代码213的指令引退。在一个实施例中,处理器核心200允许指令的无序执行,但要求指令的有序引退。引退逻辑265可采取本领域技术人员已知的各种形式(例如,重排序缓冲器之类的)。这样,处理器核心200在代码213的执行期间被变换,至少就由解码器生成的输出、被寄存器重命名逻辑225利用的硬件寄存器和表格以及被执行逻辑250修改的任何寄存器(未示出)而言。
虽然在图10中没有图示,但处理元件可包括与处理器核心200一起在芯片上的其他元件。例如,处理元件可包括与处理器核心200一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑相集成的I/O控制逻辑。处理元件也可包括一个或多个缓存。
现在参考图11,示出了根据一实施例的计算系统1000实施例的框图。图11中所示出的是多处理器系统1000,其包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但要理解,系统1000的实施例也可包括仅一个这种处理元件。
系统1000被图示为点到点互连系统,其中第一处理元件1070和第二处理元件1080经由点到点互连1050耦合。应当理解,图11中所示的任何或所有互连可被实现为多点分支总线,而不是点到点互连。
如图11所示,处理元件1070和1080的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心1074a和1074b和处理器核心1084a和1084b)。这种核心1074a、1074b、1084a、1084b可被配置为以与上文联系图10所论述类似的方式来执行指令代码。
每个处理元件1070、1080可包括至少一个共享缓存1896a、1896b。共享缓存1896a、1896b可存储被处理器的一个或多个组件利用的数据(例如,指令),所述组件例如分别是核心1074a、1074b和1084a、1084b。例如,共享缓存1896a、1896b可在本地缓存存储器1032、1034中存储的数据,供处理器的组件更快速访问。在一个或多个实施例中,共享缓存1896a、1896b可包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存,最后一级缓存(last level cache,LLC),和/或这些的组合。
虽然被示为只具有两个处理元件1070、1080,但要理解,实施例的范围不限于此。在其他实施例中,一个或多个额外的处理元件可存在于给定的处理器中。或者,处理元件1070、1080中的一个或多个可以是除了处理器以外的元件,例如加速器或者现场可编程门阵列。例如,(一个或多个)额外的处理元件可包括与第一处理器1070相同的(一个或多个)额外处理器,与第一处理器1070异构或非对称的(一个或多个)额外处理器,加速器(例如,图形加速器或者数字信号处理(DSP)单元),现场可编程门阵列,或者任何其他处理元件。在处理元件1070、1080之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。这些差异可实际上将其自身展现为处理元件1070、1080之间的非对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可存在于相同的管芯封装中。
第一处理元件1070还可包括存储器控制器逻辑(MC)1072和点到点(P-P)接口1076和1078。类似地,第二处理元件1080可包括MC 1082和P-P接口1086和1088。如图11所示,MC1072和1082将处理器耦合到各自的存储器,即存储器1032和存储器1034,存储器1032和存储器1034可以是在本地附接到各个处理器的主存储器的一部分。虽然MC 1072和1082被图示为集成到处理元件1070、1080中,但对于替换实施例,MC逻辑可以是在处理元件1070、1080之外的分立逻辑,而不是集成在其中。
第一处理元件1070和第二处理元件1080可分别经由P-P互连1076、1086耦合到I/O子系统1090。如图11所示,I/O子系统1090包括P-P接口1094和1098。此外,I/O子系统1090包括接口1092来将I/O子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线1049可用于将图形引擎1038耦合到I/O子系统1090。或者,点到点互连可耦合这些组件。
进而,I/O子系统1090可经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,虽然实施例的范围不限于此。
如图11所示,各种I/O设备1014(例如,生物计量扫描仪、扬声器、相机、传感器)可耦合到第一总线1016,以及可将第一总线1016耦合到第二总线1020的总线桥1018。在一个实施例中,第二总线1020可以是低引脚数(low pin count,LPC)总线。各种设备可耦合到第二总线1020,例如包括键盘/鼠标1012、(一个或多个)通信设备1026、以及数据存储单元1019(例如,盘驱动器或者其他大容量存储设备),其中该数据存储单元在一个实施例中可包括代码1030。图示的代码1030可实现已经论述过的过程300(图1A和1B)、方法360(图2)、过程400(图3)、方法430(图4)、方法500(图5)、方法520(图6)和API 564(图7)的一个或多个方面。另外,音频I/O 1024可耦合到第二总线1020并且电池1010可向计算系统1000供应电力。
注意,设想了其他实施例。例如,取代图11的点到点体系结构,系统可实现多点分支总线或者另外的这种通信拓扑。另外,可改为利用比图11所示更多或更少的集成芯片来划分图11的元件。
附加注释和示例:
示例1可包括一种计算系统,包括数据存储装置、图形处理器、中央处理单元、以及包括一组指令的存储器,所述指令当被所述图形处理器或所述中央处理单元中的一个或多个执行时,使得所述计算系统识别要被存储在所述数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式,并且将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
示例2可包括如示例1所述的系统,其中所述指令当被执行时,使得所述计算系统使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
示例3可包括如示例1所述的系统,其中所述指令当被执行时,使得所述计算系统使得所述交织的第一和第二数据被加载到硬件寄存器中。
示例4可包括如示例1所述的系统,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
示例5可包括如示例1所述的系统,其中所述指令当被执行时,使得所述计算系统加载所述交织的第一和第二数据,从所述交织的第一和第二数据中提取第一数据和第二数据,并且基于提取的第一数据和提取的第二数据来执行数学运算。
示例6可包括如示例1至5中的任一项所述的系统,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
示例7可包括一种半导体装置,其包括一个或多个衬底,以及与所述一个或多个衬底耦合的逻辑,其中所述逻辑被实现在可配置逻辑或者固定功能逻辑硬件中的一个或多个中,与所述一个或多个衬底耦合的所述逻辑识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式,并且将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
示例8可包括如示例7所述的半导体装置,其中所述逻辑使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
示例9可包括如示例7所述的半导体装置,其中与所述一个或多个衬底耦合的所述逻辑使得所述交织的第一和第二数据被加载到硬件寄存器中。
示例10可包括如示例7所述的半导体装置,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
示例11可包括如示例7所述的半导体装置,其中与所述一个或多个衬底耦合的所述逻辑加载所述交织的第一和第二数据,从所述交织的第一和第二数据中提取第一数据和第二数据,并且基于提取的第一数据和提取的第二数据来执行数学运算。
示例12可包括如示例7至11中的任一项所述的半导体装置,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
示例13可包括至少一个计算机可读存储介质,其包括一组指令,所述指令当被计算设备执行时,使得所述计算设备识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式,并且将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
示例14可包括如示例13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
示例15可包括如示例13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备使得所述交织的第一和第二数据被加载到硬件寄存器中。
示例16可包括如示例13所述的至少一个计算机可读存储介质,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
示例17可包括如示例13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备加载所述交织的第一和第二数据,从所述交织的第一和第二数据中提取第一数据和第二数据,并且基于提取的第一数据和提取的第二数据来执行数学运算。
示例18可包括如示例13至17中的任一项所述的至少一个计算机可读存储介质,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
示例19可包括一种方法,包括识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式,并且将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
示例20可包括如示例19所述的方法,还包括使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
示例21可包括如示例19所述的方法,还包括使得所述交织的第一和第二数据被加载到硬件寄存器中。
示例22可包括如示例19所述的方法,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
示例23可包括如示例19所述的方法,还包括加载所述交织的第一和第二数据,从所述交织的第一和第二数据中提取第一数据和第二数据,并且基于提取的第一数据和提取的第二数据来执行数学运算。
示例24可包括如示例19至23中的任一项所述的方法,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(programmable logicarray,PLA)、存储器芯片、网络芯片,片上系统(systems on chip,SoC)、SSD/NAND控制器ASIC,等等。此外,在一些附图中,用线条来表示信号导线。某些可能是不同的,以表明更多的构成信号路径,具有数字标注,以表明构成信号路径的数目,和/或在一端或多端具有箭头,以表明主要信息流方向。然而,这不应当被以限制方式来解释。更确切地说,可以联系一个或多个示范性实施例使用这种添加的细节来促进对电路的更容易理解。任何表示的信号线,无论是否具有附加信息,都可实际上包括一个或多个信号,这一个或多个信号可在多个方向上行进并且可利用任何适当类型的信号方案来实现,例如用差分对实现的数字或模拟线路、光纤线路、和/或单端线路。
可能给出了示例大小/型号/值/范围,但实施例不限于此。随着制造技术(例如,光刻术)随着时间流逝而成熟,预期能够制造具有更小尺寸的器件。此外,为了图示和论述的简单,并且为了不模糊实施例的某些方面,在附图内可能示出或不示出到IC芯片和其他组件的公知电源/接地连接。另外,可能以框图形式示出布置以避免模糊实施例,并且也考虑到了如下事实:关于这种框图布置的实现的具体细节是高度取决于在其内实现实施例的计算系统的,即,这种具体细节应当完全在本领域技术人员的视野内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,本领域技术人员应当清楚,没有这些具体细节,或者利用这些具体细节的变体,也可实现实施例。说明书从而应当被认为是说明性的,而不是限制性的。
术语“耦合”在本文中可被用于指所涉组件之间的任何类型的关系,无论是直接的还是间接的,并且可应用到电的、机械的、液体的、光的、电磁的、机电的或者其他的连接。此外,除非另外指出,否则术语“第一”、“第二”等等在本文中可能仅仅是为了便于论述,而不带有特定的时间或先后意义。
就在本申请中和权利要求中使用的而言,由术语“……中的一个或多个”联接的项目的列表可意指所列出的术语的任何组合。例如,短语“A、B或C中的一个或多个”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员将从前面的描述中理解:可以以多种形式实现实施例的宽泛技术。因此,尽管已经结合其特定示例描述了实施例,但实施例的真实范围不应限制于此,因为在本领域技术人员研究了附图、说明书和所附权利要求之后,其他修改将变得显而易见。

Claims (24)

1.一种计算系统,包括:
数据存储装置;
图形处理器;
中央处理单元;以及
包括一组指令的存储器,所述指令当被所述图形处理器或所述中央处理单元中的一个或多个执行时,使得所述计算系统:
识别要被存储在所述数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式;并且
将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
2.如权利要求1所述的系统,其中所述指令当被执行时,使得所述计算系统:
使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
3.如权利要求1所述的系统,其中所述指令当被执行时,使得所述计算系统:
使得所述交织的第一和第二数据被加载到硬件寄存器中。
4.如权利要求1所述的系统,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
5.如权利要求1所述的系统,其中所述指令当被执行时,使得所述计算系统:
加载所述交织的第一和第二数据;
从所述交织的第一和第二数据中提取第一和第二数据;并且
基于提取的第一数据和提取的第二数据来执行数学运算。
6.如权利要求1所述的系统,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
7.一种半导体装置,包括:
一个或多个衬底;以及
与所述一个或多个衬底耦合的逻辑,其中所述逻辑被实现在可配置逻辑或者固定功能逻辑硬件中的一个或多个中,与所述一个或多个衬底耦合的所述逻辑用于:
识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式;并且
将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
8.如权利要求7所述的半导体装置,其中所述逻辑用于:
使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
9.如权利要求7所述的半导体装置,其中与所述一个或多个衬底耦合的所述逻辑用于:
使得所述交织的第一和第二数据被加载到硬件寄存器中。
10.如权利要求7所述的半导体装置,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
11.如权利要求7所述的半导体装置,其中与所述一个或多个衬底耦合的所述逻辑用于:
加载所述交织的第一和第二数据;
从所述交织的第一和第二数据中提取第一和第二数据;并且
基于提取的第一数据和提取的第二数据来执行数学运算。
12.如权利要求7所述的半导体装置,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
13.至少一个计算机可读存储介质,其包括一组指令,所述指令当被计算设备执行时,使得所述计算设备:
识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式;并且
将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
14.如权利要求13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备:
使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
15.如权利要求13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备:
使得所述交织的第一和第二数据被加载到硬件寄存器中。
16.如权利要求13所述的至少一个计算机可读存储介质,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
17.如权利要求13所述的至少一个计算机可读存储介质,其中所述指令当被执行时,使得所述计算设备:
加载所述交织的第一和第二数据;
从所述交织的第一和第二数据中提取第一和第二数据;并且
基于提取的第一数据和提取的第二数据来执行数学运算。
18.如权利要求13所述的至少一个计算机可读存储介质,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
19.一种方法,包括:
识别要被存储在数据存储装置中的第一数据和第二数据,其中所述第一数据和所述第二数据的每一者采取第一数据格式;并且
将所述第一数据与所述第二数据交织,其中交织的第一和第二数据采取第二数据格式,并且其中所述第二数据格式与所述第一数据格式不同。
20.如权利要求19所述的方法,还包括:
使得所述交织的第一和第二数据被存储在所述数据存储装置中,其中所述第一数据的比特与所述第二数据的比特在所述数据存储装置中交替。
21.如权利要求19所述的方法,还包括:
使得所述交织的第一和第二数据被加载到硬件寄存器中。
22.如权利要求19所述的方法,其中所述第一数据格式的大小是所述第二数据格式的大小的一半。
23.如权利要求19所述的方法,还包括:
加载所述交织的第一和第二数据;
从所述交织的第一和第二数据中提取第一和第二数据;并且
基于提取的第一数据和提取的第二数据来执行数学运算。
24.如权利要求19所述的方法,其中所述第一数据格式是大脑浮点格式并且所述第二数据格式是浮点格式。
CN201980101482.0A 2019-11-07 2019-11-07 改变数据格式的交织数据转换 Pending CN114586002A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/116172 WO2021087841A1 (en) 2019-11-07 2019-11-07 Interleaved data conversion to change data formats

Publications (1)

Publication Number Publication Date
CN114586002A true CN114586002A (zh) 2022-06-03

Family

ID=75848229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980101482.0A Pending CN114586002A (zh) 2019-11-07 2019-11-07 改变数据格式的交织数据转换

Country Status (3)

Country Link
US (1) US11907118B2 (zh)
CN (1) CN114586002A (zh)
WO (1) WO2021087841A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734075B2 (en) 2021-11-24 2023-08-22 International Business Machines Corporation Reducing data format conversion of an accelerator

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3731565B2 (ja) * 2002-06-18 2006-01-05 ソニー株式会社 データ変換装置
US7434138B2 (en) * 2005-06-27 2008-10-07 Agere Systems Inc. Structured interleaving/de-interleaving scheme for product code encoders/decorders
US7555684B1 (en) * 2006-01-17 2009-06-30 Xilinx, Inc. Circuit for and a method of generating an interleaver address
US7954015B1 (en) * 2008-12-05 2011-05-31 Altera Corporation Data interleaving and deinterleaving involving concatenation of words read from storage
US20110202819A1 (en) * 2010-02-12 2011-08-18 Yuan Lin Configurable Error Correction Encoding and Decoding
US8402348B1 (en) * 2010-05-21 2013-03-19 Lsi Corporation Systems and methods for variable data processing using a central queue
US8837616B2 (en) * 2012-07-31 2014-09-16 Exelis Inc. Equalization of a distributed pilot OFDM signal
US9582419B2 (en) * 2013-10-25 2017-02-28 Arm Limited Data processing device and method for interleaved storage of data elements
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
US10063257B1 (en) * 2015-11-03 2018-08-28 Western Digital Technologies, Inc. Data storage device encoding and interleaving codewords to improve trellis sequence detection

Also Published As

Publication number Publication date
WO2021087841A1 (en) 2021-05-14
US11907118B2 (en) 2024-02-20
US20230153240A1 (en) 2023-05-18

Similar Documents

Publication Publication Date Title
CN108475193B (zh) 用于字节排序指令和用于四位组排序的处理器、方法和系统
CN108351863B (zh) 用于可编程结构层级结构和高速缓存的指令和逻辑
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US10235175B2 (en) Processors, methods, and systems to relax synchronization of accesses to shared memory
CN108369511B (zh) 用于基于通道的跨步存储操作的指令和逻辑
KR101964350B1 (ko) 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들
JP7351060B2 (ja) 浮動小数点データを圧縮するためのシステム
US20170286114A1 (en) Processors, methods, and systems to allocate load and store buffers based on instruction type
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
JP2017107579A (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
KR20160075669A (ko) 하이브리드 프로세서 코어를 포함하는 시스템-온-칩(soc)
US20140095830A1 (en) Instruction for shifting bits left with pulling ones into less significant bits
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
KR20210028075A (ko) 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템
US11182298B2 (en) System, apparatus and method for dynamic profiling in a processor
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법
US11907118B2 (en) Interleaved data conversion to change data formats
WO2021119907A1 (en) Technology to mininimize negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding
US20230169315A1 (en) Sparse index generator
US20180165200A1 (en) System, apparatus and method for dynamic profiling in a processor
US20160378480A1 (en) Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
US11886910B2 (en) Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
CN112988376A (zh) 服务类别属性在运行时的初始化和管理
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法

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