CN111324439A - 用于向量单元的密码引擎和调度方法 - Google Patents

用于向量单元的密码引擎和调度方法 Download PDF

Info

Publication number
CN111324439A
CN111324439A CN202010099986.8A CN202010099986A CN111324439A CN 111324439 A CN111324439 A CN 111324439A CN 202010099986 A CN202010099986 A CN 202010099986A CN 111324439 A CN111324439 A CN 111324439A
Authority
CN
China
Prior art keywords
identifying
algorithms
memory
unit
memory module
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
CN202010099986.8A
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.)
Shanghai Tiantian Smart Core Semiconductor Co ltd
Original Assignee
Shanghai Tiantian Smart Core Semiconductor Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Tiantian Smart Core Semiconductor Co ltd filed Critical Shanghai Tiantian Smart Core Semiconductor Co ltd
Publication of CN111324439A publication Critical patent/CN111324439A/zh
Pending legal-status Critical Current

Links

Images

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

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

Abstract

本发明的实施例可以通过用于配置密码存储器引擎的系统提供技术解决方案。存储器被配置成存储由密码应用程序执行的指令。图形处理单元(GPU)被配置成执行所述密码应用程序,其中所述GPU被配置成由所述密码应用程序识别一组常用算法。所述识别操作包括识别针对所述一组通常使用的算法的一个或多个输入参数。所识别的一组常用算法被编译并存储为虚拟存储器模块。将具有经编译的一组常用算法的虚拟存储器模块提供给密码应用程序。

Description

