CN101932996A - 具有降低功耗的并行处理计算机系统及提供该系统的方法 - Google Patents

具有降低功耗的并行处理计算机系统及提供该系统的方法 Download PDF

Info

Publication number
CN101932996A
CN101932996A CN2008801178979A CN200880117897A CN101932996A CN 101932996 A CN101932996 A CN 101932996A CN 2008801178979 A CN2008801178979 A CN 2008801178979A CN 200880117897 A CN200880117897 A CN 200880117897A CN 101932996 A CN101932996 A CN 101932996A
Authority
CN
China
Prior art keywords
processor
instruction
virtual
storer
virtual processor
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.)
Granted
Application number
CN2008801178979A
Other languages
English (en)
Other versions
CN101932996B (zh
Inventor
A·C·费尔奇
R·H·格兰杰
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.)
Cognitive Electronics Inc
Original Assignee
Cognitive Electronics Inc
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 Cognitive Electronics Inc filed Critical Cognitive Electronics Inc
Publication of CN101932996A publication Critical patent/CN101932996A/zh
Application granted granted Critical
Publication of CN101932996B publication Critical patent/CN101932996B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种计算机系统架构及提供该架构的方法,该架构可以包括网页搜索节点,网页搜索节点包括网页集合。系统和方法还可以包括网络服务器,其配置为经过网络浏览器从特定用户接收包括关键词的搜索查询。使所述节点搜索其自身集合中与搜索查询最佳匹配的页面。可以提供搜索页面返回器,其配置为向用户返回排名高的页面。节点可以包括功率效率增强的处理子系统,所述功率效率增强的子系统包括M个处理器。所述M个处理器配置为模拟N个虚拟处理器,并限制N个虚拟处理器的每一个存取存储器的虚拟处理器存储器存取速率。被N个虚拟处理器中每一个访问的存储器可以是RAM。在选择性实施方式中,被N个虚拟处理器中每一个访问的存储器包括DRAM,其容量高但功耗比SRAM更低。

Description

