CN111290791A - 具有高性能密码操作的标量单元 - Google Patents
具有高性能密码操作的标量单元 Download PDFInfo
- Publication number
- CN111290791A CN111290791A CN202010099697.8A CN202010099697A CN111290791A CN 111290791 A CN111290791 A CN 111290791A CN 202010099697 A CN202010099697 A CN 202010099697A CN 111290791 A CN111290791 A CN 111290791A
- Authority
- CN
- China
- Prior art keywords
- alus
- bit
- scalar
- memory
- graphics processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Advance Control (AREA)
Abstract
本发明的实施例通过对标量单元进行变化来提供技术解决方案,以使其能够用于高性能密码应用程序。本发明的各方面提供了具有四个32位算术逻辑单元(ALU)的标量单元。这四个ALU可以独立地用作四个单独的通道,每个通道生成32位结果。因此,每周期完成的指令数(IPC)可以是4个。此外,这四组32位ALU可被配置为两个64位ALU,每两个32位ALU为一组。在一个实施例中,该配置每个周期可以生成两个64位结果。此外,当ALU组合为一个单一单元时,这四组32位ALU可被配置为一个128位ALU。本发明的各方面从一组四个32位标量ALU产生数据宽度或格式不同于32位的输出。
Description
技术领域
本发明的实施例大体上涉及提供增强型标量操作。
背景技术
诸如中央处理单元(CPU)或图形处理单元(GPU)等的处理器中的向量处理执行指令集,该指令集包含对被称为向量的一维数据阵列进行操作的指令。这与标量处理器形成对比,其指令对单个数据项进行操作。
向量指令通常在连续周期中对每个数据元素执行操作。指令中的向量功能单元是管线型的。此外,每个管线级对一段数据操作,并且没有向量依赖性(在内部和向量之间)。
然而,存在缺点,尤其是在向量操作不规则时。同时,如果存储器操作平衡未被监测和维护,并且数据未正确地或适当地映射到适当的存储库,则存储器存取可能遇到瓶颈制约。
对于标量处理,其通常被分类为SISD处理(单指令,单数据)。此方法的另一变化是单指令、多线程(SIMT)处理。传统的SIMT多线程处理器通过将线程组织成组并在单独的处理管线、标量或向量管线上执行每个线程来提供多个线程的并行执行。在单个周期中调度由一个组中的线程执行的指令。生成处理管线控制信号,使得当线程跨越处理管线的各级时,组中的所有线程执行一组类似的操作。例如,一组中的所有线程从寄存器文件读取源操作数,执行处理单元中的指定算术运算,并将结果写回到寄存器文件。当在处理器中支持多个语境时,SIMT需要额外存储器用于复制同一内核中使用的恒定值。因而,当从主存储器或缓存加载不同恒定值时,引入等待时间开销。
由于向量处理在并行处理中的运行优势,近年来密码术已利用向量处理的优点。然而,通常基于密码算法和指令的密码操作对于某些应用程序可能太慢。例如,许多密码算法需要大的存储器和高计算性能。通用GPU(GPGPU)中的向量单元每个线程不具有大的存储器。另一方面,在提及密码操作与需求时,相比向量单元,GPGPU装置中的典型标量单元具有相对较弱的性能。
发明内容
本发明的实施例通过对标量单元进行小变化来提供技术解决方案,以使其能够用于高性能密码应用程序。本发明的各方面提供了具有四个32位算术逻辑单元(ALU)的标量单元(SU)。在一个实施例中,这四个ALU可以独立地用作四个单独的通道,每个通道生成32位结果。因此,每周期完成的指令数(IPC)可以是4个。此外,这四组32位ALU可被配置为两个64位ALU,每两个32位ALU为一组。在一个实施例中,该配置每个周期可以生成两个64位结果。此外,当ALU组合为一个单一单元时,这四组32位ALU可被配置为一个128位ALU。本发明的各方面从一组四个32位标量ALU产生数据宽度或格式不同于32位的输出。
此外,本发明的各方面创建了以这样的方式管理和利用标量单元的新控制器。
附图说明
本领域的普通技术人员可以了解,为了简单和清晰起见,示出了附图中的元件,因此为了避免混淆本发明的方面并未示出所有的连接和选项。例如,在商业上可行的实施例中有用或必需的常见但易于理解的元件通常不进行描绘,以便有助于较少阻挡对本公开的这些各种实施例的观察。将进一步了解,可以以特定的发生次序描述或描绘某些动作和/或步骤,而所属领域的技术人员将理解,实际上不需要关于序列的此类特异性。还应当理解,本文所用的术语和表达将关于其各自的相应探究和研究领域进行限定,除非本文中另外阐述了特定含义。
图1是示出了根据本发明的一个实施例实现修改的标量单元组织的新控制器的图。
图2是示出了根据本发明的一个实施例利用修改的标量单元组织的ISA格式的图。
图3A-图3B是根据本发明的一个实施例的修改的标量单元组织的管线设计的示意图。
图4是根据本发明的一个实施例说明用于从一组标量算术逻辑单元(ALU)配置可变数据宽度输出的方法的流程图。
图5是图示被配置成实施本发明的一个或多个方面的计算机系统的框图。
图6是根据本发明的一个实施例的用于图5的计算机系统的并行处理子系统的框图。
具体实施方式
现在可以参考附图更全面地描述本发明,附图形成本发明的一部分,并且以图示的方式示出了可以实施本发明的具体示例性实施例。可以在理解本公开是对一个或多个发明的原理的举例说明的情况下呈现这些图示和示例性实施例,并且可能不旨在将任何一个发明限制于所示的实施例。本发明可以以许多不同形式实现,并且不应解释为限于本文所阐述的实施例;相反,提供这些实施例,使得本公开将是全面的完整的,并将本发明的范围完全传达给本领域的技术人员。此外,本发明可以体现为方法、系统、计算机可读介质、设备或装置。因此,本发明可采取完全硬件实施例、完全软件实施例或组合软件和硬件方面的实施例的形式。因此,以下详细描述不应以限制性意义理解。
一般来说,计算核心(参见下面的GPC 514)利用可编程顶点着色器、几何着色器和像素着色器。这些操作不是将这些组件的功能实现为具有不同的设计和指令集的单独的固定功能着色器单元,而是由具有统一指令集的执行单元池执行。这些执行单元中的每一个可以设计相同,并且可配置用于程序化操作。在一个实施例中,每个执行单元能够同时进行多线程操作。由于各种着色任务可以由顶点着色器、几何着色器和像素着色器生成,因此它们可以被传递到执行单元以被执行。
在生成单个任务时,执行控制单元(可以是下文GPC 514的一部分)处理将这些任务分配给各种执行单元中的可用线程的操作。当完成任务时,执行控制单元进一步管理相关线程的释放。就这一点而言,执行控制单元负责将顶点着色器、几何着色器和像素着色器任务分配给各种执行单元的线程,并且还执行任务和线程的相关“记帐(bookkeeping)”。具体来说,执行控制单元为所有执行单元维护线程和存储器的资源表(未具体说明)。执行控制单元具体管理哪些线程已经被分配任务并且被占用,在线程终止后已经释放了哪些线程,占用了多少公用寄存器文件存储寄存器,以及每个执行单元有多少自由空间。
线程控制器也可以设置在每个执行单元内部,并且可以负责调度、管理或标记每个线程为活动的(例如,执行的)或可用的。
根据一个实施例,标量寄存器文件可以连接到线程控制器和/或与线程任务接口连接。线程控制器为整个执行单元(例如,GPC 514)提供控制功能,其中功能包括每个线程的管理和决策功能,例如确定将如何执行线程。
现在参考图1,该图示出了根据本发明的一个实施例的修改的标量ALU 102。例如,标量ALU 102可以包括四个32位ALU 104-1、104-2、104-3和104-4。在一个示例中,一组32位ALU中的每一个ALU可以被视为用于处理标量指令或操作的独立管线或通道。预期ALU的输入(进位输入(carry-in)120)生成输出(进位输出(carry-out)122)。在一个实施例中,可以添加控制器106,以进一步提高这个经修改的标量ALU 102布置或组织的灵活性和能力。例如,控制器106可以是整个执行环境的一部分,诸如图5或图6中的系统的一部分。在另一个实施例中,控制器106可响应于软件或应用程序而被控制或被操作,这还可参见下面的图2。
在一个实施例中,标量ALU 102可以由片上存储器(未示出)补充,以用作标量ALU102进行缓存的缓冲器,因为标量ALU 102可以响应于应用而提供不同的数据宽度结果。例如,片上存储器的大小可以根据应用(例如,密码应用)来配置。作为示例,密码应用可以包括散列算法、加密算法等。在另一个实例中,散列或加密算法包括SHA-256、MD5、HMAC、Ethash、Scrypt、Equihash、Cryptonight、X11.DES/3DES或TripleDES、Blowfish、AES、Twofish、IDEA和RSA Security。
例如,散列是将数据转换成某一范围内的数字的函数。散列具有其输出基本上是不可预测(在给定范围内)的特性。在一个示例中,用于加密货币的散列函数,例如,加密货币挖掘可能需要执行或应用SHA-256两次。因此,在任何给定的散列算法中,将存在输入和固定大小的位串的大小,输入有时被称为消息,其表示要求散列的数据。本发明的各方面使修改的标量ALU 102能够将消息和位串的大小作为可配置参数提供给调用散列算法的任何特定应用程序,且片上存储器的大小可以基于该应用程序被预先确定。另一方面,由于不可以按照需要在物理上改变片上存储器,因此根据本发明的一个实施例其用作缓冲器或缓存器的比率可以根据所讨论的应用来进行优化。
现在参考图2,该图示出了指令集架构(ISA)格式202,以利用根据本发明的一个实施例的经修改的标量单元组织。如图1所示,标量ALU 102与控制器106联接,标量ALU 102可以提供不同的数据宽度的结果,例如32位输出108、64位输出和128位输出。因此,为了智能地触发或使控制器能够生成期望数据宽度输出,本发明的实施例利用Fmt4字段204表示数据宽度,无论是32位、64位还是128位。在一个示例中,Fmt4字段中的标记“ADD.i64”表示期望的输出数据宽度为64位的带符号整数的加法。在另一示例中,“ADD.i128”可以表示期望的输出数据宽度为128位的带符号整数的加法。本发明的实施例还使得控制器能够读取并解释ISA格式化指令中的此类标记。换句话说,本发明的各方面实现了一种灵活的方法,其利用32位标量ALU来产生数据宽度不同于32位的可变结果。
在另一示例中,应当理解,在不脱离本发明的实施例的范围或精神的情况下,可以使用多个32位标量ALU的其他组合。例如,代替一组四个32位标量ALU,可以配置一组四个64位ALU。在另一示例中,在不脱离本发明的实施例的范围或精神的情况下,也可以配置四的倍数的32位标量ALU组。
换句话说,每当应用程序希望利用修改的标量ALU 102设计来提高性能时,程序员或应用程序开发者可以提供ISA格式字段Fmt4中的标记,使得控制器106可以解释这样的标记并相应地响应。此外,可以响应于这种标记的存在而分配片上存储器的一部分。
图3A和图3B示出了根据本发明的一个实施例的修改的标量ALU 102的示例性示意图的图解。如将了解,图3A说明ALU 302的左侧(例如,输入),而图3B说明ALU 302的右侧。
现在参考图4,流程图示出了根据本发明的一个实施例用于从一组标量单元配置可变数据格式(包括数据宽度)输出的方法。在320处,可以识别图形处理子系统中的一组四个32位标量ALU。在另一实施例中,一组四个32位标量ALU可以被配置或被重新配置。在322处,识别一组四个32位标量ALU的输入。在324处,将控制器连接到一组四个32位标量ALU。例如,控制器可以是充当缓存的片上存储器。在另一实施例中,控制器可以基于现有存储器,无论其是片上型还是片外型。当然,由于需要提高性能,因此将控制器部署为片上存储器是可取的。在326处,确定输入中的指令集架构(ISA)中的标记是否指定不同于32位的数据宽度。如上面所解释,可能需要使用32位标量ALU来提供数据格式或宽度是不同于32位的输出。在一个示例中,该标记可以呈现由“.”分隔的“指令”的格式,然后是数据格式。例如,“ADD.i64”可以是这种标记的句法。应当理解,在不脱离本发明的实施例的范围或精神的情况下,可以使用其他标记。
在328处,本发明的各方面基于由标记指定的数据宽度生成ans输出。
图5是示出被配置成实施本发明的一个或多个方面的计算机系统400的框图。计算机系统400包括中央处理单元(CPU)402和经由互连路径通信的系统存储器404,所述互连路径可包括存储器连接406。存储器连接406可以是例如北桥芯片,其经由总线或其它通信路径408(例如,HyperTransport(超传输)链路)连接到I/O(输入/输出)连接410。I/O连接410可以是例如南桥芯片,其从一个或多个用户输入装置414(例如,键盘、鼠标)接收用户输入,并通过路径408和存储器连接406将输入转发到CPU 402。并行处理子系统420经由总线或其它通信路径416(例如,PCI Express、加速图形端口或HyperTransport链路)耦合到存储器连接406;在一个实施例中,并行处理子系统420是将像素传递到显示装置412(例如,CRT、基于LCD、基于LED或其他技术)的图形子系统。显示装置412也可连接到输入装置414,或者显示装置412也可以是输入装置(例如,触摸屏)。系统磁盘418也连接到I/O连接410。开关422提供I/O连接410与诸如网络适配器424和各种输出装置426的其它部件之间的连接。其他组件(未明确示出)也可连接到I/O连接410,所述其他组件包括USB或其他端口连接、CD驱动器、DVD驱动器、胶片记录装置等。可以使用任何合适的协议(例如,PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、HyperTransport(超传输)或任何其它总线或点对点通信协议)来实现互连图5中的各种组件的通信路径,并且不同装置之间的连接可以使用本领域已知的不同协议。
在一个实施例中,并行处理子系统420包括针对图形和视频处理优化的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统420包括针对通用处理优化的电路,同时保留底层计算架构,这将在本文中更详细地描述。在又一个实施例中,并行处理子系统420可以与一个或多个其它系统元件(诸如存储器连接406、CPU 402和I/O连接410)集成以形成片上系统(SoC)。
应了解,本文所示的系统是说明性的,并且变化和修改是可能的。可以根据需要修改连接拓扑(包括桥的数量和布置)、CPU 402的数量以及并行处理子系统420的数量。例如,在一些实施例中,系统存储器404直接而非通过连接连接到CPU 402,并且其它装置经由存储器连接406和CPU 402与系统存储器404通信。在其他替代性拓扑结构中,并行处理子系统420连接到I/O连接410或直接连接到CPU 402,而不是连接至存储器连接406。在其他实施例中,I/O连接410和存储器连接406可以集成到单个芯片中。大型实施例可以包括两个或更多个CPU402以及两个或更多个并行处理子系统420。本文所示的一些组件是任选的;例如,可以支持任何数量的外围设备。在一些实施例中,可以去掉开关422,并且网络适配器424和其它外围设备可以直接连接到I/O连接410。
图6示出了根据本发明的一个实施例的并行处理子系统420。如图所示,并行处理子系统420包括一个或多个并行处理单元(PPU)502,它们中的每一个都耦合到本地并行处理(PP)存储器506。一般来说,并行处理子系统包括U个PPU,其中U≥1。(本文中,类似对象的多个实例用识别对象的参数数字和根据需要识别实例的附加数字指示。)PPU 502和并行处理存储器506可以使用一个或多个集成电路器件(例如可编程处理器、专用集成电路(ASIC)或存储器装置)来实现,或者以任何其他技术上可行的方式实现。
在一些实施例中,并行处理子系统420中的一些或全部PPU 502是具有渲染管线的图形处理器,其可以被配置成经由存储器连接406和通信路径416与本地并行处理存储器506(其可以用作图形存储器,包括例如,常规帧缓存器)交互以存储并更新像素数据,将像素数据传递到显示装置412等,执行与由CPU 402和/或系统存储器404提供的图形数据生成像素数据有关的各种任务。在一些实施例中,并行处理子系统420可以包括作为图形处理器操作的一个或多个PPU 502以及用于通用计算的一个或多个其它PPU 502。PPU可以是相同的或不同的,并且每个PPU可以具有自己的专用并行处理存储器装置,或不具有专用并行处理存储器装置。一个或多个PPU 502可以将数据输出到显示装置412,或者每个PPU 502可以将数据输出到一个或多个显示装置412。
在操作中,CPU 402是计算机系统400的主处理器,其控制和协调其它系统组件的操作。具体来说,CPU 402发布控制PPU 502的操作的命令。在一些实施例中,CPU 402将每个PPU 502的命令流写入可以位于系统存储器404、并行处理存储器506或者可访问CPU 402和PPU 502两者的其它储存位置中的推送缓存器(pushbuffer)(图5或图6中未明确示出)。PPU502从推送缓存器读取命令流,然后相对于CPU 402的操作异步地执行命令。
现在再参考图6,每个PPU 502包括I/O(输入/输出)单元508,所述I/O(输入/输出)单元经由通信路径416与计算机系统400的其余部分通信,所述通信路径连接到存储器连接406(或者在一个替代性的实施例中,直接连接到CPU 402)。PPU 502与计算机系统400的其余部分的连接也可以改变。在一些实施例中,并行处理子系统420被实现为插件卡,其可以插入到计算机系统400的扩展槽中。在其它实施例中,PPU 502可以用总线连接(例如存储器连接406或I/O连接410)集成在单个芯片上。在其它实施例中,PPU 502的一些或所有元件可以与CPU 402一起集成在单个芯片上。
在一个实施例中,通信路径416是PCI-EXPRESS链路,其中专用通道分配给每个PPU502,如本领域已知的。也可以使用其他通信路径。I/O单元508生成用于在通信路径416上传输的包(或其它信号)并且还从通信路径416接收所有传入包(或其它信号),从而将传入包引导到PPU 502的适当部件。例如,与处理任务有关的命令可以被引导到主机接口510,而与存储器操作有关的命令(例如,从并行处理存储器506读取或写入到该并行处理存储器)可以被引导到存储器交叉单元(memory crossbar unit)518。主机接口510读取每个推送缓存器,并将由推送缓存器指定的工作输出到前端512。
每个PPU 502有利地实现高度并行的处理架构。如详细所示,PPU 502包括处理集群阵列516,其包括C个一般处理集群(GPC)514,其中,C≥1。每个GPC 514能够同时执行大量(例如,数百或数千个)线程,其中每个线程是程序的实例。在各种应用中,可以分配不同的GPC514以用于处理不同类型的程序或用于执行不同类型的计算。例如,在图形应用中,可分配第一组GPC 514以执行补丁镶嵌操作并产生补丁的初始拓扑,并且可分配第二组GPC 514以执行镶嵌着色,评估初始拓扑的补丁参数,并确定顶点位置和其它的每个顶点的属性。GPC 514的分配可以根据每种类型的程序或计算产生的工作量而变化。
GPC 514接收通过工作分配单元504执行的处理任务,所述工作分配单元从前端单元512接收限定处理任务的命令。处理任务包括待处理数据的索引,例如表面(补丁)数据、原始数据、顶点数据和/或像素数据,以及定义如何处理数据的状态参数和命令(例如,将要执行的程序)。工作分配单元504可以被配置成提取对应于任务的索引,或者工作分配单元504可以从前端512接收索引。前端512确保GPC 514在启动由推送缓存器指定的处理之前被配置为有效状态。
当PPU 502用于图形处理时,例如,每个补丁的处理工作量被划分成大致相等大小的任务,以使得能够将镶嵌处理分布到多个GPC 514。工作分配单元504可以被配置成以能够向多个GPC514提供任务以供处理的频率来产生任务。相比之下,在常规系统中,处理通常由单个处理引擎执行,而其它处理引擎保持空闲,等待单个处理引擎完成其任务,然后再开始他们的处理任务。在本发明的一些实施例中,GPC 514的多个部分被配置成执行不同类型的处理。例如,第一部分可以被配置成执行顶点着色和拓扑生成,第二部分可以被配置成执行镶嵌和几何着色,并且第三部分可以被配置成在像素空间中执行像素着色以产生经渲染的图像。由GPC 514产生的中间数据可存储在缓存器中以允许在GPC 514之间传输中间数据以进行进一步处理。
存储器接口520包括D个分区单元522,所述分区单元各自直接耦合到并行处理存储器506的一部分,其中D≥1。如图所示,分区单元522的数量大体上等于DRAM 524的数量。在其它实施例中,分区单元522的数量可以不等于存储器装置的数量。本领域技术人员将了解,DRAM524可以用其他合适的存储装置代替,并且通常可以是常规设计。因此,省略了详细描述。渲染目标,例如522-1帧缓存器或纹理图,可存储在DRAM 524上,从而允许分区单元522并行地编写每个渲染目标的部分以有效地使用并行处理存储器506的可用带宽。
GPC 514中的任一个可以处理将被写入并行处理存储器506内的任何DRAM 524的数据。交叉单元518被配置成将每个GPC 514的输出路由到任何分区单元522的输入或另一GPC 514以进行进一步处理。GPC 514通过交叉单元518与存储器接口520通信,从而读取或写入各种外部存储装置。在一个实施例中,交叉单元518具有与存储器接口520的连接以与I/O单元508通信以及与本地并行处理存储器506的连接,从而使得不同GPC 514内的处理核心能够与系统存储器404或对PPU 502非本地的其它存储器进行通信。在图6所示的实施例中,交叉单元518直接与I/O单元508连接。交叉单元518可以使用虚拟通道来在GPC 514和分区单元522之间分离流量流。
再次,GPC 514可以被编程以执行与各种各样应用有关的处理任务,包括但不限于:线性和非线性数据变换、视频和/或音频数据的滤波、建模操作(例如,应用物理学定律确定对象的位置、速度和其它属性)、图像渲染操作(例如,镶嵌着色器、顶点着色器、几何着色器和/或像素着色器程序)等。PPU 502可以将数据从系统存储器404和/或本地并行处理存储器506传输到内部(片上)存储器中,处理数据,并将结果数据写回到系统存储器404和/或本地并行处理存储器506,其中这些数据可以由包括CPU 402或另一个并行处理子系统420的其他系统组件访问。
PPU 502可以设置有任何数量的本地并行处理存储器506(不包括本地存储器),并且可以以任何组合使用本地存储器和系统存储器。例如,PPU 502可以是统一存储器架构(UMA)实施例中的图形处理器。在此类实施例中,将提供很少专用图形(并行处理)存储器或根本不提供,并且PPU 502将唯一或几乎唯一地使用系统存储器。在UMA实施例中,PPU 502可以集成到桥芯片或处理器芯片中,或者作为分离芯片提供,其具有通过桥芯片或其它通信手段将PPU502连接到系统存储器的高速链路(例如,PCI-EXPRESS)。
如上所述,任何数量的PPU 502都可以包含在并行处理子系统420中。例如,多个PPU 502可以设置在单个插件卡上,或者多个插件卡可以连接到通信路径416,或者一个或多个PPU 502可以集成到桥芯片中。多PPU系统中的PPU 502可以彼此相同或不同。例如,不同的PPU 502可以具有不同数量的处理核心、不同数量的本地并行处理存储器等。在存在多个PPU 502的情况下,可并行操作那些PPU以比单个PPU 502可能获得的更高的吞吐量处理数据。包括一个或多个PPU 502的系统可以各种配置和形状因数,包括台式电脑、膝上型计算机或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等实现。
示例性实施例可以包括超出所示装置和网络之外的附加装置和网络。此外,描述为由一个装置执行的功能可以分布到两个或更多个装置上并由两个或更多个装置执行。多个装置也可以组合成单个装置,其可以执行组合后装置的功能。
本文中描述的各种参与者和元件可以操作一个或多个计算机设备以促进文中描述的功能。上文描述的附图中的任何元件,包括任何服务器、用户装置或数据库都可以使用任何合适数量的子系统来促进文中描述的功能。
可以使用任何合适的计算机语言(诸如例如Java、C++或Perl)使用例如常规的或面向对象的技术将本申请中描述的任何软件组件或功能实施为可以由至少一个处理器执行的软件代码或计算机可读指令。
软件代码可以作为一系列指令或命令存储在非暂时性计算机可读介质上,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁介质(诸如硬盘或软盘)或光介质(诸如CD-ROM)。任何这样的计算机可读介质可以驻留在单个计算设备上或驻存在单个计算设备内,并且可以存在于系统或网络内的不同计算设备上或内。
明显地,前述实施例仅仅是用于清楚地描述本申请而示出的示例,而不是限制其实施方式。对于所属领域的技术人员,可基于前述描述来作出其它不同形式的各种改变和修改。不必要也不可能在本文中详尽地列出所有实施方式。然而,从前述描述导出的任何明显变化或修改旨在涵盖在本申请的保护范围内。
示例性实施例还可以为技术挑战提供至少一种技术方案。参考附图中描述和/或示出的并且在以下描述中详细描述的非限制性实施例和示例来更全面地解释本公开以及其各种特征和有利细节。应注意,附图中示出的特征未必按比例绘制,且一个实施例的特征可与技术人员将认识到的其它实施例一起使用,即使本文未明确陈述。可以省略对公知组件和处理技术的描述,以免不必要地模糊本公开的实施例。本文使用的示例仅旨在促进理解可实践本公开的方式并且进一步使本领域技术人员能够实践本公开的实施例。因此,本文的示例和实施例不应被解释为限制本公开的范围。此外,应注意,在附图的若干视图中,相同的附图标记表示类似的部件。
除非另外明确指明,否则如本公开中所使用的术语“包括”、“由.....组成”及其变体意指“包括但不限于”。
除非另外明确指明,否则如本公开中所使用的术语“一个”、“一种”和“该/所述”意指“一个或多个”。
尽管可以按先后顺序描述过程步骤、方法步骤、算法等等,但是可以将这样的过程、方法和算法配置成以替代顺序工作。换句话说,可以描述的步骤的任何次序或顺序不一定表示要求以该顺序执行步骤。本文中描述的过程、方法或算法的步骤可以按任何实际顺序执行。此外,一些步骤可以同时执行。
当本文描述单个装置或制品时,显而易见的是,多于一个装置或制品可代替单个装置或制品使用。类似地,在本文中描述多于一个装置或制品的情况下,显而易见的是,单个装置或制品可代替多于一个装置或制品使用。装置的功能或装置的特征可以替代地由一个或多个未被明确描述为具有此类功能或特征的其它装置实现。
在各个实施例中,硬件模块可以机械方式或电子方式实现。例如,硬件模块可以包括专用电路或逻辑,所述专用电路或逻辑被永久配置成(例如,作为专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))执行某些操作。硬件模块还可包括可编程逻辑或电路(例如,包含在通用处理器或其它可编程处理器中),其由软件临时配置以执行某些操作。应当理解,在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中机械地实现硬件模块的决定可以由成本和时间考虑来驱动。
本文中描述的示例方法的各种操作可至少部分地由一个或多个处理器执行,所述一个或多个处理器是(例如由软件)临时配置或者永久配置的以执行相关操作。不管是临时还是永久配置,这些处理器可构成处理器实现的模块,其操作以执行一个或多个操作或功能。本文中所提到的模块在一些示例性实施例中可以包括处理器实现的模块。
类似地,本文中描述的方法或例程可以至少部分地是处理器实现的。例如,方法的操作中的至少一些可由一个或多个处理器或处理器实现的硬件模块执行。某些操作的性能可分布在不仅驻存在单个机器内还部署在许多机器上的一个或多个处理器中。在一些示例性实施例中,处理器或若干处理器可位于单个位置(例如,在家庭环境、办公室环境内或作为服务器场),而在其它实施例中,处理器可分布在多个位置。
除非另有特别说明,否则本文中使用诸如“处理”、“计算”、“估计”、“确定”、“呈现”、“显示”等词语的论述可以指在一个或多个存储器(例如,易失性存储器、非易失性存储器或其组合)、寄存器或接收、存储、传输或显示信息的其它机器部件内操纵或转换表示为物理(例如,电子、磁或光)量的数据的机器(例如,计算机)的动作或过程。
虽然已经就示例性实施例描述了本公开,但本领域的技术人员将认识到,本公开可用落在所附权利要求书的精神和范围内的修改实践。上文给出的这些示例仅仅是说明性的,并且不意味着是本公开的所有可能设计、实施例、应用或修改的详尽列表。
总的来说,具有多个晶体管的集成电路提供了在半导体衬底上制造更复杂电路的能力,所述多个晶体管中每一个可具有栅极电介质性质独立于相邻晶体管的栅极电介质性质。制造这种集成电路结构的方法进一步提高了集成电路设计的灵活性。尽管已关于某些优选实施例展示和描述了本发明,但显而易见的是,在阅读和理解本说明书后,所属领域的技术人员将会想到等同物和修改。本发明包括所有此类等同物和修改,并且仅受以下权利要求书的范围的限制。
Claims (16)
1.一种用于从一组标量算术逻辑单元(ALU)配置可变数据宽度输出的计算机实现的方法,所述计算机实现的方法包括:
识别图形处理子系统中的一组四个32位标量ALU;
识别所述一组四个32位标量ALU的输入;
将控制器连接到所述一组四个32位标量ALU;
确定所述输入中的指令集架构(ISA)中的标记是否指定不同于32位的数据宽度;以及
基于由所述标记指定的数据宽度生成输出。
2.根据权利要求1所述的计算机实现的方法,其中,所述输入包括密码算法。
3.根据权利要求1所述的计算机实现的方法,其中,所述标记包括在Fmt4字段中的标识。
4.根据权利要求1所述的计算机实现的方法,其中,所述标记包括ADD.i64。
5.根据权利要求1所述的计算机实现的方法,其中,所述控制器包括片上存储器。
6.一种用于从一组标量算术逻辑单元(ALU)配置可变数据宽度输出的图形处理子系统,所述图形处理子系统包括:
图形处理单元(GPU),所述图形处理单元可操作以:
识别一组四个32位标量ALU;
识别所述一组四个32位标量ALU的输入;
将控制器连接到所述一组四个32位标量ALU;
确定所述输入中的指令集架构(ISA)中的标记是否指定不同于32位的数据格式;以及
基于由所述标记指定的数据格式生成输出。
7.根据权利要求6所述的图形处理子系统,其中,所述输入包括密码算法。
8.根据权利要求6所述的图形处理子系统,其中,所述标记包括在Fmt4字段中的标识。
9.根据权利要求6所述的图形处理子系统,其中,所述标记包括ADD.i64。
10.根据权利要求6所述的图形处理子系统,其中,所述控制器包括片上存储器。
11.一种用于从一组标量算术逻辑单元(ALU)配置可变数据宽度输出的系统,所述系统包括:
存储器,所述存储器被配置成存储由输入应用程序执行的指令;
图形处理单元(GPU),所述图形处理单元被配置成执行所述输入应用程序,其中所述GPU被配置成:
识别一组四个32位标量ALU;
识别所述一组四个32位标量ALU的输入;
将控制器连接到所述一组四个32位标量ALU;
确定所述输入中的指令集架构(ISA)中的标记是否指定不同于32位的数据宽度;以及
基于由所述标记指定的数据宽度生成输出。
12.根据权利要求11所述的系统,其中,所述输入包括密码算法。
13.根据权利要求11所述的系统,其中,所述标记包括在Fmt4字段中的标识。
14.根据权利要求11所述的系统,其中,所述标记包括ADD.i64。
15.根据权利要求11所述的系统,其中,所述控制器包括片上存储器。
16.根据权利要求11所述的系统,其中,所述输入应用程序包括密码应用程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/281,086 US20200264873A1 (en) | 2019-02-20 | 2019-02-20 | Scalar unit with high performance in crypto operation |
USUS16/281086 | 2019-02-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111290791A true CN111290791A (zh) | 2020-06-16 |
Family
ID=71029247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010099697.8A Pending CN111290791A (zh) | 2019-02-20 | 2020-02-18 | 具有高性能密码操作的标量单元 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200264873A1 (zh) |
CN (1) | CN111290791A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760197A (zh) * | 2021-11-03 | 2021-12-07 | 中科声龙科技发展(北京)有限公司 | 基于equihash算法的数据存储方法、装置及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210200549A1 (en) * | 2019-12-27 | 2021-07-01 | Intel Corporation | Systems, apparatuses, and methods for 512-bit operations |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4748585A (en) * | 1985-12-26 | 1988-05-31 | Chiarulli Donald M | Processor utilizing reconfigurable process segments to accomodate data word length |
JPH07239780A (ja) * | 1994-01-06 | 1995-09-12 | Motohiro Kurisu | 1クロック可変長命令実行処理型命令読み込み電子計 算機 |
US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
CN101449239A (zh) * | 2006-05-25 | 2009-06-03 | 高通股份有限公司 | 具有算术及初等函数单元的图形处理器 |
CN103559161A (zh) * | 2013-09-24 | 2014-02-05 | 北京时代民芯科技有限公司 | 一种用于fpga配置的总线多宽度转换电路 |
-
2019
- 2019-02-20 US US16/281,086 patent/US20200264873A1/en not_active Abandoned
-
2020
- 2020-02-18 CN CN202010099697.8A patent/CN111290791A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4748585A (en) * | 1985-12-26 | 1988-05-31 | Chiarulli Donald M | Processor utilizing reconfigurable process segments to accomodate data word length |
JPH07239780A (ja) * | 1994-01-06 | 1995-09-12 | Motohiro Kurisu | 1クロック可変長命令実行処理型命令読み込み電子計 算機 |
US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
CN101449239A (zh) * | 2006-05-25 | 2009-06-03 | 高通股份有限公司 | 具有算术及初等函数单元的图形处理器 |
CN103559161A (zh) * | 2013-09-24 | 2014-02-05 | 北京时代民芯科技有限公司 | 一种用于fpga配置的总线多宽度转换电路 |
Non-Patent Citations (2)
Title |
---|
CHARLES PRICE: "MIPS IV Instruction Set", 《百度文库》 * |
MIPS TECHNOLOGIES: "MIPS32® Architecture For Programmers Volume I: Introduction to the MIPS32®Architecture", 《百度文库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760197A (zh) * | 2021-11-03 | 2021-12-07 | 中科声龙科技发展(北京)有限公司 | 基于equihash算法的数据存储方法、装置及系统 |
CN113760197B (zh) * | 2021-11-03 | 2022-02-08 | 中科声龙科技发展(北京)有限公司 | 基于equihash算法的数据存储方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200264873A1 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830197B2 (en) | Cooperative thread array reduction and scan operations | |
US8817031B2 (en) | Distributed stream output in a parallel processing unit | |
JP5127815B2 (ja) | Cpuトラフィックを特殊とマークすることによるデッドロックの回避 | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US8255443B2 (en) | Execution unit with inline pseudorandom number generator | |
US8990833B2 (en) | Indirect inter-thread communication using a shared pool of inboxes | |
US8619087B2 (en) | Inter-shader attribute buffer optimization | |
US8760455B2 (en) | Restart index that sets a topology | |
US20110242118A1 (en) | State Objects for Specifying Dynamic State | |
US9589310B2 (en) | Methods to facilitate primitive batching | |
CN108830777B (zh) | 用于全面同步执行线程的技术 | |
US20110072249A1 (en) | Unanimous branch instructions in a parallel thread processor | |
US20140176588A1 (en) | Technique for storing shared vertices | |
US9418616B2 (en) | Technique for storing shared vertices | |
US20110078690A1 (en) | Opcode-Specified Predicatable Warp Post-Synchronization | |
US8752018B2 (en) | Emitting coherent output from multiple threads for printf | |
US9207919B2 (en) | System, method, and computer program product for bulk synchronous binary program translation and optimization | |
CN103885903A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN111290791A (zh) | 具有高性能密码操作的标量单元 | |
US8427493B2 (en) | Draw commands with built-in begin/end | |
CN111324439A (zh) | 用于向量单元的密码引擎和调度方法 | |
CN111258650A (zh) | 用于加速延迟敏感算法的恒定标量寄存器架构 | |
CN111240745A (zh) | 交叉执行的增强型标量向量双管线架构 | |
US8948167B2 (en) | System and method for using domains to identify dependent and independent operations | |
US9147224B2 (en) | Method for handling state transitions in a network of virtual processing nodes |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200616 |
|
RJ01 | Rejection of invention patent application after publication |