用于向量单元的密码引擎和调度方法
技术领域
本发明的实施例大体上涉及提供对向量单元的增强的调度。
背景技术
诸如中央处理单元(CPU)或图形处理单元(GPU)等的处理器中的向量处理执行指令集,该指令集包含对被称为向量的一维数据阵列进行操作的指令。这与标量处理器形成对比,其指令对单个数据项进行操作。
向量指令通常在连续周期中对每个数据元素执行操作。指令中的向量功能单元是管线型的。此外,每个管线级对一段数据操作,并且没有向量依赖性(在内部和向量之间)。
然而,存在缺点,尤其是在向量操作不规则时。同时,如果存储器操作平衡未被监测和维护,并且数据未正确地或适当地映射到适当的存储库,则存储器存取可能遇到瓶颈制约。
对于标量处理,其通常被分类为SISD处理(单指令,单数据)。此方法的另一变化是单指令、多线程(SIMT)处理。传统的SIMT多线程处理器通过将线程组织成组并在单独的处理管线、标量或向量管线上执行每个线程来提供多个线程的并行执行。在单个周期中调度由一个组中的线程执行的指令。生成处理管线控制信号,使得当线程跨越处理管线的各级时,组中的所有线程执行一组类似的操作。例如,一组中的所有线程从寄存器文件读取源操作数,执行处理单元中的指定算术运算,并将结果写回到寄存器文件。当在处理器中支持多个语境时,SIMT需要额外存储器用于复制同一内核中使用的恒定值。因而,当从主存储器或缓存加载不同恒定值时,引入等待时间开销。
由于向量处理在并行处理中的运行优势,近年来密码术已利用向量处理的优点。然而,通常基于密码算法和指令的密码操作对于某些应用程序可能太慢。因此,本发明的实施例试图解决或应对上文所指出的一个或多个技术问题。
发明内容
本发明的实施例可通过针对向量处理单元或向量处理器设计存储器引擎而提供技术解决方案,所述存储器引擎可加速密码应用程序中代表计算的性能。例如,本发明的实施例可以创建存储器引擎,所述存储器引擎包含一组最常用的算法,并且其包括提前针对应用程序的配置,使得密码应用程序可以配置它们。在一个方面中,每个算法可独立地在存储器引擎中运行。在另一个实施例中,存储器引擎与应用程序相接,作为存储器模块,使得初始数据被移动到存储器引擎的存储空间,然后将命令发送到该引擎以开始操作。此外,本发明的各方面配置存储器引擎以使其中的每个密码算法在不同时钟周期开始,且其中每一个算法可需要不同的周期数目来完成。为了实现此目的,使用编译器和硬件控制器确保只有一个密码操作在一个时钟周期内完成/交付。
附图说明
本领域的普通技术人员可以了解,为了简单和清晰起见,示出了附图中的元件,因此为了避免混淆本发明的方面并未示出所有的连接和选项。例如,在商业上可行的实施例中有用或必需的常见但易于理解的元件通常不进行描绘,以便有助于较少阻挡对本公开的这些各种实施例的观察。将进一步了解,可以以特定的发生次序描述或描绘某些动作和/或步骤,而所属领域的技术人员将理解,实际上不需要关于序列的此类特异性。还应当理解,本文所用的术语和表达将关于其各自的相应探究和研究领域进行限定,除非本文中另外阐述了特定含义。
图1是图示根据本发明的一个实施例的专用存储器引擎的图。
图2是图示根据本发明的一个实施例的用于创建专用存储器引擎的方法的流程图。
图3是图示被配置成实施本发明的一个或多个方面的计算机系统的框图。
图4是根据本发明的一个实施例的用于图3的计算机系统的并联处理子系统的框图。
具体实施方式
现在可以参考附图更全面地描述本发明,附图形成本发明的一部分,并且以图示的方式示出了可以实施本发明的具体示例性实施例。可以在理解本公开是对一个或多个发明的原理的举例说明的情况下呈现这些图示和示例性实施例,并且可能不旨在将任何一个发明限制于所示的实施例。本发明可以以许多不同形式实现,并且不应解释为限于本文所阐述的实施例;相反,提供这些实施例,使得本公开将是全面的完整的,并将本发明的范围完全传达给本领域的技术人员。此外,本发明可以体现为方法、系统、计算机可读介质、设备或装置。因此,本发明可采取完全硬件实施例、完全软件实施例或组合软件和硬件方面的实施例的形式。因此,以下详细描述不应以限制性意义理解。
一般来说,计算核心(参见下面的GPC 514)利用可编程顶点着色器、几何着色器和像素着色器。这些操作不是将这些组件的功能实现为具有不同的设计和指令集的单独的固定功能着色器单元,而是由具有统一指令集的执行单元池执行。这些执行单元中的每一个可以设计相同,并且可配置用于程序化操作。在一个实施例中,每个执行单元能够同时进行多线程操作。由于各种着色任务可以由顶点着色器、几何着色器和像素着色器生成,因此它们可以被传递到执行单元以被执行。
在生成单个任务时,执行控制单元(可以是下文GPC 514的一部分)处理将这些任务分配给各种执行单元中的可用线程的操作。当完成任务时,执行控制单元进一步管理相关线程的释放。就这一点而言,执行控制单元负责将顶点着色器、几何着色器和像素着色器任务分配给各种执行单元的线程,并且还执行任务和线程的相关“记帐(bookkeeping)”。具体来说,执行控制单元为所有执行单元维护线程和存储器的资源表(未具体说明)。执行控制单元具体管理哪些线程已经被分配任务并且被占用,在线程终止后已经释放了哪些线程,占用了多少公用寄存器文件存储寄存器,以及每个执行单元有多少自由空间。
线程控制器也可以设置在每个执行单元内部,并且可以负责调度、管理或标记每个线程为活动的(例如,执行的)或可用的。
根据一个实施例,标量寄存器文件可以连接到线程控制器和/或与线程任务接口连接。线程控制器为整个执行单元(例如,GPC 514)提供控制功能,其中功能包括每个线程的管理和决策功能,例如确定将如何执行线程。
现参考图1,该图图示了根据本发明的一个实施例的执行单元200中的专用存储器引擎202。例如,执行单元200可以是图3中所示的执行方式。在此实例中,执行单元200可连接或耦合到其它硬件,例如显示器、存储器单元、输入和输出连接或桥、其它执行单元等。在一个实施例中,用于密码的常用算法包括散列算法、加密算法等。在另一个实例中,散列或加密算法包括SHA-256、MD5、HMAC、Ethash、Scrypt、Equihash、Cryptonight、X11.DES/3DES或TripleDES、Blowfish、AES、Twofish、IDEA和RSA Security。
例如,散列是将数据转换成某一范围内的数字的函数。散列具有其输出基本上是不可预测(在给定范围内)的特性。在一个实例中,用于加密货币的散列函数,例如,挖掘操作可能需要执行或应用SHA-256两次。因此,在任何给定的散列算法中,将存在输入和固定大小的位串的大小,输入有时被称为消息,其表示要求散列的数据。本发明的各方面使存储器引擎202能够将消息和位串的大小作为可配置参数提供给调用散列算法的任何给定应用程序。
例如,如图1所示,执行单元200可以包括用于从三个源接收输入的存储器引擎202,这三个源是:向量寄存器文件204、加载存储单元(LSU)206和标量单元或标量寄存器文件208。在一个实例中,向量寄存器文件204可以组织成八(8)个32位寄存器的四个存储体。每个寄存器可以存储单精度浮点数或整数。任何连续的寄存器对[R2n+1]:[R2n]可存储双精度浮点数。因为加载和存储操作不修改数据,所以不使用浮点值的另一应用程序可使用向量浮点过程寄存器作为辅助数据存储器。
在另一实例中,向量寄存器文件204可被配置为四个环形缓冲器,以在需要高数据吞吐量(例如滤波和图形变换)的应用中的短向量指令中使用。对于短向量指令,寄存器寻址在每个存储体中是环形的。由于加载和存储操作不循环,因此有可能通过单个指令加载或存储多个存储体,直到整个寄存器文件。短向量操作遵守某些规则,这些规则指定变元列表中的寄存器指定环形缓冲器或单标量寄存器的条件。
在一个实施例中,由于存储器引擎202可以被当作应用程序的存储单元(例如,图4中的存储器506),并且其可以接受LSU 206作为输入,所以存储器引擎202可以从LSU 206接收加载和存储操作,作为存储器模块。
例如,LSU 206可以是专用执行单元,其负责执行所有加载和存储指令,生成加载和存储操作的虚拟地址,并从存储器加载数据或者将其从寄存器存储回到存储器。LSU通常包括充当存储器指令的等待区的队列,LSU自身独立于其它处理器单元操作。LSU也可用于向量处理。一些LSU也能够执行简单的定点和/或整数操作。
在另一个实施例中,标量单元208可以包括来自标量寄存器文件的标量值。例如,标量寄存器文件的值可以响应于在存储器引擎202中执行一个或多个常用算法所需的数据。
在一个实施例中,存储器引擎202中的算法可由与诸如GPU的处理器相关联的控制器预编译和调度。此类实施例确保不存在存储器引擎和向量算术逻辑单元的两个结果。
在一个实例中,存储器引擎还可以用于其它算法,例如串行化算法。在简单和示范性串行化算法中,可以包括以下程序结构(用JAVA编写):
Figure BDA0002386542700000041
Figure BDA0002386542700000051
在此示例中,串行化算法可以:
写出与实例相关联的类的元数据;
递归写出超级类的描述,直到找到java.lang.object;
一旦它结束编写元数据信息,它就从与实例相关的实际数据开始。但是此时,它从最高超级类开始;以及
将与实例相关联的数据从最小超级类递归地编写到最深层派生类。
应当理解,在不脱离本发明的实施例的范围或精神的情况下,以其它编程语言编写的串行化算法可以表现出类似的特征。
在另一个实施例中,存储器引擎202可以提供存储的算法以与LSU 214相接,作为虚拟存储器模块来执行存储器存储类似的能力,诸如图4中存储器506中的那些能力。例如,在执行单元200可以执行存储器引擎202、标量函数单元(SFU)210和向量算术逻辑单元(ALU)212之前,执行单元200可以加载和存储执行指令或算法需要或要求的数据。由于存储器引擎202可存储经编译算法,因此存储器引擎202可被视为用于特定应用程序的虚拟存储器模块。在该方面,特定应用程序可以通过传递算法所需的参数来调用存储在存储器引擎202中的算法。由于存储器引擎202中的算法已被预编译且准备好执行,因此在执行存储器引擎202中的算法产生的输出可被加载到LSU 214时,执行单元200可更快地执行特定应用程序。类似地,SFU 210和向量ALU 212的输出可传递到向量寄存器文件216。
在存储器引擎202的示范性使用中,可以包括处理密码操作,其中散列算法可能常用或运行功能。由于存储器引擎202可以存储预编译算法,因此存储器引擎202可以更快地加载或处理密码操作。因此,存储器引擎202可以被认为是专用于处理散列算法的密码引擎。
应当理解,存储器引擎202可以用于处理除了散列算法、串行化算法之外的算法、功能、指令等。
现在参考图2,流程图示出了根据本发明的一个实施例用于配置存储器引擎或密码存储器引擎的方法。在222处,识别一组常用算法。例如,常用算法可以包括散列算法。在一个实施例中,识别操作包括识别针对一组常用算法的一个或多个输入参数。在224处,编译所识别的一组常用算法。在226处,将经编译的一组常用算法存储为虚拟存储器模块。例如,经编译的一组常用算法作为单元存储,而不是存储在存储器的各个部分。在228处,将具有经编译的一组常用算法的虚拟存储器模块提供给应用程序。在一个实例中,虚拟存储器模块可以与应用程序相接。在另一实例中,应用程序可以包括密码应用程序。
图3是图示被配置成实施本发明的一个或多个方面的计算机系统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或任何其它总线或点对点通信协议)来实现互连图3中的各种组件的通信路径,不同装置之间的连接可以使用本领域已知的不同协议。
在一个实施例中,并行处理子系统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。
图4示出了根据本发明的一个实施例的并行处理子系统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和PPU502两者可访问的另一储存位置中的推送缓存器(图3或图4中未明确示出)。PPU 502从推送缓存器读取命令流,然后相对于CPU 402的操作异步地执行命令。
现在再参考图4,每个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非本地的其它存储器进行通信。在图4所示的实施例中,交叉单元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 (19)