具有降低功耗的并行处理计算机系统及提供该系统的方法
技术领域
本发明涉及并行处理计算机系统,以及为了降低大规模并行处理系统的功耗的方法。
背景技术
微处理器自从其最初创造以来已经得到发展,目前拥有数十亿个具有皮秒开关速度的晶体管。随着时间的推移,它们获得了极大的复杂程度,并且针对具体应用程序集合已经得到优化,诸如加速在诸如个人计算机(PC)及其更强大的近亲即商用文件服务器的普通计算机设备上运行的现有程序。
一种采用大量计算机进行大强度的活动是执行著名的互联网的万维网(“Web”)的搜索功能的施行。在web上对具体内容进行的搜索通常是由客户计算机和用户请求并被传递到搜索服务(诸如著名的Google网站)的活动。Google以及其他类似网站实施已知的“搜索引擎”的算法,其从遍布万维网/世界的互联网连接的资源中对互联web网站的可用列表及其潜在内容进行有效分类。在执行搜索请求的零点几秒钟内,搜索引擎通常会向请求客户返回可应用的网站和文本参考的(在很多情况下)庞大数量的列表。
随着近几年来web上可得的内容量以及互联的请求客户的数量呈指数增长,诸如Google的搜索引擎已经接受了组织组成互联网的数十亿网页(数万亿个单词)的挑战。这些搜索引擎保持(并且尝试提高)它们的搜索结果的响应性和质量。为此,它们创建了大规模的数据中心,并在其中安装成百上千台基于PC的服务器。它们通过在其服务器之间划分网页来充分利用它们的搜索算法的高度并行性,使得每个服务器仅仅负责搜索小块的互联网。
搜索引擎现在正在建立新的数据中心,因为旧的数据中心已经达到电力使用的极限(兆瓦)。这些数据中心非常昂贵,因此如果它们的服务器中所使用的计算机架构能够更节省功率,那么数据中心的建造将是非必要的。
将搜索任务划分为多个块的能力对于特定类型的任务在某种程度上是唯一的,其要求高度并行性(例如脑回路的模拟也是大规模地并行进行的)。这些算法通常不同于使已有的微处理器针对其已进行优化的程序,即那些通过流水线提供的、涉及程序步骤的序列依存性的程序。序列依存性的示例如下:当a+b=c且c用于计算f(例如e+c=f)时,则在计算f之前必须知道c。相反地,在大规模并行算法中,c和f的值不需要考虑彼此就可以被确定。
在各种大规模处理系统中,需要更多的工具来降低功耗。这对于包括高流量网络搜索数据中心的大规模并行处理系统尤其是问题。一些大规模网络搜索数据中心的功耗达到或超过了其已有设备的功率极限。因此,一部分网络搜索数据中心已经被转移到能够获得更多电力的设备中。
随着诸如Santa Clara,CA的Intel的公司制造的更新的处理器提供更快的处理器时钟频率、以及多个处理器核心,速度的提高是依靠功耗、热量和成本的增加获得的。随着能源成本上升,对于搜索活动和涉及主要并行操作的其它活动中增加的成本量而言,简单地提高处理器的速度和/或添加额外的服务器容量可能不是最佳解决方案。
将搜索任务划分为多个块的能力对于特定类型的任务在某种程度上是唯一的,其要求高度并行性(例如脑回路的模拟也是大规模地并行进行的)。这些算法通常不同于使已有的微处理器针对其已进行优化的程序,即那些通过流水线提供的、涉及程序步骤的序列依存性的程序。序列依存性的示例如下:当a+b=c且c用于计算f(例如e+c=f)时,则在计算f之前必须知道c。相反地,在大规模并行算法中,c和f的值不需要考虑彼此就可以被确定。
非常期望能够提供改善的计算机架构以及用于提供和使用这种架构的方法,其能够在大规模并行处理数据中心中提供足够的速度性能,同时保持或降低其功耗。这种架构应当允许尽可能地采用常规的软件和操作系统而使串行任务仍然可用,但那些涉及并行操作的任务可以以显著提高的性能实现,由此降低了采用数量更大的、性能更强大的处理器来扩展容量的负担。
发明内容
本公开中所描述各个发展服务于一个或多个目的,例如,降低并行处理系统(例如大规模的并行处理系统)的功耗。下文中将会描述其它或可选的目的。
例如,根据此处描述的一个或更多实施方式,本发明涉及系统(单个系统或多个系统)、方法、计算机及可读介质(单个介质或多个介质)、或其一个或更多的子组合。在本公开中,系统意味着系统和/或计算机可读介质(单个或多个),而不是自身信号。
本公开的一个实施方式提供了一种系统,其包括网页搜索节点,网页搜索节点包括网页集合。另外,系统包括网络服务器,其配置为经过网络浏览器从特定用户接收包括关键词的搜索查询,其中使所述节点搜索其自身集合中与搜索查询最佳匹配的页面。提供搜索页面返回器,其配置为向用户返回排名高的页面。
节点包括功率效率增强的处理子系统,所述功率效率增强的子系统包括M个处理器。所述M个处理器配置为模拟N个虚拟处理器,并限制N个虚拟处理器中每一个存取存储器的虚拟处理器存储器存取速率。
被N个虚拟处理器的每一个存取的存储器可以是RAM。在选择实施方式中,被N个虚拟处理器的每一个存取的存储器包括动态随机存取存储器(DRAM)。
附图说明
以下的本发明说明书参照附图,其中:图1是网络搜索系统的一种实施方式的示意图;图2是网络搜索系统的例示性实施方式的框图;图3是搜索处理器系统的例示性实施方式的框图;图4是搜索处理器核心的另一例示性实施方式的框图;图5是搜索处理器核心的又一例示性实施方式的框图;图6是搜索处理系统的例示实施方式的框图,其采用耦合到中央处理单元(CPU)的搜索处理卡;图7是可以被配置为网络搜索系统的低功耗处理系统的例示实施方式的框图;图8是计算机屏幕或计算机屏幕的一部分的示意图,其包括配置界面;图9和图10示出例示性网络搜索处理的流程图;图11是搜索系统的特定节点的框图;图12是例示性并行处理计算机集群的框图;图13是配置有根据例示实施方式的功率效率增强(power-efficiency-enhanced)处理器核心芯片的例示性台式计算机的框图;图14是根据例示性实施方式的功率效率增强计算机架构的片上系统实施方式的框图;图15是可以在此处的各个实施方式中采用的基本处理器架构的示意图;图16是实现根据例示性实施方式的多个虚拟处理器的例示性处理器的示意图;图17是根据例示性实施方式的处理器执行的示例处理的流程图;图18是由例如图12所示的集群的特定节点执行的处理的流程图;图19是图18所示的处理的更详细的流程图;图20是例示各个操作如何用例示性实施方式中的多个虚拟处理器按流水线执行的框图;图21是根据例示实施方式的片上系统处理器架构的示意图;图21A是根据图21的实施方式和采用多个虚拟处理器的其他实施方式的用于对每个虚拟处理器计数器的操作进行排序的例示性选择器的框图;图22是示出图21所示的架构的示例状态的流程图;图23是通过示例示出8个流水线虚拟处理器的10个循环的操作的框图;图24是多核心片上系统处理器架构的框图;图25是根据例示实施方式在特定的卡上以多个多核心芯片实现的台式扩展卡的框图;图26是示出根据例示实施方式在台式计算机中如何提供多个台式扩展卡的简化立体图;图27是对应于根据处理器架构的一个实施方式的8个虚拟处理器的DRAM存储器的框图;以及图28是根据例示实施方式的片上网络实施的框图。
具体实施方式
如图1所示,本公开的一个实施方式涉及一种系统,或其任意一个或多个子组合。例示系统包括网络搜索系统100,其根据由客户通过诸如互联网的网络传递的现有搜索请求来工作。例示系统100还包括多组网页搜索节点102、网络服务器106、以及搜索页面返回器108。在工作中,特定的网页搜索节点102(以及根据本实施方式其他每一个)包括网页收藏104。网络服务器106配置为经过网络浏览器105从特定的用户接收包括关键词的搜索询问110。使特定节点102在其收藏中搜索匹配搜索询问的页面。搜索页面返回器108被配置为向用户返回排名最高的页面112。这些排名高的页面112位于由结果集合器所集合的结果中,所属结果集合器被配置为从多个网页搜索节点102集合结果。
示例节点102配置有功率效率增强处理子系统114。功率效率增强处理子系统114包括M个(物理)处理器。M个处理器116配置为与存储器118和接口120一起模拟N个虚拟处理器122,另外,M个物理处理器如所配置地,限制N个虚拟处理器122中的每一个存取存储器118的虚拟处理器存储器存取速率。
在所例示的实施方式中,被N个虚拟处理器122中的每一个存取的存储器118可以包括DRAM(在更具体的实施方式中为嵌入式DRAM)。被N个虚拟处理器122存取的该存储器可以是“本地”存储器,即位于与处理器166相同芯片上的、或通过低延迟(latency)低功耗总线、接口和/或网络连接而极接近连接的存储器。更具体地,被虚拟处理器中的特定一个存取的存储器可以是位于与模拟虚拟处理器122中的特定一个的处理器116相同芯片上的本地存储器。
在一个实施方式中,虚拟处理器122的整数数量N等于处理器116的数量M的倍数。在具体实施方式中,N=kM,其中k是整数值。在特定实施方式中,k=16。
特定的虚拟处理器122的虚拟处理器存储器存取速率可以被定义为特定的虚拟处理器122执行的加载和存储之一的速率。就存储器每秒存取而言,在此处的实施方式中,该速率被限定在远低于M个处理器116之一的处理器时钟频率。虚拟处理器存储器存取速率可以大致等于或小于(M/N)乘以处理器时钟频率。
在选择性实施方式中,每个处理器116具有350MHz的时钟频率,而每个虚拟处理器具有21MHz的时钟频率(以及相应的存储器存取速率)。
根据本公开的另一方面,针对特定搜索节点102的网页收藏104可以被划分为可被并行搜索的多个小数据库。具体地,根据一个实施方式,针对搜索节点的特定的网页收藏可以包括碎片,该收藏可以被划分为由本地DRAM存储的多个小数据库,其中的每一个存储在(存储器118中的)DRAM中对应于虚拟处理器122的各自部分中。
通过将特定处理器116时间分片,M个处理器116中的特定处理器116可以被配置为模拟一组虚拟处理器122。更具体地,例如该组的每个虚拟处理器可以支持线程,且特定处理器可以在特定处理器的特定单循环期间执行针对(该组中的)特定虚拟处理器的指令,其中所属特定处理器在特定处理器的下一单循环中执行针对(该组中的)下一虚拟处理器的指令。
本公开的另一方面涉及一种方法,或其任意一个或多个子组合。作为该方法的一部分,参照例如图2所示的网络搜索系统200,可以提供网页搜索计算机的集群208,包括网络节点210。在一个实施方式中,特定网页搜索计算机用于实现特定节点210。网页搜索计算机210中的至少一个被一个或多个功率效率增强计算机代替。一个或多个功率效率增强计算机集体地包括M个处理器211。M个处理器211配置为模拟N个虚拟处理器,其被配置为限制N个虚拟处理器的每一个存取存储器的速率。在图2的实施方式中,虚拟处理器的整数值“J”(k=J)个由一特定处理器模拟,在所例示的示例中为处理器1。M和N是整数值,并且N大于M。在本实施方式的一个变形中,被每个虚拟处理器112存取的存储器是DRAM,其具有比SRAM更大的容量但是消耗更少的功率。在更具体的变形中,N等于kM,其中k是整数。在一个示例实施方式中,k=16。
M个处理器彼此之间可以经过网络连接例如每秒G比特(gbps)的以太网实现连接。在特定实施方式中,M个处理器中的特定的一个的时钟频率可以是s MHz,而N个虚拟处理器112中的特定的一个的有效存储器存取速率可以大致小于s(例如约等于s/kMHz)。在一个实施方式中,s=350MHz,同时k=16。
用功率效率增强计算机代替网页搜索计算机可以通过提供搜索处理卡来完成,其每一个都保持有多个彼此联网的联网处理器,其中每个联网处理器实施多个模拟虚拟处理线程。在图2的例示实施方式中,该数量是J。在一个实施方式中,一个搜索处理卡包括16个联网处理器,而每个联网处理器实施16个虚拟处理器。
与特定的虚拟处理器相关联的存储器可以嵌入到与模拟这些特定的虚拟处理器的处理器相同的芯片中。或者,存储器可位于专用芯片上,所述专用芯片与保持有模拟特定虚拟处理器的处理器的芯片分离。
一组少于N个的被模拟的处理线程可以共享一个小型低功耗存储器。该小型低功耗存储器可以为例如1MB。更具体地,该小型低功耗存储器可以是1MB的DRAM,其可以以更低的速率例如170MHz被存取。
一特定的被模拟的处理线程可以被分配给特定的被模拟的处理线程所专用的小型低功耗存储器的一部分。同时,一个组中的全部线程(即被一个或多个处理器的相同组实施)可以共享存储器的存放网页数据的共用部分。
根据本公开的另一方面,例如如图6所示,提供了搜索处理系统(或其一个或多个子组合),其包括一个或多个搜索处理卡602。每个卡提供有双工接口604,所述双工接口604配置为将搜索处理卡602连接到中央处理单元600。中央处理单元600可以用作中介物以转发请求到每个搜索处理器卡602上的处理器。
在一个实施方式中,搜索处理器卡602包括多个处理器605。一特定的处理器605包括多个处理器核心606、DRAM 608、以及用于处理器606之间通信的信道。在本实施方式中,每个处理器605被称为一模块,并且为其自身的芯片。
处理器可以被配置在流水线中,以实现每瓦高指令吞吐量。
特定的处理器605包括DRAM 608、多组(在例示的实施方式中为30)处理器核心606、以及用于处理器606之间通信的信道610。
每个处理器核心606的处理器输入612并联连接至双工接口604的输出615。同时,每个处理器606的处理器输出616并联连接到双工接口604的输入618。
特定的卡602,例如卡#1,可以包括多个处理器(每个模块一个)。在例示实施方式中,处理器的数量等于模块的数量乘以每个模块所包含的处理器的数量。在图6所示的实施方式中,特定的卡602(例如卡#1),包括总共320个模块,每个模块包括总共30个处理器核心,每个处理器核心模拟总共37个虚拟处理器。
根据本发明的一个方面,特定的处理器核心606被配置为通过对处理器时间分片来模拟其每个虚拟处理器。具体处理器可以具有1.5M比特每秒的通信接口,因而以相同速率输出数据,导致每个模块以平均50M比特每秒的数据输出速率。如果在一定卡502上提供有320个模块,那么在双工接口604的输入618处,针对该模块的总数据输出速率将为16G比特每秒。
每个处理器输入612可以具有平均1.5M比特每秒的数据输入速率。因此,针对特定的卡602的全部320个模块,对每个模块的平均数据输入速率可以是50M比特每秒。如果特定的卡602上提供有320个模块,如图所示,那么,双工接口604的输出614的总数据率是16G比特每秒(50M比特每秒乘以320个模块)。
特定模块(例如模块#1)中的信道610连接该模块的全部处理器核心(例如处理器核心#1-30),例如可以以16G比特每秒的速率在处理器之间传递数据。
再次参照图2,根据以上通过引用并入的美国临时申请序列号No.60/974,713的公开,网络搜索公司可以通过将每一个都用作节点的数千台台式PC联网在一起来建造网络搜索系统200形式的超级计算机。每个这种节点210可以被分配给不同的网页组。当用户102搜索新的关键词时,每个节点210在其自身的收藏中查找最佳匹配该查询的页面。来自全部节点的结果被集合,排名最高的页面经过具有网络浏览器的台式计算机204返回到用户102。
当用户将关键词键入浏览器204时,这些关键词被发送到网络服务器206。网络服务器206接着发送关键词到并发或并行工作的计算机201的集群。总共数十亿页面可以被搜索,且其结果可以被组合,以在数百毫秒内将最佳结果发送回台式计算机用户的浏览器204。
如以上总体讨论的,为了跟上在互联网上被搜索的数据量的增长以及用户对于互联网搜索的依赖的增长,特定的搜索公司正在购买多个集群,并对其进行全球分布。当数据中心继续运行其已有的系统时,通过用最新的处理器例如可从Sunnyvale、CA的AMD??和Intel??获得的那些处理器来替换旧计算机时,搜索公司不具有足够的电力和冷却来升级它们的集群。
尽管使用常规的处理器的系统中的处理器速度可能增加,例如从100MHz到数GHz,但在其更高的时钟速度运行处理器会增加这些处理器的功率消耗量。在图2所示的实施方式中,节点210可以用数千个低功耗慢处理器替换,与每个节点的更少数量的高功率处理器作交换。这使得搜索引擎能够更快地运行,同时整体消耗更少的电力。
如图3所示,可以提供搜索处理系统300,其包括多个模块302,每个模块302实施为面积大致150平方毫米的小型平坦计算机芯片。在图3所示的实施方式中,搜索处理系统300以分解的形式示出,以示出子部件如何组合以形成整个架构。
每个模块302可以包含16个处理器核心304。在图3所示的实施方式中,每个处理器核心以350MHz的速率运行,导致特定模块302的总的处理速率为5.6GHz。21MHz乘以16等于336MHz,其接近每个处理器核心的速率350MHz的值。
在本实施方式中,每个处理器核心304被时间分片为16个虚拟处理器,以21MHz的速率逻辑地运行。
这种方式的时间分片可以提供更长的时间窗口供每个虚拟处理器306完成指令。该时间量比一些Intel CPU的长150倍。
这支持使用比DRAM提供的更慢或更长的存储器延迟时间,其比一些CPU的SRAM具有更大的容量,并且在这些更大的容量处的功率效率更高。
在本实施方式中,图3所示的搜索处理系统在逻辑循环之间可以具有15纳秒(的延迟时间),而Intel Q9770仅仅具为300皮秒。如图3所示的虚拟处理器306的降低的存储器存取速率(21MHz)还用于防止例如在Intel CPU中规则性发生的停滞(stall)。
在网络搜索中,被称为代码“branches”的特殊指令(IF-THEN)是常见的。这发生在当搜索程序检查页面是否具有全部关键词,以及如果是则检查其是否在页面中散布或置于相同句子中(指示更好的匹配)的情况下。
在如图3所示的特定模块302中,处理器核心304以矩阵形式展开。模块302连接到G比特以太网,使得数百万个模块能够一起工作。每个模块302包括16个核心,其每一个以350MHz运行。每个核心被时间分片为16个虚拟处理器,每个均在350/16=21MHz运行。每个处理器核心304被设置有本地存储器(包括存储器A 308和存储器B 308(均为eDRAM存储器))。这允许特定处理器核心304向其每个虚拟处理器306提供充足的带宽(到存储器)以允许每时钟周期进行一个加载或存储。
在例示实施方式中,每个170MHz eDRAM提供8个21MHz虚拟处理器306。通过利用来自涉及每个子部件的研究的信息,能够估计特定搜索处理模块304的功率使用(在例示实施方式中包括256个虚拟处理器306)。基于一些计算,活动处理核心304的功率使用可以是600毫瓦,而以太网连接可以消耗200毫瓦,整个网络集线器可以消耗200毫瓦。
存储器可以被嵌入到与每个处理器核心304相同的硅片中,或可选地放在被置于相同封装的专用存储器芯片上。这种存储器在活动时可以消耗例如680-800毫瓦,且在闲置时将消耗非常低的功率。因此,估计例示的搜索处理系统300可以消耗最多1.7瓦。
3.2GHz Intel QX9770的实际测试估计每处理器核心使用19.5瓦的功率。该相同核心的存储器使用被估计为活动时6瓦,闲置时3瓦。
图4示出了例如(如在图3的实施方式中所示的)搜索处理模块302上提供的处理器核心400的另一实施方式。
所例示的处理器核心400包括虚拟处理器402。特定的一个虚拟处理器,例如VP1,耦合到存储器A的专用部分(专用1),以及耦合到存储器A的网页数据库部分404。因此,在图4所示的实施方式中,例示的处理器核心400的一半虚拟处理器(虚拟处理器1-8)被耦合到专用存储器A,其在本实施方式中包括1MB存储的eDRAM存储器单元。另外,另一半虚拟处理器(虚拟处理器9-16)被耦合到专用存储器B,其也包括1MB存储的eDRAM存储器单元。处理器核心400上提供的总eDRAM因此是2MB。
因此每个虚拟处理器402被提供有其相应存储器单元(存储器A和存储器B)中的专用部分,且被耦合到一共享网页数据库部分,共享网页数据库部分包含该存储器(存储器A和存储器B)中网页数据库的一部分。在图4所示的实施方式中,存储器A和存储器B中每一个的网页数据库部分包括大致300个网页的数据。
图4所示的实施方式针对增加速度性能而设计,但同时降低了功率的节省。针对这种速度优化的搜索处理系统,考虑到总共4个搜索处理模块,每个模块总共16个处理核心。如图4所示,每个处理器核心400包括16个虚拟处理器,在本实施方式中总共1024个虚拟处理器。这种搜索处理系统估计可以被总共1024个虚拟处理器消耗高达7.2瓦的功率,是Intel CPU的三分之一。
图4所示的每个专用存储器410,例如专用1,可以以“堆栈”存储器的形式实施。
图5的实施方式示出处理器核心500,其包括16个虚拟处理器(VP 1-16)502,每一个耦合到包含有专用网页数据库1-16(510)的存储体(memory bank)的一部分。因此,虚拟处理器1(VP1)具有对应的专用网页数据库1,以及虚拟处理器8(VP8)具有专用网页数据库8。在本实施方式中,针对专用网页数据库的每个专用存储器为2MB,其每一个包含有大致600个网页。这允许每个处理器核心500总共32MB的eDRAM存储器。
本实施方式估计在某些任务时以可与Intel CPU匹敌的速度下工作,但消耗的功率更少。
图7是低功耗并行处理系统700的另一实施方式的框图。例示的系统700包括一个或多个并行处理控制器702、以及一个或多个中间处理器704。提供多个处理器核心组(PCS)706(总共L个),每个PCS经过双工连接器708耦合到中间处理器(704)。
在图7的实施方式中,每个PCS,例如PCS-a,还包括接口714、本地总线、网络、或信道连接器715、一个或多个处理器710、以及一个或多个存储器712。
处理器710、存储器712、连接器715的集合集体地模拟或执行多个处理元件718的功能。如所例示的,处理元件包括Q个处理元件,包括PE-1、PE-2、…、PE-Q。每个处理元件718支持处理线程。通过示例,处理元件718可以是由一个或多个处理器710模拟的虚拟处理器。可选地,处理元件718可以是特定的低功耗的实际处理器710。即,针对特定的PCS(处理器核心组)706,处理器710的数量可以等于处理元件718的数量。
处理元件718每个均具有输入和输出。针对特定的PCS的处理元件718的每个输入并联连接到双工连接器708的输出730,处理元件718的每个输出并联连接到双工连接器708的输入732。
可以提供配置机构720,其功能可以由与本地通信信道和其本地存储器结合工作的中间处理器704中的一个或多个处理器执行。可选择地,配置机构720可以由单独的特殊配置计算机或通用计算机执行,包括处理器、存储器、和本地连接器等,以执行该机构的功能。
配置机构720还可以被设置有配置字段或开关、用于控制或改变这种字段或开关的设置的输入机构、以及用于显示这种字段或开关的当前状态的输出部分。因此,用户能够查看当前配置或修改当前配置,其例如规定每个处理器核心组(PCS)706如何配置。
每个PCS可以基于例如被允许在PCS中工作的处理器710和存储器712的数量进行配置。例如,可以为一特定的PCS提供100个处理器和50个存储器,根据配置机构720进行的配置,该特定的PCS中仅仅20个处理器和10个存储器被允许工作。
在例示实施方式中,PCS 706包括处理器710、存储器712、接口714、以及连接器715,全部设置在片上系统上。可选择地,处理器710和连接器715可以设置在一个芯片上,而存储器712可以设置在单独的芯片上,其中在保持有处理器710的芯片和置有存储器712的芯片之间存在高速、低延迟、低功耗的连接。
配置机构720能够配置特定PCS(例如PCS-a)的另一种方式是通过指定待由处理器710执行的处理器元件的数量来实现。例如,可以利用一个处理器710模拟多个处理元件,处理元件因此用作虚拟处理器。举例而言,特定PCS-a 706的特定处理器720可以模拟分别用作处理元件718的16个虚拟处理器。
图8是计算机屏幕(或所显示的计算机屏幕的一部分)上的配置界面800的示意图,其包括在计算机屏幕上显示的元素和机构(例如鼠标控制的光标),允许用户与这些元素在计算机屏幕上交互,例如修改信息显示的方式,以及输入数据或其他配置信息。
例示的配置界面800包括多个字段。这些字段可以包括例如一个或多个处理器核心组1(PCS1)字段802、一个或多个处理器核心组2(PCS2)字段804等等。另外,可以针对每个PCS提供一个或多个PCS配置字段806。
与这些所例示的字段802、804、和806关联的数据可以被设置在存储装置(存储器或计算机可读介质)中。同时,配置界面800在代表它们的图形工具(802、804、806等)中显示与这些字段关联的数据。因此,图形工具802、804、和806允许对它们各个字段的数据的输入或改变。
如图8所示,例示的字段的输入可以包括对应于PCS1字段802的处理器ID输入820、以及对应于PCS字段804的处理器ID输入822。另外,可以对应于针对每个PCS(PCS1、PCS2等)的配置字段提供一组各个配置输入。这些可以包括例如“多个并行PE”输入830、“每个PE的存储器存取速率”输入832、以及针对各个PE 834的一个或多个存储器的地址或其他标识。
在存储器输入834中,可提供更具体的输入,包括标识一个或多个专用存储体、以及标识这些存储体将如何对应于具体PE的输入836、以及标识共享存储器及其配置、指示存储器如何可以被留出和在具体PE组之间被共享的输入838。
输入820、822、830、832、834、836(和/或其他未示出的)中的每一个包括通过计算机屏幕呈现的图形工具。这种图形工具可以向用户标识待输入数据的类型,并显示已经针对对应的一个或多个字段输入的一个或多个值。经过计算机屏幕向用户呈现的已经输入的值可以包括之前输入的值、默认值、或由配置机构建议的值。图形工具还可经过图形用户输入来接收定义针对对应的字段或多个字段的配置的数据输入。
图7所示的处理元件(PE)可以被特定的PCS模拟(例如在PCS内的特定处理器的不同时隙),这些被模拟的PE的数量可以动态地变化。这可以被一个或多个中间处理器704和/或被配置机构720控制。可选择地,每个PCS和/或针对系统700的PE的总数可以被设定为固定值,其可以是被系统固定的默认数字,或者是经过配置机构720由用户例如利用图8所示的配置界面800配置的数字。
图7所示的一个或多个并行处理控制器720执行特定并行处理。在一个实施方式中,并行处理控制器702包括搜索引擎。在另一实施方式中,并行处理控制器702包括执行金融分析方法的金融分析系统。金融系统可以是实时金融分析系统。另外,包括化学和蛋白质折叠的科学应用程序可以是并行处理。在另一实施方式中,其包括天气预报系统。
例如图2所示的实施方式包括执行多个线程的多个虚拟处理器,其足以去除由于处理器耦合到DRAM存储器时发生的存储器存取延迟的性能代价,也可去除对流水线清理(flush)和分支预测的任何需要。另外,与处理器关联的存储器应具有充足数量的存储体以及存储体中的存储器容量,以提供更高的存储器存取带宽,包括但不限于每个处理器每个循环一个存储器存取。
在特定实施方式中,功率使用可以被优化,使得每兆字节需要更少量的功率,以及也使得每个存储器存取需要更少量的功率。与处理器211相关联的本地存储器之间的连接优选为低功耗连接。每个低功耗处理器211可以经过低功耗片上网络连接到存储器和/或彼此。
针对特定节点210的总存储器功率利用率和总处理器功率利用率可以是相当的。例如,针对特定节点210,节点中处理器的最大或平均功率利用率可为该节点中接近存储器的最大或平均功率利用率的水平。
节点(例如图2的)可以被组织成节点组,使得每个节点称为一个组中的成员。每个组可以被以可连接到现有PC的标准接口的附加卡的形式实施。可以进一步组织所述节点组,使得多个附加卡可以在一个PC中使用。例如参见图6。节点组中的全部节点可以接收来自公共输入总线的信息。
可以在节点中设置高容量存储器,且高容量存储器与具体处理器组相关联。在一个实施方式中,该存储器可以在一个晶圆(die)上利用优化的光刻加工工序来制造,与该存储器相关联的每个处理器可以利用各自不同的优化制造工序在各自的晶圆上制造。
处理器的以及与这些处理器相关联的存储器的芯片晶圆可以经过3-D(三维)堆叠被接合到一起。
分别针对处理器和与这些处理器相关联的高容量存储器的芯片晶圆可以通过将晶圆并排平坦放置,以及经过非常低功耗连接将其彼此连接在封装中来接合。
一特定节点,例如图2所示的节点210,可以进一步设置闪存,其用于很少使用的数据存储。
节点的处理器(例如处理器211)所请求的存储器可以按照与特定处理器211的操作数的大小类似的块的大小来请求。存储器可以按照比特定处理器211的操作数的大小大的块的大小来请求,以减少存储器存取的数量并由此降低功耗。
每个低功耗处理器211可以具有针对单个虚拟处理线程的执行速度,该速度更慢但是每个存储器存取的功率效率更高。
每个低功耗处理器可以被进一步提供有针对单个虚拟处理线程的执行速度,该速度更慢但是每个指令执行的功率效率更高。
通过利用针对低泄露电流优化的晶体管,处理器211可以针对每瓦高指令吞吐量来进行优化。通过提高晶体管有源地开关和工作的时间与指令完成的比例,可以减少晶体管的泄露电流。通过增加流水线深度以及进一步增加虚拟处理器212的数量,可以增加晶体管有源地开关和工作的时间与指令完成的比例。在一个实施方式中,每个处理器211被配置为通过以循环复用方式在其每个对应的虚拟处理器之间切换,来模拟对应的虚拟处理器组。
通过在编译时间将独立的指令绑定到小的组,如图2所示的节点210可以被进一步提供有指令级并行(ILP)的低功耗实现。
ILP的低功耗实现可以在编译时间将独立或不独立的指令绑定到小的组。这可以通过添加虚拟处理器以及降低全部虚拟处理器的速度来完成,同时掩盖任何增加的指令延迟时间或流水线深度,使得其总计速度仍然等于针对对应于那些虚拟处理器的处理器211的全部实际处理器速度。
例如图2所示的特定节点210可以在与该节点的处理器相同的芯片上设置有很小的低功耗数据缓存。对应于特定处理器211的虚拟处理器212可以被允许经过这种很小的本地缓存彼此(和/或与其他节点)通信。
实时应用程序可以利用每虚拟处理器212的固定速度指令吞吐量来执行。
例如图2所示的节点网络可以通过利用非阻断低延迟开关来针对小的通信缓冲区优化。这种针对低功耗而优化的节点网络可以通过将节点分隔为等级组织的本地组来进一步优化。
设置在节点210上的特定的高容量存储器可以在不进行新的存储器存取时的闲置(待机)阶段针对低功耗使用而被优化。
图9示出了根据此处通过引用并入的美国临时申请序列号No.61/021,757中描述的搜索处理的示例搜索处理900的流程图。
在动作902中,关键词被用户905发送到网络搜索系统中的节点。关键词901可以经过例如如图9所示的负载平衡器903传递到每个节点。在动作902之后,在每个节点上(即对应于节点的每个处理器),进行多个动作。这些动作包括在分配到特定节点的网页组中查找针对当前关键词的网页的列表。被查找的页面为包含特定关键词的网页。这发生在动作904中。在下一动作906中,确定节点是否完成用户已发送的全部关键词。如果否,在动作908,处理移动到下一关键词,并返回到动作904查找具有特定关键词的网页。
当全部关键词已被查找时,如在动作906所确定的,处理进入动作910,在此确定具有全部关键词的网页(例如,在动作904中获得的两个列表中的网页,其中存在两个关键词)。
在此处的实施方式中,处理可以跟踪每个关键词在这些网页中的多次出现。
在动作912,确定具有全部关键词的每个网页的匹配程度。其可以涉及找到可能按顺序包含全部关键词的短句片段。另外,处理可以考虑网页的“页面排名”,使得重要的页面(比如CNN)比其他页面具有更高的排名。在动作912的这一部分处理可能是计算密集型的。这在更大的搜索引擎中是一个限制因素,会导致需要购买更多的计算机。
处理进入动作914,如图10的顶部所示。在动作914,针对当前节点,(对并联连接的各个处理中的每一个进行确定),对最佳匹配进行确定,即,在例示实施方式中的前10个匹配。对于更大的结果集合而言,该处理是类似的,且对于更多的结果,成本线性地或次线性地增加。
在下一动作916,针对当前节点的前10个结果被发送到本地“主处理器”,其已经被分配以在多个处理器最高结果中找到前10。例如,10个处理器可以发送10个结果到在这100个中找到前10的单个单独的处理器。
在下一动作918,处理可以涉及本地主处理器发送其前10个结果到“主的主(chief-of-chief)”处理器。这可以按照需要重复,包括“主的主”处理器发送其前结果到“主的主的主(chief-of-chief-of-chief)”处理器。此等级结构可以被优化,使得不会达到通信带宽极限。
在下一动作920,顶级的处理器将全部前10个结果返回给用户。图11示出示例节点1102。关键词1101被传递到节点1102的处理器1104,处理器1104与对应的存储器1106连接。在此处的实施方式中,处理器1104是被实际处理器模拟的虚拟处理线程,其具有与嵌入的eDRAM存储器1106相对应的部分,并且利用某一上限带宽来访问该存储器,通过限制虚拟处理器1104的存取速率来控制。
与处理器1104对应的存储器1106可以包括多个表(即查找表),例如表#1(1110)、表#2(1112)、以及表#3(1114)。如图1的示例中所示,表#1(1110)可以包括具有关键词X的页面的查找存储器位置。表#2(1112)可以包括针对每个关键词的网页的列表。表#3(1114)可以包括针对该存储器中的每个网页的页面排名。
如上所述,特定的虚拟处理器可以是由模拟虚拟处理器的实际处理器支持的线程,实际处理器每个循环针对一个实际处理器执行一个指令并在虚拟处理器之间自动切换。
利用更少数量的实际处理器,特定的架构可以支持多个虚拟处理器线程,其中虚拟处理器线程在数量上足以去除存储器存取延迟的性能代价以及去除对流水线清理和分支预测的任何需要。当虚拟处理器与包括eDRAM的具有高容量但比其他类型的存储器每兆字节消耗更少功率的更慢的存储器交互时,这变为一个问题。
与虚拟处理器关联的存储器应该利用充分数量的存储体以提供最小存储器存取带宽,包括每虚拟处理器至少一个存储器存取。
存储器可以经过低功耗连接到对应的实际处理器。这些连接可以经过低功耗片上网络或总线实现。
处理器架构可支持用于有效存储和访问指令存储器的Harvard架构。还可以针对诸如过滤色情、检测假冒网站、找到重复网站、分配优先级别到各个页面、搜索email、以及服务动态网页等搜索引擎支持应用程序来优化。
集群的节点可以被组织为组,使得每个节点为一个组的成员。相同组中的节点的集合还可以位于硬件的相同的模块片段上;例如,一个特定组的节点可以全部位于相同的卡上,例如,根据图6所示的和以上描述的实施方式。
硬件的模片可以是如图6所示的卡,其可以用PC的附加卡实现,其经过PC的高速总线来接口。高速总线可以被实现为PCI Express接口。PCI Express接口可以包括多通道(multi-lane)PCI接口。高速总线可以更具体地是PCI Express x16。根据另一实施方式,PCI Express总线可以是PCI Express 2.0。
集群中的节点可以包括PC网络,经过G比特以太网互联。这些PC中的每一个可以包括模块硬件,所述模块硬件包含与该PC通过高速总线实现连接的处理器。
节点的集群可以还包括经过高速10G比特连接而互联的PC网络。PC可以还经过高速Infiniband连接来连接。
多个硬件模块,例如如上所述和图6所示的卡,可以经过高速连接而互联。这可以通过在特定PC的总线结构中安装全部那些硬件模块来完成。例如,多个PC可以被组织,使得足够的附加卡被集成到每个PC中,使得整个PC的总功率使用受附加卡的功率使用控制。可以在特定模块中提供节点集群的布局,使得空气冷却被优化。特定模块中的节点布局对于经过水箱(water block)进行的水冷却而言是最优的。
硬件模块中的节点可以被组织,使得全部节点从共用输入总线接收信息。
特定硬件模块(例如图6所示的卡)中的节点可以经过包括G比特的网络、10G比特以太网以及Infiniband的互联来联网在一起。
节点架构可以被设计成使得每个节点包含最高数量的处理器以及之前确定的伴随的存储器,其与处理器一起适合装配在单个芯片晶圆中,或者这种处理器的数量被四舍五入到2的下一个更低的幂次。节点架构使得每个节点包含两个芯片晶圆,其中高容量存储器利用其自身优化的光刻加工工序在一个晶圆上被制造,对应的处理器利用其自身优化的工序在其自身的晶圆上被制造。
如上所述,如果处理器和对应的存储器设置在分离的晶圆上,这些晶圆可以经过3-D(三维)堆叠接合在一起。可选择地,这些晶圆可以通过将晶圆平坦并排放置,以及经过非常低功耗的连接将其彼此连接在封装中来接合在一起。
为特定的节点提供不消耗功率的闪存存储器,用于存储较少使用的数据。
高密度存储器可以实现为DRAM。
对节点架构进行设计,使得特定处理器以大小类似于特定处理器的操作数的大小的块对存储器发出请求。被请求的块的大小可以大于处理器的操作数的大小,以减少存储器存取的数量并由此降低功耗。
在一个实施方式中,存储器请求可以为32比特的块。可选择地,根据另一实施方式,存储器请求可以为64比特的块。
节点架构可以通过用户指示能够并行工作的线程来实现并行操作指定。
整个系统经过分级连接而设置有低功耗的网络带宽分配。分级网络带宽分配可使得搜索结果的聚集不受约束。
系统可以支持节点之间经过高速非阻断开关的高速通信。联网元件相对于被联网的节点的功率使用可以是低功耗的。
可以设计节点架构使得对应于虚拟处理器的任何单个线程的执行速度比通常的商用处理器慢约100倍,但比通常的商用处理器的每存储器存取更加功率高效(power efficient)约20倍。
系统可以设计成使得节点架构具有的针对任何特定的单个虚拟处理线程的执行速度比通常的商用处理器慢约100倍,但每指令执行功率高效约20倍。架构可以用于搜索处理,使得被搜索的元素,诸如文件,被分配到具体虚拟处理器和存储在与这些虚拟处理器关联的各个高容量存储器中。
可以设计系统使得虚拟处理器接收关键词,并搜索已分配到该虚拟处理器的文件。当线程发送其搜索结果时,线程可以将其发送到另一相邻节点(片上或在分级节点网络中相邻)。节点可以聚集和过滤多个线程的结果,降低总网络带宽使用。
架构可以设计成使得搜索处理使用递归的且分级的聚集,使得节点的网络将向最终节点提供从全部其他节点聚集的结果。
通过利用针对低泄露电流优化的晶体管,节点架构可以针对每瓦高指令吞吐量来优化。
通过不利用专用浮点处理单元(FPU),特定系统消耗的功率可以被进一步降低。然而,应注意FPU可以在需要这种功能的场合,诸如在金融应用的情况下,被作为架构的一部分提供(以及根据常规的技术互联)。
在进行搜索时,搜索条件可以经过已有的网络发送到全部虚拟处理器。更具体地,可以在网络中提供关键词广播或多播机制。
广播或多播功能可以经过共享总线的时分复用(TDM)来实施。
广播或多播系统功能可以经过诸如以太网的共享总线的统计时域复用来实施。
搜索条件可以包括关键词。通过利用非阻断低延迟开关,节点网络可以针对小通信缓冲器来优化。通过将节点隔离为分级组织的本地组,网络可以针对低功耗来进一步优化。这些网络组可以被提供有促进高速组间通信的路径。另外,可以在组之间提供联结点,其允许组相互通信,直到某个固定带宽限制。
可以在多个组的组之间提供联结点,其允许多个组的组相互通信,直到某个固定的带宽上限。
系统可设置有额外的网络组的分级组织。可以提供一种方法以聚集多个虚拟处理器的搜索结果,使得在虚拟处理器文件搜索的最大吞吐量期间不超过任何网络联结点的最大带宽。
聚集方法包括虚拟处理器发送文件标识(ID)和(若有的话)前X个最佳匹配文件的排名到本地虚拟处理器,其从这些多个前X个结果确定前X个最佳匹配文件。
通过任何联结点仅仅发送处前X个最佳匹配结果,聚集方法可以降低网络联结点的带宽要求。
通过降低在任何一个阶段聚集的结果的集合的数量,利用这种被调谐以限制联结点所要求的输入带宽的聚集方法,可以进一步优化系统。
通过考虑不进行新的存储器存取的循环更低的功率使用,根据目标应用的基准来调节处理器-存储器比,可以设计节点架构使得总存储器功率使用和总处理器功率使用在实际中彼此接近。
通过根据目标应用的基准性能或估计的基准性能以及这些基准期间的功率使用或估计的功率使用来调谐节点架构,总功率使用可以被优化。
基准优化可以利用网络搜索作为基准。系统可以还包括针对基准的优化的流水线深度。
在由于具体指令或执行条件而要求更少功率的具体循环期间,可以优化针对具体流水线阶段的功率要求。可以通过添加可能以其它方式要求多个指令来完成的新的处理器指令,增加每瓦基准性能吞吐量来优化功率调谐。指令可以补充或作为超标量架构或简化超标量架构的更低功耗的部分或完整代替来实施。
可以通过增加每瓦基准性能吞吐量来优化系统的功率要求。这可以通过添加对新处理器指令的处理器支持和存储器支持来完成,所述新处理器指令允许用单个处理器指令存取存储器的多个邻近的片段。例如,可以从存储器检索64个比特,以及将其存储在两个32比特CPU寄存器中,其将以其它方式要求两个处理器指令。
还可以通过添加对于自动地将多个相邻存储器读取浓缩为更大块的更少读取的队列寄存器的处理器支持和存储器支持,增加每瓦基准性能吞吐量,来优化系统。通过在非峰值服务器需求期间实施功率节省措施,可以进一步优化系统。
通过添加对小时间段中降低真实CPU的功率以消除除了DRAM待机消耗之外的功耗的睡眠命令的处理器支持和存储器支持,增加每瓦基准性能吞吐量,可以进一步优化系统。
当针对当前服务器任务的需求很低时,诸如在服务器请求的非峰值期间,任务可以被切换。处理器架构可以还包括对非常轻量的操作系统的支持。处理器架构可以还包括支持非抢占式操作系统操作系统。该系统可以还被提供有将存储在高容量存储器中的当前程序数据换入高容量存储或从高容量存储换出的功能。高容量存储可以在芯片上、堆叠地、或在并排的闪存存储器中实现。高容量存储还可以作为网络附接存储实现。
可以使用本地硬盘驱动器实现网络附接存储。
发送搜索条件到虚拟处理器的方法可以使用关键词通信修剪。这种修剪将涉及确定所配置的一组节点、处理器、或虚拟处理器中的哪些不包含满足搜索条件的任何文件。当它们的任何文件都不包含任何被搜索的关键词时,这种节点、处理器、或虚拟处理器将不具有发送到它们的任何关键词。
可以提供根据基准或模拟基准来调谐架构的处理,使得通过优化针对不同修剪分支因素的期待的真实世界影响的修剪分支因素,下一架构修订已经优化关键词修剪方法。
系统可以被进一步提供一种机构,用于经过对于一个或多个“队列寄存器”的处理器和存储器支持,来使用减少的存储器存取的方法。寄存器可以支持“弹出(pop)”方法,其在包含相邻存储器读取的序列中检索下-存储器值。“弹出”指令的实施仅仅涉及存取存储器以检索存储器值,该值在涉及多个值的先前存储器读取中近期未被检索。
系统可以采用邻近存储器读取以提高性能功耗比。例如,当搜索文件列表以确定包含两个或更多关键词的文件时,邻近存储器读取可用于从存储器中读取每个文件列表。
邻近存储器读取可用于在相同文件中发现的关键词出现的列表中迭代。可完成此,以通过在处理期间使用邻近存储器读取来从存储器读取关键词出现的每个列表,确定查询关键词的群或按顺序的查询关键词的群。
系统可以还涉及处理器指令集合,其允许经过检索包含所请求的存储器的一部分的相邻的存储器值、对这些值的适当地移位运算、以及适当的逻辑或运算,对存储器进行次字节(sub-byte)寻址。
单词索引和网页列表可以经过反向索引散列图,利用优化的存储和寻址方法,在这些网页中被存储和存取。
针对处理的指令集合可以包括能够将代表关键词的整数翻译成反向索引散列表中的第一存储器地址的指令,其可以存储关键词和针对该关键词的值指针。
指令集合可以还包括指令,其包括条件存储器读取,其基于条件从两个指定的存储器位置之一读取,并在一个指定的寄存器中存储值。
指令集合还可以包括指令,其保持条件存储器读取,其基于条件从一个指定的存储器位置(或寄存器)读取,并在两个指定的寄存器之一存储值。
指令集合还可以包括基于条件从两个指定的寄存器之一的条件存储器读取,并在一个指定的存储器位置存储值。
指令集合还可以包括条件递增,其基于条件使两个指定寄存器之一递增。
指令集合还可以包括两个条件指令的功能,诸如条件递增和条件存储器读取。
指令集合还可以包括“未必分支(unlikely branch)”指令,其在编译时间超标量指令分组中与其他指令组合时要求很低的开销,如果采取未必分支则以不完成分组中的其他指令为代价,由此诸如循环(loop)退出的未必分支要求更少的功率和/或硅资源。
通过限制可用的寄存器,指令集合架构可以被优化,例如通过限制两个操作数寄存器相邻,来减少每指令要求的比特的数量。
文件可以被分配到虚拟处理器,使得文件搜索的负载在虚拟处理器上得到平衡,例如,通过验证在搜索中频繁发现的文件在虚拟处理器之间散开。
可以提供虚拟处理器以帮助由于暂时不平衡的负载引起的查询处理的请求超负荷的其他本地虚拟处理器。
特定虚拟处理器对其他虚拟处理器的帮助可以包括虚拟处理器在存储器未被其分配的虚拟处理器存取期间,对其他虚拟处理器的分配的存储器进行存取。
可以优化系统,使得通过使用程序架构来利用共享存储器存取的低量的功率和硅,使得存储器存取很少,以及仅仅当虚拟处理器尝试降低超负荷的虚拟处理器的负载时才进行。
当存储器存取不可得时通过允许帮助虚拟处理器停滞,可以保持共享存储器更小的功率和更少的使用。
利用寄存器缓冲器来减少存储器存取的数量,通过对虚拟处理器编程可以保持共享存储器更小的功率和更少的使用。
特定群实施的并行处理可以包括实时金融预测、预报、或交易分析。并行处理系统执行的程序可以包括传感器网络的实时分析,包括对诸如海啸或飓风的自然灾害的预测、分析和风险评估。
网络路由任务的并行处理可以包括复杂的多播网络支持,要求高容量存储器来存储路由数据和高存储器存取吞吐量以确定路由。
架构可以被设计为在包括手机的移动设备上运行高性能应用程序,诸如通常要求常规的台式处理器的应用程序。应用程序可以在这些设备的功率包络(envelope)内运行。
处理可以应用于有效地进行物理模拟,包括视频游戏物理加速或蛋白质折叠。
并行处理可以涉及高性能图形计算,包括高分辨率3D渲染。
并行处理可以包括普通服务器应用程序,包括动态网页服务。
并行处理系统执行的处理可以包括数据库操作,包括但不限于SQL语句执行。
并行处理可以涉及发送和接收无线信号以便交换信息。并行处理可以涉及按照诸如贝叶斯网络编码的概率和传播方式,根据丢失比特重建比特。这种处理可以用包括低功耗无线通信的移动设备来执行。并行处理可以涉及包括法律执行和调查支持数据库的数据库操作。并行处理可以涉及搜索指纹匹配、罪犯面部匹配、以及从来自数据库搜索的带噪声的视频的图像重构。
并行处理可以还涉及使用传感器网络的监视,包括大量相机针对具体模式诸如人的运动的监视,包括在特定前提下对不允许进入的人进行的面部识别。这种处理可以涉及触摸系统,以在禁止成员进入赌场时使用。
按照其他实施方式,虚拟处理器,例如图3所示的VP 306,可以用作针对搜索引擎的小型服务器。举例而言,这种虚拟处理器服务器可以在约15MHz运行存取200k字节存储器,其能够进行它们的搜索引擎操作。这些小型服务器将搜索更小的网页集合。虚拟处理线程的这种使用促进功率效率处理器的更小的处理器速度的使用,其降低功耗使用并减少存储器延迟与处理器速度之间的差。另一优点是其允许用户针对全部虚拟处理器指定足量的并行性(例如足够的线程)以及硬件支持,以便增加在相同虚拟处理器上执行的指令之间的延迟。
相应地,能够实施处理器流水线,其永不需要由于依赖或分支丢失预测而被清理,以及当使用分配到该虚拟处理器的存储体时,在等待存储器时从不停滞。
高容量存储器存储可以由硬盘驱动器实现,其可以补充或代替与虚拟处理器相关联的DRAM存储器而被使用。硬盘驱动器每美元(dollar)具有DRAM存储器的约100倍的存储容量。然而,在硬盘驱动器上存取信息在带宽上慢几个数量级(数十兆字节每秒而非G字节每秒)以及更高延迟(毫秒而非纳秒)。
在本实施方式的更具体变形中,PCI Express卡或这种卡的小组(例如三个)可以被插入通常的ATX计算机母板的可用的槽中。可以用这些设备组装多个服务器,其在搜索上比已有的系统功率高效约二十倍。每个PCI Express卡可以用90个250平方毫米芯片组装,每个芯片用作节点,并排设置在一个大的印刷电路板(PCB)上。
这些芯片可以利用例如G比特以太网或Infiniband联网到一起。全部芯片可以被连接到一个或多个开关芯片,其接收来自多个节点芯片的连接。开关芯片可以还经过PCIExpress总线进行通信。
在本实施方式中,参照图3,90个节点设置在特定的模块302上(单个印刷电路板),且其利用用于存储器的嵌入式DRAM来实施。存储器设置在每个处理器核心上,在与处理器相同的晶圆上。可以针对每存储器存取的低功耗优化eDRAM。例如,使用占据约3.25平方毫米面积的32比特或64比特字,以及在工作期间使用约25毫瓦且在待机期间大约少1000倍,可以在166MHz在90nm技术中提供8兆比特存储体。
这些存储体中的两个可以设置在特定的处理器核心304上,以及相关联的处理器可以具有约333MHz的时钟频率,其在90nm技术中将要求使用约0.5平方毫米的硅面积以及消耗约40毫瓦的功率。
因此,以此方式配置的32个处理器核心以及64个eDRAM存储体可以装配进少于250平方毫米的芯片空间,消耗功率约3.7瓦。
32个处理器核心的集合可以经过共享总线彼此通信,例如可以适用于经过诸如Infiniband或G比特以太网的常规联网设置传递片外消息。
这种实施方式的每个333MHz处理器将包括充足的逻辑处理器(例如虚拟处理器线程)以隐藏存储器延迟和流水线深度。
当在5阶段流水线中使用eDRAM时,流水线显著地贡献于每常规处理器中的期望的逻辑处理器的数量。逻辑地在33MHz工作的10个虚拟处理器每一个可以通过每个真实的333MHz处理器实施。本示例中采用10个虚拟处理器,因为此数字涉及流水线中的阶段的示例数字-并且这是所提供的虚拟处理器的数量的一个因素。例如,在5阶段流水线的情况下,将提供5个虚拟处理器(在本示例中每个工作在66MHz到333MHz)以隐藏流水线阶段。然而,在其中总存储器带宽(在此情况下是由两个166MHz存储体提供的333MHz)等于虚拟处理器的总数量的情况下(最有效的情况),虚拟处理器的数量应可以被存储体的数量整除(否则各个线程不能适当地交错)。随之而来的,因为5不能被2整除,以及该设置要求至少5个虚拟处理器以隐藏5个流水线阶段,则可以采用6、8、10个或更多虚拟处理器。如果目的是减少架构要求的寄存器的量(由于每个虚拟处理器要求其自身的寄存器集合,以及这些寄存器具有恒定的功率开销),则6个处理器将是期望的选择。然而,利用至少10个虚拟处理器允许插入额外的等待阶段,延长存储器存取的开始和期待结果的时间之间的阶段数量,由此支持更高的延迟的存储器。
在本实施方式中,每个处理器每个循环都将存取存储器。在一个实施方式中,每5个处理器的组可以使用相同的存储体,以及共享该存储器,因为这样做没有功率效率损失。处理器可以执行多个编译时间组指令,而不进行失序操作或推测执行。
特定的PCI Express卡可以被实施,使得加倍其宽度以允许充分空间来实现空气冷却,或如果优选地,水冷却。根据热限制,吸热设备可以被接合到每个节点模块。可以提供的冷却系统可以包括真空器,其位于计算机机壳外部,并用高CFM风扇将空气吸出计算机机壳。可以设置每个卡中的开口,使得空气从PCI Express卡的远端流动向真空器开口。可以设置变压器,且其布置在印刷电路板上具有充分空气流动的位置,其可通过入口设计来控制。
特定的PCI Express卡能够用连接开关芯片的电缆彼此连接。这将允许卡之间的有效通信并能降低对所连接的主板的PCI Express的带宽要求。
卡还可以通过其PCI Express连接,目前达到PCI e x16,独立地与宿主PC的处理器通信(例如按照图6所示的格式,其中宿主处理器包括减速的CPU 600)。
多个服务器(在本实施方式中虚拟处理器每个都用作服务器)可以用卡以此方式实施,以获得比不用搜索加速卡实施的服务器更高的吞吐量.可选择地,不同于经过它们的开关芯片直接连接集群网络,卡可以被插入到其自身机箱并不直接连接到宿主PC。这将去除PC的功率和成本开销。
每个虚拟处理器模块可以从网络读取输入,以及利用输入关键词在其分配的文件上执行搜索。对此具体实施方式,3个卡的功率使用可以是在每个330瓦的数量级,总共约1000瓦。
这是在具有1600瓦电源的高性能个人计算机的功率覆盖区内。另外,通过每个服务器两个搜索卡,能够降低功耗要求,允许使用功率效率更高的电源,实现仅在减少容量的前提下可得到的功率(例如1200瓦)。
可以使用低功耗、或降频处理器来设计并实施系统。这将允许处理器不必支持虚拟处理器模式,只要功率随着时钟速度大致线性地减小,则将是功率高效的。由此,举例而言,能够使用运行在50MHz的6个真实处理器,代替300MHz处理器来实施6个50MHz虚拟处理器(以消除存储器延迟和流水线性能障碍)。
当不使用虚拟处理器时,存储器延迟和流水线依赖可以损害性能。通过使用相对低延迟的eDRAM和处理器更多地降频(以及添加更多的虚拟处理器来补偿),能够防止存储器延迟问题。
如在各个实施方式中描述的、可以被节点集群执行的并行处理包括金融数据分析或模式识别。实时市场价格和金融和经济数据可以流到处理器,在多个邻近处理器使用相同输入数据执行分析的情况下,该过程可由网络多播或广播功能辅助进行。
能够使用很多不同的金融数据模式识别算法,每个金融数据模式识别算法能够对不同的输入数据进行操作,以找到最具启发的诸如买入或卖出股票的市场动作的模式。这些算法能够从历史数据中导出,且可估计成功动作的可能性。甚至能够计算该估计的误差以确定具体市场动作的风险。
通过利用在各个实施方式中描述的一些概念,在这种金融或经济数据系统中能够搜索更多模式,并能够实时地分析更多支股票。另外,通过增加节点的数量以及在节点的整个集群上散开工作负载,可以降低处理器的负载。在此情况下,通过减少能够选择动作之前必须执行的系列操作的数量,此处描述的新型架构能够降低市场动作的延迟。减少此延迟提高了市场动作在竞争者反应和改变市场状态由此改变所选择的市场动作的成功或失败的概率之前起到效果的概率。
降低进行动作要求的延迟,或增加对输入的实时股票价格和市场数据所完成的分析量,降低了市场动作的风险。这可以显著地改变其中必须进行当前市场决策的风险-回报比。
根据由并行处理系统执行的数据分析算法的类型,可按需要增加或减少高容量存储器。例如,如果算法是高度计算密集的但要求很少的存储器,则可以优化架构以使用更少的高容量存储器以及更多的处理器,增加专用于计算的总功率的比例。如果算法使用更少的对存储器的存取,则能够通过减少存储器带宽和优化该存储器以相对于处理器功耗而消耗更少的功率,来优化架构。针对特定的金融算法,通过保持最近股票价格的记录可以获得很大的利益。如果更大的记录支持更精确的市场决策,则增加存储器容量将变为高优先级。增加每虚拟处理器的存储器容量的决定必须针对简单地添加更多节点的优点来权衡。
当架构被平衡时,网络、处理器、以及存储器的功率使用对于彼此全部是相对类似的,则资源的最优分配最多提供每瓦三倍的更多的性能。因此,在架构继续被优化的同时,利用架构的功率分配的总体平衡与已有的架构相比将仍然提供极大的优良性能。
新获得的金融模式分析算法可以具有不同的网络延迟和/或吞吐量特性。在此情况下,用提供微秒延迟和30Gbps的节点间带宽的Infiniband开关实施节点网络很重要。可选择地,如果通信延迟针对算法性能是高优先级的(例如尽快发送新股票价格到处理器),但总体带宽仍然很小,则能够使用更慢的Infiniband连接(例如2Gbps)。
在此选择实施方式中,大规模并行算法可以被快速地以及在所谓的“功率包络”中执行,即,不使用比所分配的更多的电力。如果这种算法特别适合集群计算,则按照选择实施方式的目的可以是使用极其功率高效的计算机,即被优化以实现最高性能功耗比的计算机,其可以接着与相对低功耗网络开关和路由器联网在一起。
此处描述的计算机可以包括微处理器、存储器、以及一个或更多通信IO设备。视具体实施方式而定,这些部件可以驻留在分离的芯片上,芯片之间的通信要求更多功率并且比片上通信慢得多。片上系统架构可以包括全部在一个芯片上的处理器、存储器、以及IO接口,可大幅降低片外通信。包括充足的片上存储器的架构可以根本不需要专用外部存储器接口,但可以代替地,使用到外部世界的单个接口用于网络通信。
在现代的计算机中使用不同类型的存储器,每一种具有不同的性能和功率特征。目前计算机芯片中使用的两种类型的存储器是SRAM和DRAM。SRAM通常被认为是高性能存储器,其极其快速和反应迅速。因为是低延迟,在发送命令到SRAM与执行该命令之间需要相对少的时间。SRAM的缺点是其每存储器比特使用6个晶体管,由此针对大的存储器消耗可观的芯片面积,这直接涉及每比特的更高的制造成本。另外,全部这些晶体管“泄露”功率,意味着功率使用随着存储器容量而线性增加。
DRAM具有明显不同的特征。与SRAM相比,DRAM是高容量的,因为其每比特仅仅使用一个晶体管和一个电容器。利用已有的低功耗芯片加工技术,CMOS,存在两种类型的晶体管:一种较大的称为“pMOS”以及一种较小的称为“nMOS”。而SRAM使用两种类型,DRAM仅仅可以使用较小的nMOS类型实施。如果DRAM电容器能够被做得很小,或甚至布置在晶体管下方而不是并排,则相同芯片面积下,DRAM的存储器容量能够比SRAM的更大,达到7倍或更多。因为没有通常的每比特的泄露功耗,DRAM的另一优点自然是低功耗。这是因为每个比特存储在电容器中,其自然地用作一种电池。保持对每个比特的存储不需要电源,尽管其偶尔必须被读取或重写,因为电容器缓慢地失去电荷。
特别高容量的DRAM芯片可以使用产生很小的电容器的特殊加工技术来制造。此加工步骤与用来生产处理器逻辑器的加工技术显著不同。按照此处的选择实施方式,集成片上DRAM的片上系统设计可以使用一种加工工艺,其对于处理器逻辑晶体管提供良好的性能同时牺牲建造最小的电容器的一些能力,或其可以使用对处理器逻辑和存储器两者的优化加工技术,通过在分离的芯片上加工,接着将这些芯片彼此堆叠并用小的竖直金属导线实现互联。处理器逻辑和存储器可以在相同芯片上加工。可以完成此工作以避免以很低的误差(微米或更小)堆叠两个不同芯片的难度以及避免与堆叠相关联的冷却效率的降低(例如这能够造成热绝缘,降低冷却效率,使得处理器必须消耗更低的功率以避免热诱发的错误)。
如果在相同加工工序中形成逻辑和存储器(即不进行芯片堆叠),则可能导致的片上存储器容量的减少可以通过连接到片外存储器来补偿。平衡和减少每芯片的处理速度的量使得充足的存储器也将填充芯片的架构将获得提高的功率效率。
一些算法进行多个存储器操作,这些操作是独立的且可以在分离的存储器中并行完成。这些算法用快速的SRAM存储器可以良好地工作,但利用称为“存储体”的多个分离的更慢的DRAM存储器而不是快速的SRAM存储器也能够良好地工作。对于高度并行的算法,很多独立的慢处理可以完成与单个快速处理相同的任务,而最小化或不增加所要求的总循环。
在具有很多分离的DRAM存储体的计算机架构上执行这种算法能够实现与基于SRAM的架构类似的性能,而提供更高的存储器容量并通过消除SRAM泄露而消耗更低的功率。更具体地,可以提供很多并行处理,每一个以固定的慢速足以允许在开始处理的下一循环之前完成存储器操作。
如果一个处理正在使用其他处理尝试存取的存储体,第二处理可能必须等待,因而降低性能。按比例调整存储体的数量使得每个处理具有其自身的存储体,其在功能上可用于每个处理循环解决此问题。此技术将无需要求复杂的调度硬件,但如果为每个处理提供硬件和功率成本及其分配的存储体充分高时,可能很昂贵。
由于在闲置时,DRAM存储体的每个比特自然地几乎不消耗功率(每数毫秒仅仅要求相对少的刷新),此处的选择实施方式建议提供很多片上DRAM存储体,其不应当造成明显的功率增加。该方法因此可以提高功率效率。另外,存储体的巨大数量将提供在芯片上面积有效的高存储器容量,算法可以实际上需要避免不充分的片外存储器存取。
对于非速度关键的功能,从诸如DRAM的数据存储器加载指令的简单方法允许支持具有很多指令的程序。
第二种类型的存储器存取,称为取指令,通过在下一指令的位置检索存储器,在每个指令循环的开始处进行(下面描述)。位置可以在特定的处理器内部地存储在程序计数器中,且可以在每个指令循环期间递增,以便自动地指示下一指令的位置。程序计数器还可以由指令操纵,其允许操作结果确定哪个指令是下一个(例如通过特定指令序列循环多次,直至满足条件)。
对于非速度关键的功能,从数据存储器加载指令的简单方法允许执行大的程序。在高性能处理器中,性能关键指令序列可以被存储或缓存在专用于此任务并且与数据存储器分离的SRAM存储器中。如果多个处理正在执行相同程序,则它们可能共享指令存储器。
算法的性能可以关键地取决于指令的仅很小的列表的迅速执行。由此,在指令代码的小片段上的高性能功能对于高性能计算是至关重要的,而程序的其他部分的较慢的性能可能完全不影响整体性能。尽管SRAM每比特比DRAM自然地使用更多的功率,只要其充分小,且如果被慢速处理来使用,则使用SRAM进行取指令可以是功率高效地实现,其在多个处理之间共享以完全利用SRAM的速度优势。
如以上关于特定实施方式提到的,很多慢速处理可以在单个芯片上执行以实现提高的功率效率。片上DRAM存储器可以被划分为多个独立的存储体,使得每个处理可以每个循环进行存储器操作。可以提供片上网络以允许在相同芯片上执行的多个处理彼此通信。
尽管每个处理的分配的存储体可以是相对小的,处理能够经过片上网络发送消息,以请求在未被分配到初始处理的存储体中进行存储器操作。如果这些非本地存储器操作是相对不频繁的(例如,在代码的关键性能片段之外),则片上网络可以被设计为服务充分低消息速度,使得片上网络在期望阈值之下增加总的芯片功耗,由此保持整个芯片功率高效。
本架构的示例优点是要求比分配到任何一个处理更多的存储器的先前已有的有用程序(诸如完全或部分功能的Linux操作系统)可以利用非本地存储器操作仍然执行,尽管由于片上网络延迟和可能的网络拥堵会导致速度降低。这些非本地的存储器操作可以被限制,以仅存取远程片上存储体的特定部分。在芯片上,这些可存取的存储体部分可以代表邻近存储器空间,促进不为所知的程序的执行,其在初始程序员未想到的专用硬件上被执行。按照此处的实施方式,特定处理器核心可以用作其自身的微处理器,当与存储器和IO(片上网络)耦合时,其能够顺序地执行指令。这些微处理器与外部网络接口通信以实现片外通信。微处理器可以经过片上网络存取其外部网络接口,如同其是另一个微处理器一样。微处理器可以根据网络接口理解和执行的特殊协议或驱动器发送命令和数据到网络接口。如果驱动代码要求是繁重的,则微处理器能够使用更简单的协议将它们的消息聚集到一个或几个片上微处理器。
聚集微处理器可以执行通过简单的片上协议接收的命令,并使用更复杂的驱动器将其传递到网络接口。外部网络和网络接口的速度能力和功能可以被降低,以降低功耗使得总集群性能功耗比将不受网络功率使用的较大影响。这可以提高针对不具有禁止片外通信要求的算法的功率效率。为了与已有的计算机通信,需要使用同期的网络硬件,诸如以太网。功率高效的架构可以选择使用更功率高效的网络硬件在自身之间通信和利用协议翻译设备来提供消息从功率高效的网络到网络的其他部分传递的桥梁。或者,如果提供并非十分功率不有效的外部网络硬件,则片上系统网络接口可以被实施为可兼容。
当开启时,特定微处理器可以通过指令循环开始无限指令循环,例如,如下:(1)根据程序计数器PC从存储器检索下一指令;(2)使PC递增;(3)指令解码;(4)分派(dispatch)指令的寄存器操作数到适当的执行单元,诸如算术逻辑单元ALU;(5)执行指令;(6)如果存在,写入指令结果到微处理器的结果寄存器。计算机时钟采用在无限指令循环中开/关/开/关…翻转的信号。
处理器可以在时钟信号的上升(从关到开)或下降(从开到关)沿启动电路功能,这种情况下的电路功能被称为同步电路。简单的同步处理器可以按照一下方式工作:(1)等待下一时钟信号;(2)进行指令循环的步骤1-6;(3)重复。
请注意,尽管简单处理器可以执行指令循环中的任何步骤,但负责其他5个阶段的逻辑可能不做任何有用的事情。为了减少此浪费以及加速处理,一些现代的微处理器使用流水线范例,其尝试在先前指令完成之前开始下一指令。使用6阶段指令循环,程序能够完全填充流水线,使得没有流水线阶段闲置,以及6个指令被同时执行,以数倍地更快地执行程序。然而,由于当指令的结果(例如分支“IF”语句)能够改变下一指令的选择、或者忧郁流水线中的指令要求尚未完成的且其结果尚不可得的另一指令的结果时会发生流水冲突,这并非总是可能的。
避免流水线中的冲突的方法是使后一指令(以及随后的全部指令)停滞和不继续,直至可得到必要的结果。如果多个阶段在停滞期间变为闲置,则会降低性能。此问题的变通解决包括预测分支指令的结果,或继续到独立的随后指令。这些方法能够要求额外的存储机构和逻辑以及增加功率使用。例如,如果处理器错误地预测分支指令的结果,一些系统将处理器的状态“回退”到进行错误预测之前的先前状态。为此,一些系统使用先进的分支预测硬件,其增加功耗和芯片面积要求。
另一种方法是在程序员的开发工具中包括优化器,其尝试自动地预测程序中的故障并重排指令,使得当程序运行时事故不会频繁地出现。然而,该方法不能避免全部事故,且一些类型的“极其连续(extremely serial)”代码仍然将从流水线操作中得不到益处。
一些架构重复地执行相同处理直至发生流水线停滞,此时其开始执行不同的处理。对于许多架构,微处理器可能不具有准备好被执行的剩余的处理,因为全部处理被停滞。另外,很多架构要求调度硬件来确定下面应运行哪个处理,以及该硬件消耗功率和芯片面积,并可能剥夺一些处理对处理器执行时间的公平分配。
按照此处的实施方式,为了以更低风险的流水线事故保持流水线阶段有效,一种方法是在单个微处理器上执行多个处理,使得在每个新循环的开始,能够为流水线中没有剩余任何指令的处理检索指令。此架构的特例在永久指令循环中以相同顺序执行设定数量的处理,被称为循环法(round robin),其无需要求任何明显的调度电路且可以获得更好的功率效率。在此实施方式中,处理不需要进行比其在微处理器上执行的处理的数量占用更多的循环的操作。可选择地,通知程序员哪些指令可以造成停滞将帮助他们设计系统,其在代码的性能关键片段中避免这些指令。
还可以通过向每个处理提供某种形式的数据存储器来提高性能,其足够快以在单个处理循环中完成存储器操作,并因此避免停滞。如以上所描述的,上述架构还可以适用于利用低功耗DRAM存储器来提供此功能。
在一些实施方式中,微处理器支持充分数量的处理使得DRAM存储体能够在针对该处理的下一指令开始执行之前完成操作。例如,要求20纳秒完成任何操作的DRAM能够为以50MHz或更低时钟频率执行的处理提供单循环数据操作。使用350MHz时钟循环以及支持16个处理的功率高效的微处理器可以在22MHz(350MHz/16个处理=每处理每秒22百万指令循环)操作各个处理,由此在处理循环之间提供45纳秒。额外的23纳秒可用于完成指令循环的其他阶段,诸如取指令和在寄存器中存储结果,使得整个指令循环能够在每个循环过程中完成。
为了提高此处呈现的新计算机架构实施方式的有用性,可以提供额外的开发工具。这些工具可以包括针对例如C的至少一种编程语言的编译器,其将人工写的程序翻译为机器可理解的指令。可以在C中提供可移植程序,其可以针对不同的微处理器被编译。很多开发工具和开源程序均采用C编写而成,使得提供一C编译器便可允许开发者使用其已经熟悉的程序和代码。
计算机的启动包括将处理的起初几个指令加载到存储器中。这些指令可以接着执行加载包含正常操作程序的额外指令。启动片上系统的两个选项包括:(1)从永久存储器加载指令,片上或片外;以及(2)从网络加载指令。
在网络情况下,监视计算机可以针对启动请求观察网络,接着发送指令。上述两种方法不一定是排它的,如永久片上存储器可以包含恰好足够的指令以支持从网络启动。一种潜在地实现很低的启动开销的方法是使用硬编码的第一指令指向DRAM存储器地址零的地址来启动芯片。关闭电源一段充分长的时间后,DRAM存储器全部复位到零。由此,如果特定的微处理器中不包含启动预防措施,则微处理器可以加载全零指令,其将被构建为到自身的跳转语句,将处理限制在无限指令循环中。
如果网络接口从网络加载指令,接着将其直接发送到每个片上处理器的分配的DRAM存储器,则能够在当微处理器忙于指令循环时安装指令到微处理器的存储器(假定非本地存储器存取撤销初始启动期间的取指令)。另外,可以重写(overwrite)零指令,以迫使处理器停止指令循环并跳转到所加载的程序的第一指令。这种或其他方法可以允许更复杂的启动序列(诸如网络启动)在单个片上电路中实施,其最终在芯片上启动全部处理。
一些微处理器处理被分组为很小的组束(bundle)的指令,称为超长指令字(VLIW),通常包含1、2或3个指令。该组束可以由程序员的开发工具诸如编译器进行,其可以按照此处的一个实施方式提供。这些指令,如果独立,能够并行地执行。由此,此处的实施方式的架构能够使用一些结余处理时间(例如23纳秒),以按照特定顺序执行这些指令,使得第二指令取决于第一指令,第三指令取决于第一或第二指令。
这可以用于允许不寻常地有用的VLIW指令,诸如在单个循环执行以下内容的3-指令捆:(1)从存储器加载值;(2)与另一值比较;(3)根据比较结果选择(分支)下一指令。该方法的添加值是更少的值能够被同时读取和写入到保持指令操作数和结果的寄存器。这能够显著地减少实施VLIW架构必需的面积开销、以及可能的功率开销。
每个片上微处理器可以与非常简单的IO处理器连接,其尝试处理间通信,否则通信可能不得不在软件中实施并且要求执行潜在的阻断操作的处理。IO处理器可以接受很简单的命令,诸如“传递本地存储器块A到非本地存储器块B”。微处理器可以检查IO处理器的进展,以及当IO命令完成时,给出新命令到IO处理器。IO处理器将不执行软件,而是代替地,从其分配的微处理器接受很简单的命令,否则对于微处理器这将是非常耗时的。IO处理器因而涉及存储器存取,所以使用IO处理器的可选设置来控制IO处理器行为是有利的。例如,在启动期间,即使本地处理正在尝试从其取指令,IP处理器可以允许来自片上网络的存储器命令获得存取本地存储器的优先级。之后,改变此设定将允许取指令相对于其他存储器操作具有优先级,以提高本地处理的性能。如果仅仅当本地处理不存取本地存储器时IO处理器执行本地存储器操作,则存储器块能够在处理之间传递而不降低处理性能。
以上结合选择实施方式的描述是片上系统计算机架构,包括小型SRAM指令存储器、用于数据存储器的多区DRAM、与简单和有效的调度算法组合以保持完整活动的指令流水线、以及相对低功耗的片上网络、网络接口、以及能够适用于针对最大每瓦吞吐量运行百万个处理的任意的功率包络的集群网络。很多程序在此架构上不能良好执行,因为其不能被有效地划分为百万个在很大程度上独立的处理。
然而,一种特别适合此架构的算法是网络搜索引擎。搜索引擎通过下载网页、在其中搜索链接、以及下载所链接的网页在网络上爬行(crawD。这些下载的网页以数十亿计,接着被存储,使得随后能够被搜索。每天服务百万个用户要求每秒搜索这些页面数千次。为此,大量的计算机集群存储这些网页的文本;每个计算机被分配特定的相对小的页面集合。当新查询到达时,关键词被发送到全部计算机,其接着从其被分配的集合找到最佳匹配的网页。这些结果聚集为等级结构,使得在每个分级等级大多数页面被滤除,仅最佳匹配被传递到等级结构中的下一等级。在等级结构的顶层,找到整个网络上的最佳匹配。
此搜索引擎算法特别适合之前描述的计算机架构,因为网页能够被并行地搜索而没有计算机之间的通信。另外,结果可以被聚集在等级结构中,等级结构的高度确定输出的总通信延迟。通过向等级结构添加几个等级,算法能够使用数倍多的计算机。通过将网页集合划分为更小的集合,算法能够容纳分配到每个处理的小的存储体,诸如DRAM存储体。使用片上高容量DRAM存储器来存储网页允许片上系统的集群在芯片上存储整个网页。新颖的计算机设计架构的其它方面还特别适用于搜索引擎;诸如用于对网页分级的匹配功能,其使用对常规流水线架构进行减速的很多分支语句。以上描述的负载比较分支VLIW指令实际包含在搜索引擎匹配算法的核心中(用于确定哪些网页包含全部关键词)。使用现代的计算机集群将可能要求至少多出10倍的循环来完成搜索的基本微步骤。
另一种特别适用于新颖架构的算法是使用蒙特卡罗模拟的金融算法。这些算法要求随机数作为输入,其可以是用于产生的所消耗的时间,但通过在DRAM存储器中本地地存储多个这些数字,它们容易地可被处理存取(比重新产生这些数字消耗低得多的功率)。在金融蒙特卡罗模拟中,相同的代码可以被执行数百万或数亿次,运行之间的仅有的修改是输入的随机数。这种采样的极限数量是必须的,因为(1)最终答案的精确度必须是一分(cent)的几分之一,且最终答案的总美元值可以是数千,要求7位或更多位的精确度;以及(2)最总答案的精确度以采样数量的平方根缓慢增长。针对一些算法,这些运行的输出必须被平均或相加,使得最终答案是数亿个单独导出的数字的平均值。在每个蒙特卡罗采样期间,诸如“exp”的复杂函数(自然数e自乘到输入幂次)能够采取多个循环来执行。有趣地是,因为模拟的最终结果是如此多的数字的平均值,降低该函数的精确度(要求的精确度的小数位置数量)不能显著影响最终答案。代替直接计算exp函数,在此情况下可使用小查找表,其具有12比特的输入精确度以及12比特的输出精确度。由于新颖的架构中针对每个处理的有效的本地存储,这些表可被每个处理快速地存取。如果存储在大多数本地DRAM存储器中,exp函数将经过表查找在单个循环中完成。
显著地,图12是计算机集群,包括互联的计算机的集合,其一起用作对实质上需要高性能的诸如搜索引擎、金融分析、以及天气预测的应用有用的超级计算机。如所描绘的,示例计算机集群包括多台计算机1200,每一台具有连接到可以是铜或光纤的“导线”1204的网络接口1304。计算机1200可以是x86兼容台式计算机,全部安装在数据中心的相同或附近的机架上。还有可能计算机很小,例如封装中的简单的10mm乘10mm平坦芯片,取决于热产生而可能没有冷却。导线1204可以是Cat6以太网线,且网络1202可以包括实施IP协议的路由器,由此允许计算机1200利用UDP或TCI/IP协议通信。网络还包括联网元件,诸如基于消息的目的地地址在计算机之间传递消息的交换机和路由器。集群应用在每个计算机上运行程序,每个程序执行整体应用的不同的子任务。不是全部应用受益于集群硬件,因为应用必须使用并行算法以在多个计算机上执行,而并非全部任务能够被分离为并行的子任务。
图13是计算机1306的框图,诸如可以用于此处的实施方式描述的高性能集群中。例示的计算机包括处理元件、存储器1302、以及网络接口1304,全部经过总线1308相互连接。总线1308比片上总线或网络慢,其功率效率通常额定为每毫瓦每秒G比特。相比之下,由于更短的导线长度和缺少片上和片外导线之间的转换,片上通信要求更低量级的功率以实现相同性能,并且具有低得多的延迟。
当为元件1300、1302、以及1304使用分离的芯片时,存在能够针对特定的芯片间通信要求获得的最小功率使用,并且这实际上比高效率的PE芯片1310、存储器芯片1312以及网络接口芯片1314实施的总和功率使用大得多。
图14是片上系统1400计算机架构的框图,包含处理元件1300、网络接口1304以及存储器1302,全部位于相同芯片上。网络接口1304将可被称为计算机的片上系统1400连接到片上系统1400的集群。例示的片上系统1400架构使用单个网络接口进行全部外部通信,并因此包括充足的芯片上的存储器1302,以保持好的性能。芯片上需要的存储器1302的精确数量取决于算法。当使用常规的封装技术时,片上系统可以实际上被限制为约100或200平方毫米芯片面积。对于片上系统集群的设计,片上通信的提高的功率效率促进使用更大的芯片大小,使得需要更少的片外通信。
图15是基本处理器架构1500的框图,此处描述的处理器可以根据该架构来实施。程序执行通过迭代地完成指令循环前进。指令循环通过多个步骤前进,以及在例示的实例中这可以被称为6个阶段,包括:1)取指令;2)使PC递增;3)指令解码;4)分派寄存器操作数;5)执行指令;以及6)写入结果。取指令从存储器1302加载程序中的下一指令。这涉及控制单元1508,其经过控制-PC通道1540与程序计数器1504或PC单元通信。该通信告诉PC 1504发送PC 1504的当前值到加载/存储单元1502。
PC值代表从存储器1502定位下一程序指令所必需的存储器地址。PC单元1504接着经过PC-加载/存储通道1542发送PC值1542到加载/存储单元1502。控制单元1508接着经过控制-加载/存储通道1516向加载/存储单元1502发信号,以使用PC值来从存储器读取下一指令。加载/存储单元1502接着经过加载/存储-存储器通道1544发送读取命令到存储器单元1302,指示PC值作为被读取的地址。
存储器单元1302接着从其内部电路获取该值并经过加载/存储-存储器(LS-Mem)通道1544返回代表下一指令的数据到加载/存储单元1502。加载/存储单元接着经过加载/存储-IR通道1518发送指令数据到还被称为IR的指令寄存器1510。这是取指令阶段的末尾。在取指令阶段期间,仅仅使用控制1508、IR 1510、PC 1504、加载/存储1502和存储器1302、以及必需的通道(1540、1542、1544、1518、1516)。处理器1500中的全部其他单元(1512、1514、1520、1534、1536、1526、1528、1532、1538、1524、1522)将在指令循环的以后阶段中使用,但在取指令阶段期间,其不进行任何有用的操作,而仅仅闲置在原始处理器架构中。
下一阶段是递增PC阶段,其中PC 1504与PC递增单元1506通信,使得PC的值由PC递增器1506递增到存储器1302中的下一指令的地址。除了这两个单元和其连接通道,没有其他处理器单元涉及完成递增PC阶段。递增PC阶段不需要在取指令阶段之后立即发生,而可以在取指令阶段之后和写入结果阶段之前进行。
指令循环的下一阶段是指令解码阶段。在此阶段,控制单元1508读取指令存储器1510中的比特并准备发送适当的信号到执行指令必需的处理器1500中的其他单元。除了这两个单元,没有其他单元用于指令解码阶段,并且等待随后的阶段。
下一阶段是分派寄存器操作数阶段。首先考虑指令能够被ALU执行的情况。该阶段通过控制单元1508在控制-寄存器通道1520上向寄存器单元1522发信号前进,从而通过具体端口(读取端口11526或读取端口21528)向ALU 1530发送来自具体寄存器1524的在当前指令中被指示为操作数的数据。如果指令具有在寄存器中存储的两个操作数,从控制1508发送到寄存器1522的信号将还指定第二寄存器1524通过另一个读取端口被发送。可选择地,控制单元1508可以通过立即数-ALU通道1534提供指令数据中包含的操作数,称为立即数。指令可以指定或者0个、1个、或2个操作数。在单个操作数的情况下,操作数可以是立即数或寄存器1524操作数。在2个操作数的情况下,两个操作数可以被设置在两个寄存器1524中,或单个寄存器1524和单个立即数中。
如果指令不具有任何操作数,则将不发送信号到寄存器(1522)并且将不向ALU1530发送立即值。当寄存器1522接收信号以发送操作数到ALU 1530时,它们经过在来自控制单元1508的命令中指定的端口发送这些操作数到ALU 1530。如同指令循环中先前的阶段,处理器1500和存储器单元1302的多个部分在分派寄存器操作数阶段闲置。
如果指令不是ALU 1530指令而代替地是存储器操作,操作数将通过寄存器-加载/存储通道1512发送到加载/存储单元1502。在读取存储器操作的情况下,控制单元1508将还指示发送结果到目的地寄存器1524。
下一阶段是执行指令阶段。首先,考虑当前指令是ALU指令1530的情况。在此阶段,控制单元1508通过指令指定通道1536向ALU 1530指定当前指令中所指定的操作。控制单元还向ALU 1530发送在随后的写入结果阶段中结果应该被发送到的目的地。ALU 1530接着进行操作以及计算结果。
在当前指令不是ALU 1530指令而是存储器指令的情况下,控制单元1508发送信号到加载/存储单元1502,以进行当前指令中指定的读取或写入存储器操作。加载/存储单元1502接着发送命令到存储器单元1302,其具有在先前阶段中由寄存器1522提供的数据。如果存储器操作是写入命令,加载/存储单元1502提供的数据指定被写入的存储器地址以及在此写入的值。存储器单元1302将接着把数据写到在其内部电路中的该位置。如果存储器操作是读取操作,则加载/存储单元1502指定被读取的数据的位置,接着存储器1302接着从其内部电路检索被读取的数据以及通过加载/存储-存储器通道1544将其发送回加载/存储单元1502。
在指令循环的下一个并且是最终的阶段,结果被写入到当前指令指示的目的地。对于不是跳转或分支指令的ALU 1530指令,ALU 1530将通过ALU-寄存器通道1532发送计算结果到由控制单元1508先前指示的寄存器1524。在当前指令是作为跳转或分支指令的ALU指令1530的情况下,结果将通过ALU-PC通道1538被写入到PC 1504,由此改变在下一指令循环的开始时哪个指令将被取出。在指令是存储器读取指令的情况下,加载/存储单元1502将通过加载/存储-寄存器通道1514发送先前检索的数据到适当的寄存器1524,指定哪个寄存器1524得到如先前由控制单元1508指示的数据。
图16是实施多个虚拟处理器的处理器1600的框图,其与图15的区别在于存在具有提供给每个虚拟处理器诸如PC 1504、指令寄存器(IR)1510、以及数据寄存器集合1522的分离的资源。该架构1600以交错方式针对每个虚拟处理器实施分离的指令循环,使得在任何特定时刻确切地一个VP进行取指令,一个VP将指令解码,一个VP分派寄存器操作数,一个VP执行指令,以及一个VP写入结果。每个VP执行其他VP不执行的指令循环中的步骤。整个处理器1600的资源每个循环被利用。与原始处理器1500相比,新型处理器能够6倍地更快地执行指令。
作为示例处理器周期,假设VP#6当前正在取指令,使用VP#6PC 1612指定取哪个指令,其将存储在VP#6指令寄存器1650中。这意味着VP#5正在递增VP#5PC 1610,VP#4正在解码两个循环之前取得的在VP#4指令寄存器1646中的指令。VP#3正在分派寄存器操作数。这些寄存器操作数仅仅从VP#3寄存器1624中选择。VP#2正在使用先前循环中分派的VP#2寄存器1622操作数执行指令。VP#1正在写入结果到VP#1PC 1602或VP#1寄存器1620。
在下一处理器周期中,每个虚拟处理器将移动到指令循环中的下一阶段。由于VP#1刚刚结束完成指令循环,其将开始新的指令循环,从第一阶段取指令开始。
小的闪存存储器可以驻留在片上系统1400旁边或片上系统之内。闪存存储器提供的优点是其能够完全关闭(因而不消耗功率)而且当返回头开启时仍然记忆其存储的数据,这被称为持久性数据。这种数据对于存储诸如启动加载指令的随机存取的数据是有用的。
图17是说明性的示例程序的流程图1700,其包括分支指令1706、存储器操作1702、算术操作(1704、1706)以及无条件跳转1708。条件分支指令实际是两个指令,即比较和条件分支,在下图中其将被分成这些组成部分。程序具有与搜索引擎的内部指令循环类似的属性。搜索引擎的功能是找到包含特定查询中的全部关键词的全部网页。其能够通过找到针对每个关键词的一个网页列表来完成。这些列表能够接着被预分类,以帮助搜索处理。作为示例,考虑网页的两个列表。为了找到两个列表中的全部网页,简单地比较列表开始处的两个网页(假设每个列表已经根据其索引以升序被分类)。如果第一列表的第一网页标记高于第二列表的第一网页的,则页面不匹配,且因此较低的网页已知不在两个列表中,以及因此从列表中去除第二列表的第一网页。如果第一列表的第一网页低于第二列表的第一网页,则页面不匹配,且较低的网页已知不在两个列表中,以及因此去除第一列表的第一网页。执行此搜索引擎功能的程序必需重复地从存储器加载网页索引,比较网页索引,并根据比较结果分支到不同的指令。
图18为流程图1800,其中每个节点是实际CPU指令,使得图17中的程序1700被图18的计算机指令列表执行。“内环”1820包含减法指令1802,随后是比较指令,其取决于减法1804的结果,接着分支指令1806,其取决于比较的结果。指令左边的存储器地址允许GOTO语句1810,以例示实际计算机指令如何使用存储器来存储用于执行程序的指令。外环1822也执行在进入内环1820之前的存储器操作1812,内环1820的第一指令取决于此,并因此在减法1802能够发生之前必须完成存储器操作。
该程序使用不同于图15和图16的描述中使用的新的指令循环。新指令循环在相同阶段一起完成解码和分派指令。其他的不同是递增PC阶段已从阶段2移动到阶段5。在其它方面,顺序指令循环阶段是相同的。因此对于以下的示例的新指令循环是(1)取指令(1900、1910、1920、1930、1940、1950);(2)将指令解码以及分派寄存器操作数(在以下的图中有时简写为“解码”)(1902、1912、1922、1932、1942、1952);(3)执行指令(1904、1914、1924、1934、1944、1954);(4)写入结果(1906、1916、1926、1936、1946、1956);以及(5)递增PC(如果指令还没有对其进行修改)(1908、1918、1928、1938、1948、1958)。应注意不仅仅能够在5或6个阶段完成指令循环,而且每个阶段能够被进一步分解以实现期望数量的阶段,尽管计算机架构通常仅仅实施具有对指令循环的预定分解的单一类型的流水线。例如,Intel Pentium 4??架构使用34阶段流水线。在图19中,阶段根据图18中的其对应指令被分组。
尽管未示出箭头,每个框能够并且通常流到其下方的下一框中。唯一的例外是最后指令的最后阶段1958。其他附加说明是分支“IF”指令的最后阶段1938。在该指令中,或者阶段1936将设定PC以指向内环1802的第一指令,使得下一阶段取指令1910,或者阶段1938将递增PC以指向下方的下一指令1808,使得下一阶段将是取指令1940。
图20的框图中,相同水平轴上的操作同时发生,表中下方的操作在时间上随后发生。每列示出单个虚拟处理器的指令循环操作。每个虚拟处理器开始于图19的第一指令的第一阶段1900。如果每个虚拟处理器必须等待开始指令循环以取它们的第一指令,则虚拟处理器不全部同时操作的唯一时间是在启动时。在时间T=52005,全部虚拟处理器同时操作,并且将继续这样做直至处理器关闭。每个框描述图19中正在操作的指令循环阶段。全部虚拟处理器在程序的开始处已经开始。因为在此执行期间没有遇到条件分支(“IF”)指令,因而全部虚拟处理器继续进行以执行相同指令,尽管它们的阶段交错。可见没有流水线事故发生,因为存在的虚拟处理器(5个)至少与流水线阶段(也是5个)数量相同。由此,虚拟处理器实现针对流水线的处理器的极端高的指令吞吐量。然而,本示例要求指令循环的全部阶段仅仅需要单个循环来完成。
图21是处理器架构2160的示意框图,其利用片上DRAM(2100)存储器存储作为主要数据存储机构,并利用快速指令本地存储或仅仅指令存储2140作为主要存储器,从其取得指令。在该架构中,指令存储2140是快速的,其可以使用SRAM存储器来实现。为了使指令存储2140相对于微处理器和DRAM存储器不消耗过多功率,指令存储2140可以做得非常小。指令还能够从DRAM存储器2100中取出,然而,在性能关键的代码中应该避免这一点。因为性能关键的代码通常是多次重复的小的指令集合,很多程序将能够将此性能关键代码装备到指令存储2140中。
使架构适于使用DRAM存储器2100,其被组织为4个存储体2110、2112、2114、以及2116,并要求4个处理器周期来完成,称为4周期延迟。为了允许这种指令在指令的单个执行阶段中执行,虚拟处理器的数量已经增加到8个,包括新的VP#7(2120)和VP#8(2122)。由此,通过分配两个处理器的任务(例如VP#1和VP#5到存储体2110),DRAM存储器2100能够对于每个虚拟处理器周期执行两个存储器操作。通过延长执行阶段到4个周期,以及针对包括取指令、解码和分派、写入结果、以及递增PC的其他4个阶段保持单个循环阶段,能够使每个虚拟处理器在每个虚拟处理器周期完成整个指令循环。例如,在硬件处理器周期T=I虚拟处理器#1(VP#1)可以在取指令循环。由此,在T=2,虚拟处理器#1将进行解码和分派阶段。在T=3,虚拟处理器将开始指令循环的执行阶段,其将占据4个硬件循环(半个虚拟处理器周期,由于存在8个虚拟处理器),无论指令是否是存储器操作或ALU 1530功能。如果指令是ALU指令,虚拟处理器可以花费循环4、5、6来仅仅等待。请注意,尽管虚拟处理器在等待,ALU仍然每个硬件循环服务于不同的虚拟处理器(处理任何非存储器指令),因而完全不闲置。对应其余处理器也是同样,除了被等待虚拟处理器消耗的额外寄存器之外,其实际上闲置。尽管该架构在初看起来很慢,但在损失虚拟处理器要求的额外硬件寄存器的情况下硬件被完全利用。通过最小化每个虚拟处理器所要求的寄存器的数量,能够降低这些寄存器的开销。尽管可用寄存器的减少可能大大地降低架构的性能,但DRAM存储器的高带宽可用性减少了因为在少量的寄存器和DRAM存储器之间移动数据而付出的损失。
请注意,在架构2160中,结合额外的虚拟处理器VP#7和VP#8,系统控制1508现在包括VP#7IR 2152和VP#8IR 2154。此外,针对VP#7(2132)和VP#8(2134)的寄存器已经添加到寄存器块1522。此外,参照图21A,在控制1508中设置选择器功能2110,以控制每个虚拟处理器VP#1-VP#8的选择操作,由此保持任务/线程的顺序执行,以及优化虚拟处理器架构的优点,其针对每个程序计数器具有一个输出以及使能这些循环中的每一个。基于选择器2170的方向,经过每个使能线2172、2174、2176、2178、2180、2182、2190、2192,被使能的程序计数器将发送该程序计数器值到输出总线。该值将被取指令单元2140接收。在此配置中,取指令单元2140仅仅需要支持一个输入通道,以及每个循环该选择器确保被取指令单元2140接收的各个程序计数器是针对该循环被调度的正确的一个。当选择器2170接收初始化输入2194时,其复位到其调度的开始。示例调度将在循环1期间输出程序计数1,在循环2期间输出程序计数2,等等,以及在循环8期间输出程序计数8,以及在循环9期间开始调度以在循环9期间输出程序计数1,以此类推。选择器功能的版本适用于此处描述的任何实施方式,其中提供多个虚拟处理器。
为了完成示例,在硬件循环T=7,虚拟处理器#1进行写入结果阶段,在T=8虚拟处理器#1(VP#1)进行递增PC阶段,以及在T=9将开始新的指令循环。在另一实例中,虚拟处理器可以在执行阶段期间进行存储器操作,其将要求4个循环,在先前示例中从T=3到T=6。这使得架构能够通过适应DRAM的高延迟,使用DRAM 2100作为低功耗高容量数据存储代替SRAM数据缓存,由此提高功率效率。该架构的特征在于虚拟处理器不为了随机存取其分配的存储体中保持的存储器而牺牲性能。这与使用高速SRAM数据缓存的一些高速架构形成对比,其通常仍然不是足够快地在单个循环中检索数据。
每个DRAM存储体可以被构建,以便相对于其本地服务的处理器的功耗而使用相当的(或更少的)量的功率。一种方法是充分地共享DRAM逻辑资源,诸如选择行和读取位线的那些资源。在大多数DRAM操作中,逻辑是闲置的,仅仅坚持先前计算的值。在这些电路中使用简单的锁存器将允许这些坚持继续以及空出闲置的DRAM逻辑资源来服务其他存储体。由此,DRAM逻辑资源可以按照流水线方式工作,以实现更好的面积效率和功率效率。
降低DRAM存储器的功耗的另一方法是降低存储器操作期间所感测的数字比特。这可以通过减少存储体中的列的数量来完成。这允许存储器容量与降低的功耗折衷,由此允许存储体和处理器平衡以及彼此使用相似的功率。
通过使用也被称为“字”的尽量小的但对于代码的性能关键部分仍然充分的区块(chunk)进行存储器操作,能够针对功率效率来优化DRAM存储器2100。如果CPU上的寄存器使用32比特,则一种这样的方法可以按照32比特区块检索数据。另一种方法可以优化存储器区块以用于取指令。例如,在指令必须经常从数据存储器取得以及指令通常是80比特或最大是80比特的情况下,这种方法可以使用80比特区块。
图22是框图2200,示出图21中的架构2160的示例状态。因为DRAM存储器存取要求4个循环来完成,执行阶段(1904、1914、1924、1934、1944、1954)被分派4个循环来完成,而不管指令正在被执行。为此,将总是存在4个虚拟处理器等待执行阶段,在本示例中这4个虚拟处理器是执行分支指令1934的VP#3(2283)、执行比较指令1924的VP#4(2284)、执行比较指令1924的VP#5(2285)、以及执行存储器指令的VP#6(2286)。由于使用高速指令存储2140,获取阶段(1900、1910、1920、1940、1950)要求仅仅一个阶段循环来完成。在本示例中,VP#8(2288)是取指令阶段1910中的VP。解码和分派阶段(1902、1912、1922、1932、1942、1952)也仅仅要求一个循环来完成,以及在本示例中VP#7正在执行此阶段1952。写入结果阶段(1906、1916、1926、1936、1946、1956)也要求仅仅一个循环来完成,以及在本示例中VP#2(2282)正在执行此阶段1946。递增PC阶段(1908、1918、1928、1938、1948、1958)也仅仅要求一个循环来完成,以及在本示例中VP#1(1981)正在执行此阶段1918。执行8个虚拟处理器(2281-2288)的微处理器的这个快照(snapshot)将被用作下一图中的顺序分析的起点。
图23是框图2300,例示10个操作循环,其中8个虚拟处理器(2281-2288)执行相同程序,但在执行的不同起点开始。在任何时间点(2301-2310)可见全部指令循环阶段被不同的虚拟处理器(2218-2288)同时执行。此外,虚拟处理器(2218-2288)中的三个在执行阶段中等待,以及,如果正在执行的指令是存储器操作,则该处理等待存储器操作完成。更具体地,在存储器读取指令的情况下,该处理等待从DRAM存储体到达的存储器数据。这是针对VP#8(2288)在时间T=4、T=5、以及T=6(2304、2305、2306)的情况。
当虚拟处理器能够仅仅使用本地DRAM存储器进行其存储器操作时,示例架构能够以实时方式工作,因为全部这些指令在固定持续时间执行。
图24是多核心片上系统2400的框图。每个核心是实施多个虚拟处理器和多个DRAM存储体2160的微处理器。微处理器与诸如纵横开关的片上网络(NOC)2410开关接口。如果必要,该架构牺牲了总的可用带宽,以降低片上网络的功耗,使得对整体芯片功耗的影响不超过容许阈值。网络接口2404通过NOC 2410,使用与微处理器彼此通信使用的相同协议,与微处理器通信。如果IP核心(得到许可的芯片部件)实施期望的网络接口,可以使用适配器电路来将微处理器通信翻译到网络接口IP核心的片上接口。
图25是板上具有多个多核心芯片2400的桌面扩展卡2550的框图。多核心芯片经过以太网开关2540彼此接口,尽管其他网络协议相对于经过以太网的IP可以提供提高的功率效率。例如,通过尽快地传递消息,可以使用非阻断开关架构来降低缓冲器负载,由此降低功耗使用。以太网网络芯片2540将以太网与PCI-Express适配器芯片2520接口,其能够在经过PIC-express接触器(contact)2530附接的台式计算机与扩展卡2550上的多核心片上系统2400之间传递消息。
多核心芯片2400能够被称为节点,且驻留在相同扩展卡2550上的节点可以被称为在相同的节点组中。节点组中的节点可以使用关于哪些其它节点连接到相同的网络开关芯片2540或者仅通过几个网络开关芯片2540连接以及驻留在相同扩展卡2550上的知识。该知识可以用于避免最高延迟网络操作以及向已知的节点对等体提供合理的延迟分布界限,其可能以其它方式通过更频繁地与更高延迟的对等体通信而性能不佳。
如果比由单个网络开关2540能够服务的更多的节点被布置在扩展卡2550上,则能够以分级方式连接网络,以便减少连接全部这些节点需要的网络开关的数量,因而降低功耗。由此,可能数百或更多的很多个节点可以被布置在相同扩展卡2550上。
图26是框图,示出了多个桌上扩展卡2550可如何装备到台式计算机2600的机壳内部。从在台式计算机2600上执行受益最多的那些计算(诸如要求存取硬盘驱动器的那些计算)可以在台式计算机运行,而桌上扩展卡2550可以仅被分配需要加速的并且其非常适合的那些任务。
图27是DRAM存储器2100的框图,其被划分为4个存储体(2110、2112、2114、2116),每个存储体被进一步划分为由所分配的虚拟处理器(2711-2718)使用的存储器区域、以及为必须在片上运行但具有诸如数兆字节的高存储器要求的程序所保留的存储器区域2720。Linux的一些版本能够以相对低的存储器要求运行(与台式Linux相比),但这些要求超出任何一个DRAM存储体的存储器容量。尽管如此,多个DRAM存储体可以组合并模拟相邻的地址空间到这些程序,假定加载/存储单元1502包含地址翻译器2730,使得原始存储器寻址(例如,假设在数兆字节存储器之间随机存取)能够被翻译,以指定适当的存储体和存储体中的地址。在整个片上系统1400上,单个DRAM可以组合,以提供显著的大的相邻的地址空间,促进未能有效使用存储器但对于系统仍然有用的程序的执行。
图28为框图2801,其增大先前导出的片上系统2400(图24),使得每个处理核心2160与在片上网络2410、DRAM存储器2100(图21)、以及处理核心1600之间起中介作用的IO处理器2800耦合。IO处理器2800可以从处理核心1600接受简单的命令,诸如将驻留在片上非本地DRAM存储器的存储器区块加载到本地DRAM存储器中。IO处理器可以提供设置,其允许IO处理器的优先级行为按照期望方式配置,诸如将处理器DRAM存储器请求1600列为优先,其为针对不驻留在指令存储2140中的指令的取指令。IO处理器2800能够执行这些简单命令而不干扰微处理器1600的执行,由此提高要求IO和处理器计算的程序的吞吐量。由IO处理器2800执行的IO命令可能以其它方式使用阻断IO处理器指令来要求很多软件处理器周期来完成。
图形工具可以包括图标或按钮,其能够通过用位于图标按钮上方的光标点击鼠标来激活。图形工具可以包括计算机屏幕上呈现的表格或文字输入。图形工具可以包括显示的符号或文字的菜单,其可以通过指向和点击特定的符号或文字来选择。图形工具还能够包括下拉菜单,或任何其他类型的图形工具。可选择地,可以提供其他工具以允许用户控制和操作此处描绘的界面中提到的各个功能,例如通过使用命令行类型界面。
以上是本发明的例示实施方式的详细描述。可以进行各种修改和添加而不背离本发明的实质和范围。以上描述的各个实施方式的每一个可以与所描述的其他实施方式组合以提供多个特征。此外,尽管以上描述了本发明的系统和方法的多个分离的实施方式,但此处描述的仅仅是本发明的原理的应用的例示。此处描述的处理或功能可以在单个处理平台上进行或由通过适当的互联而链接的分布式处理平台进行。在这种处理中所处理的或作为这种处理的结果而产生的数据可以在任何类型的存储器中存储。举例而言,这种数据可以存储在临时存储器中,诸如特定计算机的随机存取存储器中。另外,或可选择地,这种数据可以存储在长期存储设备中,例如磁盘、可重写光盘等。根据本发明定义的计算机系统中例示的操作系统可以是任何可接受的计算机操作系统,具有处理此处构想的并行处理任务的功能。类似地,此处构想的计算机系统可适于运行相对的常规应用程序,其包括系列处理,特别地,其中这种处理的速度无关紧要。因此,此描述意在仅作为举例,而并非以其它方式限制本发明的范围。