1.一种用于配置存储器引擎的计算机实施的方法,所述方法包括:
识别一组常用算法,其中识别操作包括识别针对所述一组常用算法的一个或多个输入参数;
编译所识别的一组常用算法;
将经编译的一组常用算法存储为虚拟存储器模块;以及
向应用程序提供具有经编译的一组常用算法的所述虚拟存储器模块。
2.根据权利要求1所述的计算机实施的方法,其中,识别所述一个或多个输入参数包括从向量寄存器文件接收数据。
3.根据权利要求1所述的计算机实施的方法,其中,识别所述一个或多个输入参数包括从加载存储单元接收数据。
4.根据权利要求1所述的计算机实施的方法,其中,识别所述一个或多个输入参数包括从标量单元接收数据。
5.根据权利要求1所述的计算机实施的方法,还包括将所述虚拟存储器模块的第一输出提供至另一个加载存储单元。
6.根据权利要求1所述的计算机实施的方法,其中,将所述虚拟存储器模块连同标量函数单元与向量算术逻辑单元(ALU)一起提供给密码应用程序。
7.一种用于配置存储器引擎的图形处理子系统,所述图形处理子系统包括:
图形处理单元(GPU),所述图形处理单元可操作以:
识别一组常用算法,其中识别操作包括识别针对所述一组常用算法的一个或多个输入参数;
编译所识别的一组常用算法;
将经编译的一组常用算法存储为虚拟存储器模块;以及
向应用程序提供具有经编译的一组常用算法的所述虚拟存储器模块。
8.根据权利要求7所述的图形处理子系统,其中,识别所述一个或多个输入参数包括从向量寄存器文件接收数据。
9.根据权利要求7所述的图形处理子系统,其中,识别所述一个或多个输入参数包括从加载存储单元接收数据。
10.根据权利要求7所述的图形处理子系统,其中,识别所述一个或多个输入参数包括从标量单元接收数据。
11.根据权利要求7所述的图形处理子系统,还包括将所述虚拟存储器模块的第一输出提供至另一个加载存储单元。
12.根据权利要求7所述的图形处理子系统,其中,将所述虚拟存储器模块连同标量函数单元与向量算术逻辑单元(ALU)一起提供给密码应用程序。
13.一种用于配置密码存储器引擎的系统,所述系统包括:
存储器,所述存储器被配置成存储用于由密码应用程序执行的指令;
图形处理单元(GPU),所述图形处理单元被配置成执行所述密码应用程序,其中所述GPU被配置成:
由所述密码应用程序识别一组常用算法,其中识别操作包括识别针对所述一组常用算法的一个或多个输入参数;
编译所识别的一组常用算法;
将经编译的一组常用算法存储为虚拟存储器模块;以及
向所述密码应用程序提供具有经编译的一组常用算法的所述虚拟存储器模块。
14.根据权利要求13所述的系统,其中,识别所述一个或多个输入参数包括从向量寄存器文件接收数据。
15.根据权利要求13所述的系统,其中,识别所述一个或多个输入参数包括从加载存储单元接收数据。
16.根据权利要求13所述的系统,其中,识别所述一个或多个输入参数包括从标量单元接收数据。
17.根据权利要求13所述的系统,还包括将所述虚拟存储器模块的第一输出提供至另一个加载存储单元。
18.根据权利要求13所述的系统,其中,将所述虚拟存储器模块连同标量函数单元与向量算术逻辑单元(ALU)一起提供给密码应用程序。
19.根据权利要求13所述的系统,其中,所述一组常用算法包括散列算法。
CN202010099986.8A 2019-02-20 2020-02-18 用于向量单元的密码引擎和调度方法 Pending CN111324439A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/281,056 US20200264921A1 (en) 2019-02-20 2019-02-20 Crypto engine and scheduling method for vector unit
USUS16/281056 2019-02-20

Publications (1)

Publication Number Publication Date
CN111324439A true CN111324439A (zh) 2020-06-23

Family

ID=71171042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010099986.8A Pending CN111324439A (zh) 2019-02-20 2020-02-18 用于向量单元的密码引擎和调度方法

Country Status (2)

Country Link
US (1) US20200264921A1 (zh)
CN (1) CN111324439A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116248414A (zh) * 2023-05-09 2023-06-09 杭州海康威视数字技术股份有限公司 基于虚拟化硬件实现密码加速的方法、装置及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11349639B2 (en) 2018-12-28 2022-05-31 ePIC Blockchain Technologies Inc. Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231585A (zh) * 2007-01-26 2008-07-30 辉达公司 用于并行线程计算的虚拟结构和指令集
US20100149193A1 (en) * 2008-12-11 2010-06-17 Yu Meng-Shiue Method And System For Enabling Managed Code-Based Application Program To Access Graphics Processing Unit
CN103907089A (zh) * 2011-04-07 2014-07-02 威盛电子股份有限公司 一种乱序执行微处理器中的有条件加载指令
US20170161065A1 (en) * 2012-10-20 2017-06-08 Google Inc. Generating Code Coverage Data for use with a Computing Device and System
CN107347253A (zh) * 2015-02-25 2017-11-14 米雷普里卡技术有限责任公司 用于专用处理器的硬件指令生成单元

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120592A1 (en) * 2006-10-31 2008-05-22 Tanguay Donald O Middleware framework
US20130332434A1 (en) * 2012-06-11 2013-12-12 Actian Netherlands, B.V. System and method using partial just-in-time complation to resolve memory access pattern problems in hash table probing
US10860709B2 (en) * 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231585A (zh) * 2007-01-26 2008-07-30 辉达公司 用于并行线程计算的虚拟结构和指令集
US20100149193A1 (en) * 2008-12-11 2010-06-17 Yu Meng-Shiue Method And System For Enabling Managed Code-Based Application Program To Access Graphics Processing Unit
CN103907089A (zh) * 2011-04-07 2014-07-02 威盛电子股份有限公司 一种乱序执行微处理器中的有条件加载指令
US20170161065A1 (en) * 2012-10-20 2017-06-08 Google Inc. Generating Code Coverage Data for use with a Computing Device and System
CN107347253A (zh) * 2015-02-25 2017-11-14 米雷普里卡技术有限责任公司 用于专用处理器的硬件指令生成单元

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116248414A (zh) * 2023-05-09 2023-06-09 杭州海康威视数字技术股份有限公司 基于虚拟化硬件实现密码加速的方法、装置及电子设备
CN116248414B (zh) * 2023-05-09 2023-07-25 杭州海康威视数字技术股份有限公司 基于虚拟化硬件实现密码加速的方法、装置及电子设备