Claims (22)

1.一种计算系统,包括:
网页搜索节点,该网页搜索节点包括网页集合;
网络服务器,该网络服务器配置为经过网络浏览器从特定用户接收包括关键词的搜索查询,其中使所述节点搜索其自身集合中与所述搜索查询最佳匹配的页面;以及
搜索页面返回器,该搜索页面返回器配置为向所述用户返回排名高的页面;
其中所述节点包括功率效率增强的处理子系统,所述功率效率增强的子系统包括M个处理器,所述M个处理器配置为模拟N个虚拟处理器并限制所述N个虚拟处理器中的每一个存取存储器的虚拟处理器存储器存取速率。
2.根据权利要求1所述的系统,所述计算系统还包括网页搜索计算机集群,该网页搜索计算机集群包括联网的节点,所述节点被分配给网页的不同集合。
3.根据权利要求2所述的系统,其中所述网页搜索计算机集群包括超级计算机,该超级计算机包括多个集群。
4.根据权利要求2所述的系统,其中所述节点包括其自身的网页集合。
5.根据权利要求1所述的系统,所述计算系统还包括结果收集器,该结果收集器配置为从所述节点将结果收集到一起,其中所述搜索页面返回器从被收集到一起的所述结果中返回所述排名高的页面。
6.根据权利要求1所述的系统,其中由所述虚拟处理器存取的所述存储器包括DRAM存储器。
7.根据权利要求6所述的系统,其中所述DRAM存储器包括对模拟特定虚拟处理器的特定处理器而言为本地的本地存储器。
8.根据权利要求6所述的系统,其中所述DRAM存储器包括针对特定虚拟处理器的本地存储器,该本地存储器与模拟所述特定虚拟处理器的处理器位于同一芯片上。
9.根据权利要求1所述的系统,其中N是M的倍数。
10.根据权利要求1所述的系统,其中N等于(16)M。
11.根据权利要求1所述的系统,其中N等于kM,其中k是整数值。
12.根据权利要求1所述的系统,其中所述虚拟处理器存储器存取速率根据每秒虚拟处理器进行的存储器存取被限制为远低于所述M个处理器中的一个的处理器时钟速率的值。
14.根据权利要求12所述的系统,其中所述虚拟处理器存储器存取速率小于或大致等于所述处理器时钟速率的(M/N)倍。
15.根据权利要求1所述的系统,其中针对所述搜索节点的所述网页集合被划分为能够被并行搜索的多个小数据库。
16.根据权利要求15所述的系统,其中每个所划分的小数据库存储在与虚拟处理器相关联的本地DRAM中。
17.根据权利要求16所述的系统,其中针对搜索节点的所述网页集合为一碎片(shard)。
18.根据权利要求1所述的系统,其中所述M个处理器的特定处理器被配置为通过对所述特定处理器进行时间分片来模拟一组虚拟处理器。
19.根据权利要求18所述的系统,其中所述虚拟处理器中的每一个支持线程,以及其中所述特定处理器在该特定处理器的特定单个循环期间执行针对所述特定虚拟处理器的指令,以及其中所述处理器在所述特定处理器的下一单个循环期间执行针对下一虚拟处理器的指令。
20.一种提供计算系统的方法,该方法包括:
提供包括联网的节点的网页搜索计算机集群;以及
用一个或更多功率效率增强的计算机代替至少一个所述网页搜索计算机,所述一个或更多功率效率增强的计算机集体地包括M个处理器,所述M个处理器配置为模拟N个虚拟处理器并限制所述N个虚拟处理器中的每一个存取存储器的速率,其中M和N是整数值以及其中N大于M。
21.一种计算系统,该计算系统包括:
处理卡;
双工接口,该双工接口配置为将所述处理卡连接到中央处理单元;
所述处理卡包括多个处理器核心,所述处理器核心中标的特定处理器核心包括DRAM、多组特定处理器、以及用于在所述特定处理器之间通信的信道,其中所述特定处理器的输入并联连接到所述双工接口的输出,以及其中所述特定处理器的输出并联连接到所述双工接口的输入;以及
所述处理器核心配置在流水线中以实现每瓦高指令吞吐量。
22.一种用于计算系统的功率效率增强的处理子系统,该处理子系统包括:
至少一个物理处理器,该物理处理器被组织为多个虚拟处理器,所述虚拟处理器中的每一个工作于流水线任务,所述虚拟处理器中的每一个选择性地与可操作地连接到所述物理处理器并且包括DRAM的存储器交互。
23.根据权利要求22所述的系统,其中针对所述DRAM的虚拟处理器存储器存取速率根据每秒虚拟处理器进行的存储器存取被限制为远低于所述物理处理器中的一个的处理器时钟速率的值。
CN200880117897.9A 2007-09-24 2008-09-24 具有降低功耗的并行处理计算机系统及提供该系统的方法 Expired - Fee Related CN101932996B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US97471307P 2007-09-24 2007-09-24
US60/974,713 2007-09-24
US2175708P 2008-01-17 2008-01-17
US61/021,757 2008-01-17
US12/236,187 US8200992B2 (en) 2007-09-24 2008-09-23 Parallel processing computer systems with reduced power consumption and methods for providing the same
US12/236,187 2008-09-23
PCT/US2008/011079 WO2009042156A1 (en) 2007-09-24 2008-09-24 Parallel processing computer system with reduced power consumption and method for providing the same