Also Published As

Publication number Publication date
US20200264921A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
US9830197B2 (en) Cooperative thread array reduction and scan operations
US10067768B2 (en) Execution of divergent threads using a convergence barrier
US9928034B2 (en) Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences
JP5035277B2 (ja) 共有メモリに対するアトミックな更新を可能にするロックメカニズム
US8108659B1 (en) Controlling access to memory resources shared among parallel synchronizable threads
US8615646B2 (en) Unanimous branch instructions in a parallel thread processor
US10346212B2 (en) Approach for a configurable phase-based priority scheduler
US9612811B2 (en) Confluence analysis and loop fast-forwarding for improving SIMD execution efficiency
US8619087B2 (en) Inter-shader attribute buffer optimization
US9606808B2 (en) Method and system for resolving thread divergences
TWI489392B (zh) 多個應用程式分享的圖形處理單元
US9207919B2 (en) System, method, and computer program product for bulk synchronous binary program translation and optimization
US9645802B2 (en) Technique for grouping instructions into independent strands
US8195858B1 (en) Managing conflicts on shared L2 bus
US9513923B2 (en) System and method for context migration across CPU threads
US20120204014A1 (en) Systems and Methods for Improving Divergent Conditional Branches
CN111324439A (zh) 用于向量单元的密码引擎和调度方法
US8321618B1 (en) Managing conflicts on shared L2 bus
CN111290791A (zh) 具有高性能密码操作的标量单元
CN111240745A (zh) 交叉执行的增强型标量向量双管线架构
CN111258650A (zh) 用于加速延迟敏感算法的恒定标量寄存器架构
US20200264781A1 (en) Location aware memory with variable latency for accelerating serialized algorithm
US9147224B2 (en) Method for handling state transitions in a network of virtual processing nodes
US8976185B2 (en) Method for handling state transitions in a network of virtual processing nodes
US8948167B2 (en) System and method for using domains to identify dependent and independent operations

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