Publications (2)

Publication Number Publication Date
CN101932996A true CN101932996A (zh) 2010-12-29
CN101932996B CN101932996B (zh) 2014-03-26

Family

ID=40472802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880117897.9A Expired - Fee Related CN101932996B (zh) 2007-09-24 2008-09-24 具有降低功耗的并行处理计算机系统及提供该系统的方法

Country Status (5)

Country Link
US (4) US8200992B2 (zh)
EP (2) EP2523100A3 (zh)
CN (1) CN101932996B (zh)
IL (1) IL204633A (zh)
WO (1) WO2009042156A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107894963A (zh) * 2017-11-27 2018-04-10 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
CN108292282A (zh) * 2015-12-24 2018-07-17 英特尔公司 分解块存储控制器堆栈
CN110119303A (zh) * 2013-11-12 2019-08-13 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN110520856A (zh) * 2017-04-17 2019-11-29 微软技术许可有限责任公司 处理不邻近存储器作为邻近存储器以提高神经网络的性能
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN113543045A (zh) * 2021-05-28 2021-10-22 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法
CN114902619A (zh) * 2019-12-31 2022-08-12 北京希姆计算科技有限公司 一种存储管理装置及芯片

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8238624B2 (en) 2007-01-30 2012-08-07 International Business Machines Corporation Hybrid medical image processing
US9003211B2 (en) * 2007-03-20 2015-04-07 Power Assure, Inc. Method and apparatus for holistic power management to dynamically and automatically turn servers, network equipment and facility components on and off inside and across multiple data centers based on a variety of parameters without violating existing service levels
US8326092B2 (en) * 2007-04-23 2012-12-04 International Business Machines Corporation Heterogeneous image processing system
US8462369B2 (en) 2007-04-23 2013-06-11 International Business Machines Corporation Hybrid image processing system for a single field of view having a plurality of inspection threads
US8331737B2 (en) * 2007-04-23 2012-12-11 International Business Machines Corporation Heterogeneous image processing system
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US8675219B2 (en) 2007-10-24 2014-03-18 International Business Machines Corporation High bandwidth image processing with run time library function offload via task distribution to special purpose engines
US20090109996A1 (en) * 2007-10-29 2009-04-30 Hoover Russell D Network on Chip
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US20090125703A1 (en) * 2007-11-09 2009-05-14 Mejdrich Eric O Context Switching on a Network On Chip
US8261025B2 (en) * 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US9135073B2 (en) 2007-11-15 2015-09-15 International Business Machines Corporation Server-processor hybrid system for processing data
US8526422B2 (en) * 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US9332074B2 (en) 2007-12-06 2016-05-03 International Business Machines Corporation Memory to memory communication and storage for hybrid systems
US7917703B2 (en) * 2007-12-13 2011-03-29 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8229251B2 (en) 2008-02-08 2012-07-24 International Business Machines Corporation Pre-processing optimization of an image processing system
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8490110B2 (en) * 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US7973804B2 (en) * 2008-03-11 2011-07-05 International Business Machines Corporation Image processing with highly threaded texture fragment generation
US8379963B2 (en) 2008-03-28 2013-02-19 International Business Machines Corporation Visual inspection system
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US7970561B2 (en) * 2008-04-14 2011-06-28 Power Assure, Inc. Method to calculate energy efficiency of information technology equipment
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8494833B2 (en) * 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US8392664B2 (en) * 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US7991978B2 (en) * 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US7861065B2 (en) * 2008-05-09 2010-12-28 International Business Machines Corporation Preferential dispatching of computer program instructions
US20090282211A1 (en) * 2008-05-09 2009-11-12 International Business Machines Network On Chip With Partitions
US8214845B2 (en) * 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US7958340B2 (en) * 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US20090282419A1 (en) * 2008-05-09 2009-11-12 International Business Machines Corporation Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) * 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8438578B2 (en) * 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
US9836555B2 (en) * 2009-06-26 2017-12-05 Micron Technology, Inc. Methods and devices for saving and/or restoring a state of a pattern-recognition processor
JP5549131B2 (ja) * 2009-07-07 2014-07-16 富士通株式会社 ジョブ割当装置、ジョブ割当方法及びジョブ割当プログラム
US8639956B2 (en) * 2009-09-30 2014-01-28 International Business Machines Corporation Reducing energy consumption in a computing cluster
JP5532849B2 (ja) * 2009-11-20 2014-06-25 富士通株式会社 コンピュータ、プロセス間通信プログラム、およびプロセス間通信方法
US8826271B2 (en) * 2010-04-28 2014-09-02 Cavium, Inc. Method and apparatus for a virtual system on chip
US10635062B2 (en) 2010-06-29 2020-04-28 International Business Machines Corporation Systems and methods for highly parallel processing of parameterized simulations
EP2498187A1 (en) * 2011-03-04 2012-09-12 Nxp B.V. A multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement
US9176670B2 (en) * 2011-04-26 2015-11-03 Taejin Info Tech Co., Ltd. System architecture based on asymmetric raid storage
US9141131B2 (en) 2011-08-26 2015-09-22 Cognitive Electronics, Inc. Methods and systems for performing exponentiation in a parallel processing environment
US9619357B2 (en) * 2011-09-28 2017-04-11 International Business Machines Corporation Hybrid storage devices
US9146855B2 (en) * 2012-01-09 2015-09-29 Dell Products Lp Systems and methods for tracking and managing non-volatile memory wear
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
US9158691B2 (en) 2012-12-14 2015-10-13 Apple Inc. Cross dependency checking logic
US9063754B2 (en) 2013-03-15 2015-06-23 Cognitive Electronics, Inc. Profiling and optimization of program code/application
US9201662B2 (en) * 2013-03-29 2015-12-01 Dell Products, Lp System and method for pre-operating system memory map management to minimize operating system failures
US9473388B2 (en) 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
CN104572650A (zh) * 2013-10-11 2015-04-29 中兴通讯股份有限公司 浏览器智能阅读实现方法、装置及其终端
US9703925B1 (en) * 2013-10-22 2017-07-11 Pivotal Software, Inc. Rapid processing of biological sequence data
US9158882B2 (en) * 2013-12-19 2015-10-13 Netspeed Systems Automatic pipelining of NoC channels to meet timing and/or performance
US9432288B2 (en) * 2014-02-28 2016-08-30 Cavium, Inc. System on chip link layer protocol
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9009200B1 (en) * 2014-05-17 2015-04-14 Khalid Omar Thabit Method of searching text based on two computer hardware processing properties: indirect memory addressing and ASCII encoding
JP6449568B2 (ja) * 2014-06-24 2019-01-09 京セラ株式会社 携帯端末及び制御方法
US9787564B2 (en) * 2014-08-04 2017-10-10 Cisco Technology, Inc. Algorithm for latency saving calculation in a piped message protocol on proxy caching engine
GB2530261B (en) 2014-09-16 2016-08-03 Ibm Memory and processor hierarchy to improve power efficiency
US9742630B2 (en) 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US10275154B2 (en) 2014-11-05 2019-04-30 Oracle International Corporation Building memory layouts in software programs
US10353793B2 (en) 2014-11-05 2019-07-16 Oracle International Corporation Identifying improvements to memory usage of software programs
US9552192B2 (en) * 2014-11-05 2017-01-24 Oracle International Corporation Context-based generation of memory layouts in software programs
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US11010054B1 (en) * 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US9760402B2 (en) 2015-07-23 2017-09-12 Dell Products L.P. Systems and methods for input/output traffic shaping for optimal performance under thermal constraints
US10447461B2 (en) * 2015-12-01 2019-10-15 Infineon Technologies Austria Ag Accessing data via different clocks
US11150909B2 (en) 2015-12-11 2021-10-19 International Business Machines Corporation Energy efficient source operand issue
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10235211B2 (en) 2016-04-22 2019-03-19 Cavium, Llc Method and apparatus for dynamic virtual system on chip
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
CN110710172A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
CN117971715A (zh) 2017-04-10 2024-05-03 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
US10496555B2 (en) * 2017-05-11 2019-12-03 Red Hat, Inc. Implementing per-thread memory access permissions
CN110915172A (zh) 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
CN110892380B (zh) 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
TW202301125A (zh) 2017-07-30 2023-01-01 埃拉德 希提 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
CN111149329A (zh) 2017-09-29 2020-05-12 芬基波尔有限责任公司 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议
WO2019104090A1 (en) * 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
CN110021339B (zh) * 2017-12-27 2021-04-30 北京大学 基于蛋白质折叠测算蛋白质结构的集群并行计算加速方法
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10896476B2 (en) 2018-02-22 2021-01-19 Netspeed Systems, Inc. Repository of integration description of hardware intellectual property for NoC construction and SoC integration
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US10409524B1 (en) 2018-04-25 2019-09-10 Advanced Micro Devices, Inc. Dynamic memory traffic optimization in multi-client systems
CN108959926A (zh) * 2018-06-27 2018-12-07 杭州安恒信息技术股份有限公司 一种sql注入攻击的检测方法
US10592452B1 (en) 2018-09-12 2020-03-17 Cavium, Llc Low latency interconnect protocol for coherent multi-chip communication
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
US11074210B2 (en) * 2018-12-08 2021-07-27 Apple Inc. Bus protocol for multiple chipsets
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US11281607B2 (en) * 2020-01-30 2022-03-22 Red Hat, Inc. Paravirtualized cluster mode for legacy APICs
US11467834B2 (en) 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol
US11741043B2 (en) 2021-01-29 2023-08-29 The Trustees Of Dartmouth College Multi-core processing and memory arrangement
US20230044581A1 (en) * 2021-08-05 2023-02-09 Xilinx, Inc. Learning-based power modeling of a processor core and systems with multiple processor cores
US11868786B1 (en) * 2022-01-14 2024-01-09 Cadence Design Systems, Inc. Systems and methods for distributed and parallelized emulation processor configuration
US12079510B2 (en) 2022-09-08 2024-09-03 Samsung Electronics Co., Ltd. Systems and methods for executing data processing functions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073075A1 (en) * 2000-12-07 2002-06-13 Ibm Corporation Method and system for augmenting web-indexed search engine results with peer-to-peer search results
CN1571967A (zh) * 2001-09-17 2005-01-26 网派网络公司 搜索系统和方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2594979B2 (ja) 1987-10-23 1997-03-26 株式会社日立製作所 マルチプロセツサシステム
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5963746A (en) 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963745A (en) 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5794059A (en) 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5752067A (en) 1990-11-13 1998-05-12 International Business Machines Corporation Fully scalable parallel processing system having asynchronous SIMD processing
US5966528A (en) 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5411824A (en) 1993-01-21 1995-05-02 Sematech, Inc. Phase shifting mask structure with absorbing/attenuating sidewalls for improved imaging
EP0733236B1 (en) 1993-12-10 2003-08-06 Silicon Graphics, Inc. Memory addressing for massively parallel processing systems
US5710938A (en) 1995-07-19 1998-01-20 Unisys Corporation Data processing array in which sub-arrays are established and run independently
US5931938A (en) 1996-12-12 1999-08-03 Sun Microsystems, Inc. Multiprocessor computer having configurable hardware system domains
AU4326699A (en) 1998-05-30 1999-12-20 Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager integrated circuit
US6757019B1 (en) 1999-03-13 2004-06-29 The Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager having peripheral control circuitry
US6754802B1 (en) 2000-08-25 2004-06-22 Micron Technology, Inc. Single instruction multiple data massively parallel processor systems on a chip and system using same
US7394823B2 (en) 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US7132664B1 (en) 2002-11-09 2006-11-07 Crosetto Dario B Method and apparatus for improving PET detectors
WO2003088033A1 (en) 2002-04-09 2003-10-23 University Of Rochester Multiplier-based processor-in-memory architectures for image and graphics processing
EP1688866A4 (en) * 2003-11-28 2009-03-25 Panasonic Corp RECORDING APPARATUS
US7693991B2 (en) 2004-01-16 2010-04-06 International Business Machines Corporation Virtual clustering and load balancing servers
US20070094444A1 (en) 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US20070083785A1 (en) 2004-06-10 2007-04-12 Sehat Sutardja System with high power and low power processors and thread transfer
US20080140921A1 (en) 2004-06-10 2008-06-12 Sehat Sutardja Externally removable non-volatile semiconductor memory module for hard disk drives
US7607129B2 (en) 2005-04-07 2009-10-20 International Business Machines Corporation Method and apparatus for using virtual machine technology for managing parallel communicating applications
US7159082B1 (en) * 2005-10-03 2007-01-02 Hewlett-Packard Development Company, L.P. System and method for throttling memory accesses
US7770040B2 (en) 2006-03-24 2010-08-03 Qualcomm Incorporated Method and apparatus for reducing power consumption of a co-processor by switching to low power dedicated memory in which image data is periodically updated
US7587559B2 (en) * 2006-08-10 2009-09-08 International Business Machines Corporation Systems and methods for memory module power management
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US8477946B2 (en) 2008-02-27 2013-07-02 International Business Machines Corporation Method and apparatus for protecting encryption keys in a logically partitioned computer system environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073075A1 (en) * 2000-12-07 2002-06-13 Ibm Corporation Method and system for augmenting web-indexed search engine results with peer-to-peer search results
CN1571967A (zh) * 2001-09-17 2005-01-26 网派网络公司 搜索系统和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BARROSO: "Web search for a planet: the google cluster architecture", 《MICRO IEEE》 *
HENNESSY: "《Computer architecture: a quantitative approach, 4th edition》", 27 September 2006, MORGAN KAUFMANN *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119303A (zh) * 2013-11-12 2019-08-13 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN110119303B (zh) * 2013-11-12 2023-07-11 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN108292282B (zh) * 2015-12-24 2022-08-05 英特尔公司 块存储堆栈装置、介质及其操作方法
CN108292282A (zh) * 2015-12-24 2018-07-17 英特尔公司 分解块存储控制器堆栈
CN110520856A (zh) * 2017-04-17 2019-11-29 微软技术许可有限责任公司 处理不邻近存储器作为邻近存储器以提高神经网络的性能
CN110520856B (zh) * 2017-04-17 2023-03-31 微软技术许可有限责任公司 处理不邻近存储器作为邻近存储器以提高神经网络的性能
CN107894963B (zh) * 2017-11-27 2021-07-27 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
CN107894963A (zh) * 2017-11-27 2018-04-10 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
CN114902619A (zh) * 2019-12-31 2022-08-12 北京希姆计算科技有限公司 一种存储管理装置及芯片
CN114902619B (zh) * 2019-12-31 2023-07-25 北京希姆计算科技有限公司 一种存储管理装置及芯片
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN113543045B (zh) * 2021-05-28 2022-04-26 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法
CN113543045A (zh) * 2021-05-28 2021-10-22 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法

Also Published As

Publication number Publication date
US20120311353A1 (en) 2012-12-06
US8516280B2 (en) 2013-08-20
EP2203811B1 (en) 2012-06-27
WO2009042156A1 (en) 2009-04-02
US20130311806A1 (en) 2013-11-21
EP2523100A3 (en) 2013-03-13
US20090083263A1 (en) 2009-03-26
US9281026B2 (en) 2016-03-08
CN101932996B (zh) 2014-03-26
EP2523100A2 (en) 2012-11-14
EP2203811A1 (en) 2010-07-07
US20140237175A1 (en) 2014-08-21
US8200992B2 (en) 2012-06-12
IL204633A (en) 2014-08-31
US8713335B2 (en) 2014-04-29
IL204633A0 (en) 2010-11-30

Similar Documents

Publication Publication Date Title
CN101932996B (zh) 具有降低功耗的并行处理计算机系统及提供该系统的方法
Sethi et al. RecShard: statistical feature-based memory optimization for industry-scale neural recommendation
Barroso et al. Web search for a planet: The Google cluster architecture
Angiolini et al. A post-compiler approach to scratchpad mapping of code
Gong et al. Save: Sparsity-aware vector engine for accelerating dnn training and inference on cpus
CN101855614A (zh) 具有阶层式微码储存之多内核处理器
CN101290592B (zh) 一种mpsoc上多道程序共享spm的实现方法
Lee et al. Spotlake: Diverse spot instance dataset archive service
Sedaghati et al. X-cache: a modular architecture for domain-specific caches
Hu et al. A novel design of software system on chip for embedded system
Shu et al. TH-iSSD: Design and implementation of a generic and reconfigurable near-data processing framework
Garibotti et al. Exploiting memory allocations in clusterised many‐core architectures
Chen et al. GCIM: Towards Efficient Processing of Graph Convolutional Networks in 3D-Stacked Memory
Yang et al. Scavenger: Automating the construction of application-optimized memory hierarchies
Chen et al. Reducing virtual-to-physical address translation overhead in distributed shared memory based multi-core network-on-chips according to data property
Lu et al. Accelerating generic graph neural networks via architecture, compiler, partition method co-design
Dang et al. Improvement of data grid's performance by combining job scheduling with dynamic replication strategy
Wei et al. Dynamic gmmu bypass for address translation in multi-gpu systems
Dublish Managing the memory hierarchy in GPUs
Hardavellas Chip multiprocessors for server workloads
Zhou Configurable Architecture and Resource Provisioning for Future Clouds
Chen et al. Research Article English Language Features in Linguistics by High-Performance Computing
Ferry et al. Automating the derivation of memory allocations for acceleration of polyhedral programs
Stillmaker Saisort: An energy efficient sorting algorithm for many-core systems
Pisharath Design and optimization of architectures for data intensive computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140326

Termination date: 20160924

CF01 Termination of patent right due to non-payment of annual fee