CN103221937B - 用于处理集群的加载/存储电路 - Google Patents
用于处理集群的加载/存储电路 Download PDFInfo
- Publication number
- CN103221937B CN103221937B CN201180055803.1A CN201180055803A CN103221937B CN 103221937 B CN103221937 B CN 103221937B CN 201180055803 A CN201180055803 A CN 201180055803A CN 103221937 B CN103221937 B CN 103221937B
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- coupled
- load
- interface
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 38
- 238000013500 data storage Methods 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 74
- 230000008878 coupling Effects 0.000 claims description 7
- 238000010168 coupling process Methods 0.000 claims description 7
- 238000005859 coupling reaction Methods 0.000 claims description 7
- 238000004321 preservation Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 230000010076 replication Effects 0.000 claims 2
- 239000013598 vector Substances 0.000 description 34
- 230000005540 biological transmission Effects 0.000 description 31
- 230000000694 effects Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000003384 imaging method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种用于执行并行处理的装置。该装置具有消息总线(1420)、数据总线(1422)和加载/存储单元(1408)。该加载/存储单元(1408)具有:***接口(5416)、数据接口(5420)、消息接口(5418)、指令存储器(5405)、数据存储器(5403)、缓冲器(5406)、线程调度电路(5401,5404)和处理器(5402)。***接口(5416)被配置为与***存储器(1416)通信。数据接口(5420)耦合到数据总线(1422)。消息接口(5418)被耦合到消息总线(1420)。缓冲器(5406)耦合到数据接口(5420)。线程调度电路(5401,5404)耦合到消息接口(5418),并且处理器(5402)耦合到数据存储器(5403)、缓冲器(5406)、指令存储器(5405)、线程调度电路(5401,5404)和***接口(5416)。
Description
技术领域
本发明一般涉及处理器,并且更具体地,涉及处理集群。
背景技术
图1是描述执行速率的加速比相对多核***(从2核变化到16核)的并行开销的图示,其中加速比是单处理器执行时间除以并行处理器执行时间。可以看到,并行开销接近于零以从大量的核中获取显著效益。但是,由于并行程序之间存在任何交互时的开销会趋于很高,因此对于除了完全解耦的程序之外的任何程序而言,有效地使用多于一个或两个的处理器通常是很困难的。因此,需要一种改进的处理集群。
发明内容
因此,本公开的实施例提供一种用于执行并行处理的装置。该装置的特征在于:消息总线(1420);数据总线(1422);以及加载/存储单元(1408),该加载/存储单元(1408)具有:配置为与***存储器(1416)通信的***接口(5416);耦合到数据总线(1422)的数据接口(5420);耦合到消息总线(1420)的消息接口(5418);指令存储器(5405);数据存储器(5403);耦合到数据接口(5420)的缓冲器(5406);耦合到消息接口(5418)的线程调度电路(5401,5404);耦合到数据存储器(5403)、缓冲器(5406)、指令存储器(5405)、线程调度电路(5401,5404)以及***接口(5416)的处理器(5402)。
附图说明
图1是多核加速比参数的图形;
图2是根据本公开一个实施例的***的图示;
图3是根据本公开的一个实施例的片上***(SOC)的图示;
图4是根据本公开的一个实施例的并行处理集群的图示;
图5是全局加载/存储(GLS)单元的示例图;
图6是GLS处理器的概念操作图;
图7和图8示出GLS单元的数据流的示例图;
图9是GLS单元的更加详细的示例图;
图10是示出GLS单元的标量逻辑的图示。
具体实施方式
在图2中,可以看到执行并行处理的SOC应用的示例。在该示例中,示出成像装置1250,该成像装置1250(例如,其可以是移动电话或者照相机)一般包括图像传感器1252、SOC 1300、动态随机访问存储器(DRAM)1315、闪存(FMEM)1314、显示器1254和电源管理集成电路(PMIC)1256。在操作中,图像传感器1252能够捕获SOC 1300和DRAM1315可以处理并存储在非易失性存储器(即,闪存1314)中的图像信息(可以是静止图像或视频)。此外,存储在闪存1314中的图像信息可以通过使用SOC 1300和DRAM 1315显示在显示器1254上。并且,成像装置1250通常是便携的,并且包括作为电源的电池;PMIC 1256(其可由SOC 1300控制)可以协助调节电源使用以延长电池寿命。
在图3中,根据本公开的一个实施例描绘了片上***或SOC 1300的示例。此SOC 1300(通常为诸如OMAPTM的集成电路或IC)一般包括处理集群1400(其一般执行上述并行处理)和提供宿主环境(上面描述和引用的)的主机处理器1316。该主机处理器1316可以是宽(即,32位、64位等)RISC处理器(诸如,ARM Cortex-A9)并且与总线仲裁器1310、缓冲器1306、总线桥1320(其允许主机处理器1316通过接口总线或I总线1330访问***接口1324)、硬件应用编程接口(API)1308以及中断控制器1322在主机处理器总线或HP总线1328上通信。处理集群1400通常与功能电路1302(例如,其可以是已充电的耦合装置或CCD接口并且其可以与片外装置通信)、缓冲器1306、总线仲裁器1310以及***接口1324通过处理集群总线或PC总线1326进行通信。以此配置,主机处理器1316能够通过API 1308提供信息(即,配置处理集群1400以符合所需的并行实现),而处理集群1400和主机处理器1316都可以直接访问闪存1256(通过闪存接口1312)和DRAM 1254(通过存储控制器1304)。此外,通过联合测试行动组(JTAG)接口1318可以进行测试和边界扫描。
转到图4,根据本公开的一个实施例描绘了并行处理集群1400的示例。通常,处理集群1400对应硬件。处理集群1400一般包括分区1402-1到1402-R,这些分区包含节点808-1到808-N、节点包装器810-1到810-N、指令存储器(IMEM)1404-1到1404-R和总线接口单元或BIU 4710-1到4710-R(将在下面详细讨论)。节点808-1到808-N的每个耦合到数据互连814(通过其各自的BIU 4710-1到4710-R和数据总线1422),并且通过消息总线1420为分区1402-1到1402-R提供来自控制节点1406的控制或消息。全局加载/存储(GLS)单元1408和共享的功能存储器1410还提供用于数据移动的额外功能(如下所述)。此外,3级或L3高速缓存1412、***设备1414(一般不被包含在IC内)、存储器1416(其通常是闪存1256和/或DRAM 1254以及不包含在SOC 1300内的其他存储器)以及硬件加速器(HWA)单元1418与处理集群1400一起使用。还提供接口1405以向控制节点1406传输数据和地址。
处理集群1400一般使用“推进”模型用于数据传送。该传送一般表现为缓冲写入(posted write),而不是请求-响应的访问类型。由于数据传送是单向的,因此与请求-响应访问相比,这种传送具有将对全局互连(即,数据互连814)的占用减少到1/2的优点。在将响应发送给请求方之后,一般不希望通过互联814发送请求,这导致互连814上的两次转变。推进模型生成单一的传送。这对于可扩展性是很重要的,因为网络延迟随着网络规模的增加而增加,并且这必然降低请求-响应事务的性能。
推进模型与数据流协议一起通常会将全局数据通信量最小化到可正确使用的数据流量,同时,还通常最小化全局数据流对本地节点使用的影响。通常对节点(即,808-i)性能有很小或没有影响,即便是大量的全局通信量。源将数据写入全局输出缓冲器(在以下讨论)并且继续操作而不要求传送成功的确认。数据流协议通常使用在互连814上的单一传送确保首次尝试将数据移动到目标的传送成功。全局输出缓冲器(在以下讨论)可以保持高达16个输出(例如),使得节点(即,808-i)由于用于输出的瞬时全局带宽不足而挂起(stall)是不太可能的。而且,瞬时带宽不受请求-响应事务或不成功传送重新进行的影响。
最终,推进模型更紧密地与编程模型匹配,即程序不“获取(fetch)”其自身的数据。相反地,它们的输入变量和/或参数在被调用前写入。在编程环境中,输入变量的初始化由源程序写入存储器。在处理集群1400中,这些写入被转换成缓冲写,缓冲写在节点上下文中产生变量的值。
全局输入缓冲器(以下将讨论)用于从源节点接收数据。由于808-1到808-N每个节点的数据存储器是单端口的,因此输入数据的写入可能与本地单输入多数据(SIMD)的读取相冲突。这种争用可以通过将输入数据接受到全局输入缓冲器中来避免,这种方式下输入数据的写入会等待开放数据存储器周期(也就是说,不存在与SIMD访问的存储体冲突)。数据存储器可以具有32个存储体(例如),所以缓冲区很可能被迅速释放。然而,由于不存在确认传送的握手,因此节点(即,808-i)应该具有空闲的缓冲条目。如果需要,全局输入缓冲器使本地节点(即,808-i)挂起并且强制写入数据存储器以释放缓冲器位置,但是这种事件应该是极为罕见的。通常,全局输入缓冲器被实现为两个分离的随机访问存储器(RAM),使得一个存储器处于写全局数据状态,而另一个存储器处于被读入数据存储器的状态。消息互连与全局数据互连是分离的,但是两者都使用推进模型。
在***级,类似于SMP或者对称多处理,节点808-1到808-N在处理集群1400中被复制,节点的数量规模扩大至期望吞吐量。该处理集群1400的规模可扩大至非常大数量的节点。节点808-1到808-N被分组为分区1402-1到1402-R,每一个分区具有一个或更多个节点。通过增加节点之间的本地通信,并且通过允许较大型的程序计算较大量的输出数据,分区1402-1到1402-R有助于可扩展性,使得更可能满足所需的吞吐量需求。在分区(即,1402-i)内,节点使用本地互连进行通信,不需要全局资源。分区(即,1402-i)内的节点还可以以任何粒度共享指令存储器(即,1404-i):从每个节点使用独占指令存储器到所有节点使用共同的指令存储器。例如,三个节点可以共享指令存储器的三个存储体,而第四个节点具有指令存储器的独占存储体。当节点共享指令存储器(即,1404-i)时,节点通常同步执行相同的程序。
处理集群1400还可支持很大数量的节点(即,808-i)和分区(即,1402-i)。然而,每个分区的节点数通常被限制为4,因为每个分区具有4个以上节点通常类似于非一致性存储器访问(NUMA)架构。在这种情况下,分区通过具有大致恒定的横截面带宽的一个(或更多)横条(其将在下文关于互连814进行描述)连接。目前,处理集群1400的架构设计成每周期传送一个节点的数据宽度(例如,64个16位像素),将像素分为4次传送,每个周期传送16像素,在4个周期内传送。处理集群1400一般是容许时延的,并且节点缓冲通常避免节点挂起即使当互连814接近饱和(注意:此条件很难实现,除了使用合成程序)。
通常,处理集群1400包括在分区之间共享的全局资源:
(1)控制节点1406,其实现***范围的消息互连(在消息总线1420上)、事件处理和调度以及与主机处理器和调试器的接口(所有这些在下文详细描述)。
(2)GLS单元1408,其含有可编程RISC处理器,该GLS单元1408使能***数据移动,该***数据移动可由C++程序描述,该C++程序可被直接编译为GLS数据移动线程。这使***代码能够在交叉托管的环境中执行而不修改源代码,并且比直接存储器访问更普遍,因为其可以从***中或者SIMD数据存储器(下文描述)中的任何一组地址(变量)移动到任何其他组的地址(变量)。该GLS单元1408是多线程的,具有例如0周期的上下文切换,支持多达例如16个线程。
(3)共享功能存储器1410,其是提供通用查找表(LUT)和统计收集工具(直方图)的大型共享存储器。其还支持使用大型共享存储器进行像素处理,诸如重采样和失真校正,而这种像素处理不能得到节点SIMD(由于成本原因)的很好的支持。该处理使用(例如)6发射(issue)RISC处理器(即,在以下文详细描述的SFM处理器7614),其将标量、向量和二维阵列实现为固有类型。
(4)硬件加速器1418,其可以合并用于不需要可编程性的功能或用于优化功率和/或面积。对于子***而言,加速器作为***中的其他节点出现,其参与控制和数据流,可以创建事件并且可以被调度,并且对于调试器可见。(在适用的情况下,硬件加速器可以具有专用LUT和统计采集)。
(5)数据互连814和***开放核心协议(OCP)L3连接1412。这些连接管理数据总线1422上节点分区、硬件加速器、***存储器和***设备之间的数据移动。(硬件加速器还可以具有到L3的私有连接。)
(6)调试接口。这些接口未在图中示出,但是在本文中描述。
GLS单元1408可以将数据类型、对象和变量赋值的通用C++模型映射到***存储器1416、***设备1414和诸如节点808-i的节点(如果适用,包含硬件加速器)之间的数据移动。这使能在功能上等同于处理集群1400的操作的通用C++程序,而不需要***直接存储器访问(DMA)的仿真模型或近似。该GLS单元可以实现完全通用的DMA控制器,具有对***数据结构和节点数据结构的随机访问,并且其为C++编译器的目标。该实现使得,即便数据移动由C++程序控制,就可用资源的利用率而言,数据移动的效率仍接近常规DMA控制器的效率。然而,通常避免在***DMA和程序变量之间映射的要求,避免为将数据封装和解封装成DMA载荷而可能存在的多个周期。该实现还自动地调度数据传送,避免DMA寄存器设置和DMA调度的开销。在几乎不存在由于调度不匹配而导致的开销和效率低下的情况下,数据实现传送。
现在转到图5,其更为详细地示出GLS单元1408。GLS单元1408的主要处理组件是GLS处理器5402,GLS处理器5402可以是类似于上面详细描述的节点处理器4322的通用32位RISC处理器,但是可以被定制以用于GLS单元1408。例如,可以定制GLS处理器5402为能够复制节点(即,808-i)的SIMD数据存储器的寻址模式,使得已编译的程序可以根据需要生成节点变量的地址。GLS单元1408一般还可以包括上下文保存存储器5414、线程调度机制(即,消息列表处理5401和线程包装器5404)、GLS指令存储器5405、GLS数据存储器5403、请求队列和控制电路5408、数据流状态存储器5410、标量输出缓冲器5412、全局数据IO(输入输出)缓冲器5406和***接口5416。GLS单元5402还可包括用于交错和去交错的电路,该电路将交错的***数据转换为去交错的处理集群数据,反之亦然,GLS单元5402还可包括实现配置读线程的电路,其从存储器1416(含有程序、硬件初始化,等)为处理集群1400获取配置(即,至少部分基于处理集群1400的用于并行化串行程序的计算和存储器资源的数据结构)并且将该配置分配给处理集群1400。
对于GLS单元1408,可以有三个主接口(即,***接口5416、节点接口5420和消息接口5418)。对于***接口5416,通常存在到***L3互连的连接,用于访问***存储器1416和***设备1414。此接口5416一般具有两个缓冲区(采用乒乓布置),每个缓冲区足够大以存储(例如)128行256位L3包。对于消息接口5418,GLS单元1408可以发送/接收操作消息(即,线程调度、收发信号终止事件和全局LS-单元配置),可以为处理集群1400分配所获取的配置,并且可以将传送标量值传送给目的上下文。对于节点接口5420,全局IO缓冲器5406通常耦合到全局数据互连814。一般地,此缓冲器5406足够大以存储64行节点SIMD数据(例如,每行可以含有64个16位的像素)。例如,此缓冲器5406还可以被组织为256x16x16位以匹配每周期16像素的全局传送宽度。
现在,转到存储器5403、5405和5410,每个存储器含有通常与驻留线程相关的信息。不论线程是否激活,GLS指令存储器5405通常含有用于所有驻留线程的指令。GLS数据存储器5403通常含有所有驻留线程的变量、临时值和寄存器溢出/填充值。GLS数据存储器5403还可具有线程代码无法发现的区域,该区域含有线程上下文描述符和目标列表(类似于节点中的目标描述符)。还存在含有到目标上下文的输出的标量输出缓冲器5412;通常保持该数据以将其复制到水平分组中的多个目标上下文,并且标量输出缓冲器5412流水处理标量数据的传送以匹配处理集群1400处理流水。数据流状态存储器5410通常含有从处理集群1400接收标量输入并根据该输入控制线程调度的每个线程的数据流状态。
通常,GLS单元1408的数据存储器被组织成几个部分。数据存储器5403的线程上下文区域对于GLS处理器5402的程序可见,而数据存储器5403的剩余部分和上下文保存存储器5414保持私有。上下文保存/恢复存储器或者上下文保存存储器通常是对所有挂起线程的GLS处理器5402寄存器的拷贝(即,16x16x32位寄存器内容)。数据存储器5403中的两个其他私有区域包含上下文描述符和目标列表。
请求队列和控制5408通常监控GLS数据存储器5403外部GLS处理器5402的加载和存储访问。这些加载和存储访问由线程执行以将***数据移动到处理集群1400,并且反之亦然,但是数据通常不会物理流经GLS处理器5402,并且该GLS处理器一般不对数据执行操作。相反,请求队列5408在***级将线程“移动”转换为物理移动,为该移动匹配加载与存储访问,并且使用***L3和处理集群1400数据流协议执行地址和数据排序、缓冲区分配、格式化以及传送控制。
上下文保存/恢复区域或上下文保存存储器5414通常是广泛的随机访问存储器或RAM,其可以保存和恢复GLS处理器5402的所有寄存器一次,支持零周期上下文切换。对每次数据访问,线程程序会需要几个周期用于地址计算、条件测试、循环控制等。因为有大量潜在的线程并且因为目标是保持所有线程足够活跃以支持峰值吞吐量,所以上下文切换以最小的周期开销发生是重要的。还应该注意到由于单线程“移动”为所有节点上下文(如,水平分组中每个上下文每个变量64像素)传送数据,所以线程执行时间会被部分抵消。这可以允许相当大量的线程周期,同时仍然支持峰值像素吞吐量。
现在,转到线程调度机制,该机制一般包括消息列表处理5401和线程包装器5404。线程包装器5404通常将输入消息接收到邮箱以为GLS单元1408调度线程。一般来说,每个线程存在一个邮箱入口,该邮箱入口可以含有线程的目标列表的信息(诸如,线程的初始程序计数和在处理器数据存储器(即,4328)中的位置)。该消息还可以含有在偏移0处开始写入线程的处理器数据存储器(即,4328)上下文区域的参数列表。在线程执行期间该邮箱还用于在该线程被挂起时保存线程程序计数,并用于定位目的信息以实现数据流协议。
除了消息收发,GLS单元1408还执行配置处理。通常,此配置处理可以实现配置读线程,其从存储器获取处理集群1400的配置(包含程序、硬件初始化等)并且将该配置分配给处理集群1400的剩余部分。通常,此配置处理在节点接口5420上执行。此外,GLS数据存储器5403通常会包括上下文描述符、目的列表和线程上下文的部分和区域。通常,线程上下文区域对GLS处理器5402可见,但是GLS数据存储器5403的剩余部分或剩余区域可能是不可见的。
为了使GLS处理器5402的程序正确工作,应该具有通常与处理集群1400中的其他32位处理器一致并且通常还与节点处理器(即,节点处理器4322)和SFM处理器7614(在以下描述)一致的存储器的视图。一般来说,GLS处理器5402具有与处理集群1400共用的寻址模式是易懂的,因为GLS处理器是通用的32位处理器,其具有与其他处理器和***设备(即,1414)相当/可比的对***变量和数据结构的寻址模式。问题可能出现在使用数据类型和上下文组织恰当地操作、并使用C++编程模型恰当地执行数据传送的GLS处理器5402的软件上。
从概念上说,GLS处理器5402可以视为特定形式的向量处理器(其中这些向量例如采用框架中扫描行上所有像素的形式或者例如采用节点上下文内水平分组的形式)。这些向量可以具有可变数量的元素,这取决于框架宽度和上下文组织。向量元素还可以具有可变尺寸和类型,并且相邻元素不必具有相同的类型,例如因为像素可以与同一行上的其他类型的像素交错。GLS处理器5402的程序可以将***向量转换为节点上下文使用的向量;这不是通用的操作集,而是通常涉及使用数据流协议移动和格式化这些向量,这有助于预定和保持从节点上下文组织抽象的GLS处理器5402的程序用于特定的使用情形。
***数据可以具有多种不同的格式,其可以反映不同的像素类型、数据大小、交错模式、封装方式等。在一个节点(即,808-i)中,SIMD数据存储器像素数据,例如,是64像素宽的去交错格式,每个像素以16位排列。由于“***访问”意在为水平分组的所有输入上下文提供输入数据,因此***数据和节点数据之间的对应被进一步复杂化:该分组的配置及其宽度取决于应用程序之外的因素。通常很不期望向应用程序暴露这种级别的细节—无论是格式转换到特定节点格式和从特定节点格式进行格式转换,还是变量节点上下文组织。在应用程序级处理这些通常是非常复杂的,并且这些细节依赖实现。
在GLS处理器5402的源代码中,***变量到本地变量的赋值一般会要求***变量的数据类型可以转换成本地数据类型,反之亦然。基本***数据类型的示例是字符型和短整型,其可转换成8位、10位或12位像素。***数据还可以具有采用交错或去交错格式的合成类型,诸如封装的像素阵列,并且像素可以具有诸如Bayer、RGB、YUV等各种格式。基础本地数据类型的示例为整型(32位)、短整型(16位)和成对短整型(两个16位数值封装为32位)。基础***类型和本地数据类型的变量可以作为阵列、结构以及阵列和结构的组合的元素出现。***数据结构可以含有结合其他C++数据类型的兼容的数据元素。本地数据结构通常可以含有本地数据类型作为元素。节点(即808-i)提供独特的阵列类型,其直接在硬件中实现环形缓冲区,支持垂直的上下文共享,包括顶部和底部边缘的边界处理。通常,GLS处理器被包括在GLS单元1408中,用于(1)使用C++对象类从用户抽象出上述细节;(2)提供往来***的数据流,其映射到编程模型;(3)执行很通用且高性能的直接存储器访问的等效,其符合处理集群1400的数据依赖的框架;和(4)自动调度数据流以便于有效的处理集群1400操作。
应用程序使用被称作框架的类的对象来代表交错格式的***像素(实例的格式由属性指定)。框架被组织为具有阵列索引的行阵列,该阵列索引指定给定垂直偏移的扫描行的位置。框架对象的不同实例可以表示不同像素类型的不同交错格式,多个这些实例可用在相同的程序中。框架对象的赋值运算符根据数据是否正传送至处理集群1400或数据是否正从处理集群1400传送出执行适合于该格式的去交错或者交错操作。
本地数据类型和上下文组织的细节通过引入类行的概念得以抽象(在GLS单元1408中,块数据被视为行数据的阵列,其使用显式迭代向块提供多行)。由GLS处理器5402的程序实现的行对象通常不支持除来自兼容***数据类型的变量赋值或者向兼容的***数据类型的赋值以外的任何操作。行对象通常封装***/本地数据通信的所有属性,诸如:节点输入和节点输出两者的像素类型;数据是否被封装,以及数据如何被封装和解封装;数据是否被交错,以及交错和去交错图案;以及节点的上下文配置。
转到图6,其示出用于GLS处理器5402的图像处理应用的读线程和写线程的概念操作的示例。在编程人员看来,在此示例中,框架通常由交错的Bayer像素的缓冲区构成。由节点(即,808-i)或共享的功能存储器1410内的SIMD操作交错像素通常是低效的,因为在一般情况下,不同的操作针对不同的像素类型执行,所以单个指令通常无法应用到所有交错格式的像素。出于此原因,图6中节点上下文中所示的行数据通过去交错获得。***数据未必是交错的—例如,应用程序可以将***存储器1416用于中间结果,这些中间结果保持处理集群1400使用的去交错格式。但是,大多数输入格式和输出格式是交错的,并且GLS单元1408应该在这些格式和去交错的处理集群1400表示之间进行转换。
GLS处理器5402处理***格式或节点上下文格式的像素向量。然而,在此例子中,GLS处理器5402的数据路径并不直接对这些向量执行任何操作。在此例子中,编程模型支持的操作是从框架到行或共享功能存储器1410块类型的赋值,反之亦然,执行任何所需的格式化以通过处理集群节点对行或块对象的操作来实现对框架对象的直接操作的等效。
框架的大小由一些参数确定,包括像素类型的数目、像素宽度、至字节边界的填充、框架在每扫描行若干像素和若干扫描行中的宽度和高度,这些参数会随着分辨率而变化。框架被映射到处理集群1400上下文,一般被组织为宽度小于实际图像的水平分组,框架划分,其被交换到处理集群1400中用于作为行或块类型进行处理。此处理产生结果:当结果为另一框架时,此结果通常从处理集群1400操作框架划分的部分中间结果重构而来。
在交叉托管(cross-host)的C++编程环境中,类行的对象被视为此示例中的图像的整个宽度,大体消除了在硬件中处理框架划分所需的复杂性。在此环境中,行对象的实例包括在水平方向上跨整个扫描行的迭代。框架对象的细节并未通过对象实现来抽象,而是利用框架对象的固有属性,以隐藏去交错和交错所需的位级别格式化并使能转换成GLS处理器5402的指令。这允许交叉托管的C++程序独立于处理集群1400的环境获得与处理集群1400的环境中的执行等价的结果。
在处理集群1400的代码生成环境中,行是标量类型(一般等价于整型),除代码生成支持寻址属性的情形,该寻址属性对应于用于来自SIMD数据存储器的访问的水平像素偏移。在此示例中的扫描行上的迭代由SIMD中的并行操作、节点(即,808-i)上的上下文之间的迭代以及节点的并行操作的组合完成。框架划分可以由主机软件(其知道框架和框架划分的参数)、GLS软件(使用主机传递的参数)和硬件(使用数据流协议检测最右边的边界)的组合控制。如以下所述,除了大多数的类实现直接由GLS处理器5402的指令完成外,框架是GLS程序实现的对象类。为框架对象定义的访问功能具有将给定实例的属性加载到硬件的副作用,因此硬件可以控制访问操作和格式化操作。这些操作通常太低效而无法以期望的吞吐量在软件中实现,特别是在具有多个线程激活的情况下。
由于存在一些激活的框架对象的实例,所以期望在任何给定的时间点在硬件中有一些起作用的配置。当对象被实例化时,构造器将属性关联到对象。给定实例的访问将该实例的属性加载到硬件中,在概念上类似于限定实例的数据类型的硬件寄存器。因为每个实例具有其自身的属性,所以可以有多个实例起作用,每个实例使用其自身的硬件设置控制格式化。
读线程和写线程以独立程序写入,因此每个可以基于其各自的控制和数据流被独立地调度。以下两部分提供读线程和写线程的示例,其示出线程代码、框架类声明以及如何使用这些线程以非常复杂的像素格式化使用很小数量的指令实现很大的数据传送。
读线程将表示***数据的变量赋值给表示至处理集群1400程序的输入的变量。这些变量可以是任何类型,包括标量数据。从概念上说,读线程执行某种形式的迭代,例如,在垂直方向上固定宽度的框架划分内的迭代。在该循环内,框架对象内的像素赋值给行对象,框架的细节和框架划分(行的宽度)的组织对源代码隐藏。还存在其他向量类型或标量类型的赋值。在每个循环迭代结束时,使用Set_Valid调用(多个)目标处理集群1400程序。相对于硬件数据传送,循环迭代通常执行很快。循环执行配置硬件缓冲区和控制以执行所需的传送。在迭代结束时,线程执行被挂起(通过任务切换指令),而硬件继续传送。这将GLS处理器5402释放出来以执行其他线程,由于单个GLS处理器5402可能控制高达(例如)16个线程传送,因此这是很重要的。一旦硬件完成传送,则再次使能挂起线程的执行。
向量输出通常由迭代队列尾部的条目控制,通过此条目和其他条目控制标量数据。其原因是为了支持标量参数到不直接从线程接收向量数据的程序的输出,如图7中所示。在此示例中,读线程将向量数据提供给程序A,并且将标量数据提供给程序A-D。这种类型的数据流引入串行化,其消除程序A-D并行执行的可能。在这种情况下,并行执行通过流水线执行实现,从而程序A从读线程的迭代N接收数据,执行并输出数据给程序B的相同迭代N,等等。在执行中的任何给定点,程序A-D正分别基于读线程迭代N到N-3执行。为了支持这种执行,读线程应该同时为迭代N到N-3输出数据。否则,读线程的迭代将与此迭代的所有输出互锁,然后读线程的迭代N将必须等待程序D接受迭代N的输入,在此间隔期间,其他程序将被挂起。
可以通过将读线程输入到同一级别的处理流水(在上下文描述符中具有相同的OutputDelay值的程序)避免串行化,从而读线程在其输出的流水阶段操作。这需要额外读线程用于每个级别的输入:这对于向量输入是可接受的,因为其中向量输入从***输入的阶段的数量通常是有限的。然而,每个程序可能要求为每次迭代更新标量参数,或者从***更新或者由读线程计算(例如,在每个处理阶段控制环形缓冲区的垂直索引参数)。这要求每个流水线阶段有一个读线程,对于若干读线程安排过多命令。
由于标量数据比向量数据要求更少的存储空间,因此GLS单元1408在标量输出缓冲器5412中存储来自每个迭代的标量数据,并且使用迭代队列可以根据需要提供此数据以支持处理流水线。对于向量数据,这通常是不可行的,因为所需的缓冲将为大约所有节点SIMD存储器的尺寸。
图8中图示来自GLS单元1408的标量输出的流水线。如所示,其中有GLS单元1408活动、程序执行和程序间的传送。在顶部的顺序示出GLS线程活动与程序A的执行交错。(简化起见,所示的向量和标量传送花费相同的时间量。实际上,向量传送花费更长时间,并且写入程序A的多个目的上下文,将标量数据连同向量数据拷贝到这些上下文。这具有未示出的对程序A的流水处理实例的效果)在首次迭代中,读线程触发程序A的向量数据和程序A-D的标量数据的输出:这由向量A1和标量A1-标量D1表示。由于这是首次迭代,所以所有的目标上下文是空闲的,并且可以执行所有这些传送。因此,对于此迭代,在这些传送完成后,可以释放该迭代队列条目。此迭代的输出使得能够执行输出数据向量B1的程序A。
当接收输入时,后续的程序执行,其在时间上偏斜以反映执行流水线。读线程不能向目标上下文输出标量数据,直到每个程序在第一迭代期间发出信号Release_Input。为此,标量B2到标量D2保留在标量输出缓冲器5412中,直到目标上下文使能具有(源许可)SP的输入。该数据在标量输出缓冲器5412中的持续时间由灰色虚线箭头指示,其示出标量数据与来自源程序的向量输入同步。在此期间,其他迭代的数据也累积在标量输出缓冲器中,达到处理流水线的深度,在本例中大约为4次迭代。这些迭代的每个具有迭代队列条目,其记录对于相继迭代标量输出缓冲器中的标量数据的数据类型、目标和位置。
当完成到每个目标的标量输出时,在迭代队列中记录该事实(通过将类型标志设置为00’b—LSB将为1)。当所有类型标志为0时,这指示完成所有迭代的输出,并且可以释放迭代队列条目。此时,针对此迭代丢弃标量输出缓冲器5412的内容,并且存储器被释放用于后续线程执行的分配。
GLS线程由调度读线程和调度写线程消息调度。如果该线程不依赖于标量输入(读线程或写线程)或向量输入(写线程),则当接收到调度消息时,该线程变为准备执行;否则,当针对依赖于标量输入的线程设置Vin时该线程变成准备就绪,或者直到在全局互连(写线程)上接收到向量数据时,该线程变成准备就绪。以轮询(round-robin)次序使能执行准备就绪线程。
当线程开始执行时,其持续执行直到给定迭代的所有传送已经被启动,此时线程由显式任务切换指令挂起而硬件传送完成。任务切换由代码生成确定,这取决于变量赋值和流分析。对于读线程,至所有目标的所有向量和标量必须在线程挂起时刻已经赋值给处理集群1400(其通常是在迭代内沿任何代码路径的最终分配之后)。对于到每个目标的最后传送(基于硬件获知传送的数量),任务切换指令使Set_Valid有效。对于写线程,分析是类似的,不同的是赋值给***,并且Set_Valid不是显式地设置。当线程被挂起时,硬件为挂起线程保存所有上下文,并且如果有的话调度下一个准备就绪的线程。
一旦线程被挂起,其可以保持被挂起,直到硬件已经完成线程启动的所有数据传送。这由几种不同的方式指示,取决于传送条件:
—对于将扫描行输出到水平分组(多个处理节点上下文或单个SFM上下文)的读线程,数据传送的完成由至最右侧上下文或共享的功能存储器输入的最后传送指示,最后传送由Set_Valid标志传送至上下文指示,其使得SP中的Rt=1(使能传送)。
—对于将块输出到SFM上下文的读线程,硬件提供水平维度(类似于行)中的所有数据,并且最后传送由Block_Width确定。在垂直维度中,显式的软件迭代提供块数据。
—对于接收来自节点或SFM上下文的输入的写线程,最后数据传送由Set_Valid指示,该传送匹配水平分组大小或块宽度(HG_Size或Block_Width)。
当线程被重新使能以执行时,其可以启动或终止另一组传送。读线程通过执行END指令终止,其使用初始目标ID产生到所有目标的OT信号,该信号使得OTe=1。因为写线程通常因为接收到来自一个或更多源的OT而终止,但是不被认为是完全终止,直到其执行END指令:while循环终止而程序继续是可能的,其中后续的while循环基于终止。在任一情况下,线程可以在其执行END之后发送线程终止消息,所有的数据传送完成,并且所有OT已经被传送。
读线程可以具有两种形式的迭代:显式的FOR循环或其它显式迭代,或者来自处理集群1400的数据输入上的循环,这类似于写线程(循环不存在终止)。在第一种情况下,任何标量输入不视为是释放,直到所有的循环迭代已被执行—该标量输入适用于线程的整个跨度的执行。在第二种情况下,在每次迭代后,释放输入(Release_Input被发出),在线程可以被调度以执行之前,应该接收新的输入,设置Vin。像写线程一样,该线程在接收OT后终止数据流。
GLS处理器5402可以包括专用接口用于支持基于读线程和写线程操作的硬件控制。此接口可以允许硬件区分特定访问或专门访问与GLS处理器5402对GLS数据存储器5403的常规访问。此外,还可以有用于控制此接口的GLS处理器5402的指令,这些指令如下:
—加载***(LDSYS)指令,其可以从指定***地址加载GLS处理器5402的寄存器。这通常是虚拟加载,其目的是为了识别硬件的目标寄存器和***地址。此指令还访问来自GLS数据存储器5403的属性字,该属性字包含将作为行或块传送给处理集群1400的***框架的格式化信息。该属性访问不以GLS处理器5402寄存器为目标,而是以此信息加载硬件寄存器,使得硬件可以控制该传送。最终,该指令包含一个三位字段,其向硬件指示所访问的像素在交错框架格式中的相对位置。
—标量和向量输出指令(OUTPUT,VOUTPUT),其可以将GLS处理器5402的寄存器存储到上下文中。对于标量输出,GLS处理器5402直接提供该数据。对于向量输出,这是虚拟存储,目的是为了识别源寄存器——其将输出与之前的LDSYS地址相关联——并且还为了指定在目标上下文中的偏移。行输出或块输出具有关联的垂直索引参数用于指定HG_Size或Block_Width,使得硬件获知传送给到行或块的(例如)32像素元素的数量。
—向量输入指令(VINPUT),其将数据存储器5403位置加载到GLS处理器5402虚拟寄存器。这是从数据存储器5403虚拟加载虚拟行变量或虚拟块变量,目的为了识别目标虚拟寄存器和虚拟变量在数据存储器5403中的偏移。行输出或块输出具有关联的垂直索引参数用于指定HG_Size或Block_Width,使得硬件获知传送给到行或块的(例如)32像素元素的数量。
—存储***(STSYS)指令,其将虚拟GLS处理器5402寄存器存储到指定***地址。这是虚拟存储,目的是为了识别虚拟源寄存器——其将存储与之前的VINPUT偏移相关联——并且还为了指定其将要存储到的***地址(通常在与其他接收的输入交错之后)。此指令还从数据存储器5403访问属性字,该属性字包含要从处理集群1400行或块传送的***框架的格式化信息。该属性访问不以GLS处理器5402为目标,而是以此信息加载硬件寄存器,使得硬件可以控制传送。最终,该指令包含一个三位字段,其向硬件指示所访问的像素在交错的框架格式中的相对位置。
GLS处理器5402的数据接口可以包括以下信息和信号:
—地址总线,其指定:1)LDSYS指令和STSYS指令的***地址,2)OUTPUT指令和VOUTPUT指令的处理集群1400偏移,或者3)VINPUT指令的数据存储器5403偏移。这些地址由提供这些地址的指令进行区分。
—指定传送的数量并控制行或块传送的地址排序的参数HG_Size/Block_Width。
—虚拟寄存器标识符,其是加载类型指令或存储类型指令的虚拟目标或虚拟源。
—来自OUTPUT指令和VOUTPUT指令的Dst_Tag的值。
—将数据存储器5403的格式化属性加载到GLS硬件寄存器的选通信息(strobe)。
—两位字段,对于OUTPUT指令,其用于指示标量传送的宽度;或者对于VOUTPUT指令,其用于区分节点行、SFM行和块输出。取决于数据类型,向量输出可以根据数据类型要求不同的地址排序和数据流协议操作。此字段还为向量输出编码Block_End以及为标量输出和向量输出编码Input_Done。
—为SFM行输入指示环形缓冲区中最后一行的信号。当Pointer=Buffer_Size时,该信号基于环形缓冲区的垂直索引参数,并用作行阵列输出的信号填充。
—到GLS处理器5402的输入,针对已接收Output_Terminate信号的线程在线程被激活时有效。其作为GLS处理器5402条件状态寄存器位被测试,并且该输入有效时,会引起线程终止。
此示例的GLS单元1408可以具有任意下列特征:
—同时支持高达8个读线程和写线程;
—OCP连接1412可以具有用于读数据和写数据的128位连接(对于正常读、写线程操作,高达8节拍(beat),对于配置读取操作高达16节拍读取)
—256位2节拍突发串互连主接口和256位2节拍突发串从接口用于发送和接收来自处理集群1400内的节点/分区的数据;
—用于GLS单元1408的32位32节拍(至多)消息主接口,用于发送至处理集群1400的其余部分的消息;
—用于GLS单元1408的32位32节拍(至多)消息主接口,用于接收来自处理集群1400的其余部分的消息;
—互连监控块,用于在没有活动时监控互连814上的数据活动和到控制节点的信号,使得控制节点可以将处理集群1400的子***断电;
—分配并且管理***接口5416上的多个标签(多达32-标签)
—在读线程数据路径中的去交错器;
—在写路径中的去交错器;
—对于读线程和写线程每行支持多达8种颜色(位置);
—对于读线程最多支持8行(像素+数据);
—对于读线程最多支持4行(像素+数据)。
转到图9,可以看到GLS单元1408的更详细示例。如图所示,GLS单元1408的核心是GLS处理器5402,其可以运行各种线程程序。这些线程程序可以作为指令被预加载在指令存储器5405(其一般包括指令存储器RAM 6005和指令存储器仲裁器6006)中的多个位置中,并且每当这些线程被激活时被调用。每当读线程或写线程被调度时,线程/上下文可以被激活。线程通过GLS单元1408经由消息接口5418(其一般包括主消息接口6003和从消息接口6004)接收的消息被调度以运行。
首先转到读线程数据流,当数据应该从OCP连接1412被传送到互连814上时,GLS单元1408处理读线程。读线程由调度读线程消息调度,并且一旦该线程被调度,GLS单元1408即可触发GLS处理器5402以获取该线程的参数(即,像素参数)并可以访问OCP连接1412以获取数据(即,像素数据)。一旦数据被获取,可以根据存储的配置信息(从GLS处理器5402接收),将数据去交错和上采样并通过数据互连814将其发送给合适的目标。该数据流使用源通知、源许可和输出终止消息来维持,直至线程被终止(当GLS处理器5420通知时)。标量数据流使用更新数据存储器消息来维持。
另一数据流是配置读线程,当配置数据应该从OCP连接1412传送给GLS指令存储器5405或处理集群1400内的其他模块时,GLS单元1408处理配置读线程。配置读线程由调度配置读消息调度,并且一旦该消息被调度,则OCP连接1412被访问以获得基本配置信息。该基本配置信息被解码以获得实际配置数据并且被发送至合适的目标(通过数据互连814,如果目标是处理集群1400内的外部模块)。
又一数据流是写线程。当数据应该从数据互连814传送到OCP连接1412时,写线程由GLS单元1408处理。写线程由调度写线程消息调度,并且一旦该线程被调度,GLS单元1408即触发GLS处理器5402以获得线程的参数(即,像素参数)。此后,GLS单元1408等待数据(即,像素数据)经由数据互连814到达,并且一旦来自数据互连814的数据已经被接收,则根据存储的配置信息(从GLS处理器5402接收)对数据进行交错和下采样并且将其发送给OCP连接1412。该数据流使用源通知、源许可和输出终止消息来维持,直至该线程被终止(当GLS处理器5420通知时)。标量数据流使用更新数据存储器消息来维持。
现在,转向GLS数据存储器5403的组织(其一般包括数据存储器RAM6007和数据存储器仲裁器6008),该存储器5403被配置为存储所有常驻线程的各种变量、临时值、寄存器溢出/填充值。还可以具有对线程代码隐藏的区域,其包含线程上下文描述符和目标列表(类似于节点中的目标描述符)。具体而言,对此示例,数据存储器的RAM 6007的前8个位置分配给上下文描述符用于保存16上下文描述符。此示例的目标列表占有数据存储器RAM6007的下16个位置。此外,每个上下文描述符指定线程是否依赖于来自其他处理节点(或其他线程)的标量值,并且,如果是的话,指定针对该标量数据存在多少个数据源。在此例中,GLS数据存储器5403的其余部分保存线程上下文(其具有可变的分配)。
GLS数据存储器5403可以被多个源访问。这些多个源为GLS单元1408的内部逻辑(即,到OCP连接1412和数据互连814的接口)、GLS处理器5402的调试逻辑(其在操作的调试模式期间可以修改数据存储器5403内容)、消息接口5418(从消息接口6003和主消息接口6004两者)和GLS处理器5402。数据存储器的仲裁器6008能够仲裁对数据存储器RAM 6007的访问。
现在转到上下文保存存储器5414(其通常包括上下文状态RAM 6014和上下文状态仲裁器6015),当在GLS单元1408中进行上下文切换时,GLS处理器5402可以使用此存储器5414用于保存上下文信息。上下文存储器具有针对每个线程的位置(即,共支持16个)。每个上下文保存行例如为609位,并且每行组织的示例在上文详述。仲裁器6015仲裁GLS处理器5402和GLS处理器5402的调试逻辑对上下文状态RAM 6014为进行存取的访问(其可以在操作的调试模式期间修改上下文同一存储器RAM 6014内容)。通常,每当GLS包装器调度读线程或写线程时,上下文切换发生。
利用指令存储器5405(其一般包括指令存储器RAM 6005和指令存储器仲裁器6006),可以在每行中为GLS处理器5402存储指令。通常,仲裁器6006可以仲裁GLS处理器5402和GLS处理器5402的调试逻辑对指令存储器RAM 6005为进行存取的访问(其可以在操作的调试模式期间修改指令存储器RAM 6005内容)。指令存储器5405通常作为配置读线程消息的结果而被初始化,并且一旦指令存储器5405被初始化,则可以使用调度读线程或调度写线程中存在的目标列表基地址来访问程序。当发生上下文切换时,消息中的地址被用作该线程的指令存储器5405起始地址。
现在转到标量输出缓冲器5412(其一般包括标量RAM 6001和仲裁器6002)中,该标量输出缓冲器5412(尤其是标量RAM 6001)存储GLS处理器5402和消息接口5418通过数据存储器更新消息写入的标量数据,并且仲裁器6002可以仲裁这些源。作为标量输出缓冲器5412的一部分,还存在相关逻辑,并且在图10中可以看到此标量逻辑的架构。
在图10中,可以看到读线程的标量逻辑后的步骤示例。在此例中,当读线程被调度时,发生两个并行过程。在一个过程中,GLS处理器5402被触发用于提取标量信息,并且所提取的标量信息被写入标量RAM 6001。该标量信息通常包含数据存储器行、目标标签、标量数据和HI和LO信息,这些标量信息通常被线性地写入RAM 6001。该线程的标量起始地址6028和标量结束地址6029也被锁存到邮箱6013中(考虑计数6026)。一旦GLS处理器5402完成写过程(如上下文切换所指示的),标量输出缓冲器5412将开始向标量RAM 6001中的所有目标(如存储的目标标签所指示的)发送源通知消息。此外,标量逻辑包含标量迭代计数器6027(其针对每个线程被维持并且针对8次迭代维持该计数器)。当线程首次从调度状态移动到执行状态时,迭代计数器6027被初始化,并且每当GLS处理器5402被触发时,该迭代计数器被增加。
在此示例的另一并行过程中(通常针对仅标量读线程发生)并且对于已调度的读线程接收到SRC许可时(响应于GLS单元1408之前发送的SRC通知),邮箱6013使用从消息中提取的信息进行更新。应该注意到源通知消息可以(例如)由用于读线程的标量输出缓冲器5412发送,该缓冲器已使能仅标量传送。对于使能标量和向量两者的读线程,不可发送源通知消息。之后,可以读取未决许可表以确定源许可消息中发送的DST_TAG是否与为该线程ID所存储的(之前的源通知消息已经写入DST_TAG)相匹配。一旦匹配,则标量有限状态机(FSM)6031中的该线程的未决许可表位被更新。然后,使用新目标节点和段ID连同线程ID更新GLS数据存储器5403。GLS数据存储器5403被读取以获得来自目标列表条目的PINCR值并且对该值进行更新。对于标量传送,假定目标发送的PINCR值为‘0’。之后,线程ID连同指示该线程是否是最左边线程的状态指示被锁存到线程ID先入先出存储器(FIFO)6030中。
现在,GLS单元1408具有向目标传送标量数据的许可。线程FIFO 6030被读取以提取所锁存的线程ID。所提取的线程ID连同目标标签被用作索引以从标量RAM 6001获取合适的数据。一旦数据被读取,数据中存在的目标索引被提取并与请求队列中所存储的目标标签相匹配。一旦匹配,所提取的线程ID被用于索引到邮箱6013以获取GLS数据存储器5403目标地址。然后,匹配的DST_TAG被加入GLS数据存储器5403目标地址以确定到GLS数据存储器5403的最终地址。然后,GLS数据存储器5403被访问以获取目标列表条目。GLS单元1408使用来自标量RAM 6001的数据向目标节点(通过从GLS数据存储器5403提取的节点id、段ID进行识别)发送更新GLS数据存储器5403消息,该过程被重复,直到整个迭代数据被发送。一旦到达线程数据的末端,GLS单元1408移动到下一线程ID(如果该线程已经以活跃状态推入FIFO中),并指示全局互连逻辑已经到达线程的末端。GLS处理器5402使用OUTPUT指令写入标量数据。
在执行中含有的标量数据或者来自程序自身,或者在使能标量依赖的情形下经由OCP连接1412从***设备1414或者经由更新数据存储器更新消息从处理集群1400中的其他块获取。当标量由GLS处理器5402从OCP连接1412获取时,GLS处理器5402将在其数据存储器地址行上发送来自0->1M的地址(例如)。GLS单元1408将该访问转换成OCP连接1412主读取访问(即,1个字的突发串)。一旦GLS单元1408读取该字,GLS单元1408将该字传送给GLS处理器5402(即,32位;这32位取决于GLS处理器5402发送的地址),GLS处理器将该数据发送给标量RAM 6001。
在标量数据应该从其他处理集群1400模块接收的情况下,将在其线程的上下文描述符中设置标量依赖位。当输入依赖位被设置时,将发送标量数据的源的数量也在相同的描述符中设置。一旦GLS单元1408接收来自所有源并存储在GLS数据存储器5403中的标量数据,标量依赖被满足。一旦依赖被满足,GLS处理器5402被触发。此时,在GLS处理器5402将读取所存储的数据并使用OUTPUT指令写入标量RAM 6001(通常用于读线程)。
GLS处理器5402也可选择将数据(或任何数据)写入OCP连接1412。当数据应由GLS处理器1408写入OCP连接1412时,GLS处理器1408将在其GLS数据存储器5403地址线发送(例如)来自0->1M的地址。GLS单元1408将该访问转换成OCP连接1412主写访问(即,1个字的突发串)并且将该(例如)32位写入OCP连接1412。
GLS单元1408中的邮箱6013可以被用于处理消息、扫描仪和数据路径之间的信息流。当GLS单元1408接收到调度读线程、调度配置读线程或者调度写线程消息时,从消息中提取的值被存储在邮箱6013中。然后相应的线程被设为调度状态(调度读线程或调度写线程),使得扫描仪可以将该线程移动到执行状态以触发GLS处理器5402。邮箱6013还锁存来自GLS单元1408将使用的源通知消息(对于写线程)、源许可消息(对于读线程)的值。GLS单元1408的各个内部块之间的交互在不同时间点更新邮箱6007(例如,如图10中所示)。
入口消息处理器6010处理从控制节点1406接收的消息,并且表1示出GLS单元1408接收的消息的列表。在处理集群1400子***中可以分别使用Seg_ID、Node_ID如{3,1}访问GLS。
在本发明涉及领域的技术人员将理解,可以对所描述的实施例和认识到的其他实施例做出修改而不偏离所要求保护的发明的范围。
Claims (12)
1.一种用于执行并行处理的装置,其特征在于:
消息总线(1420);
数据总线(1422);以及
加载/存储单元(1408),所述加载/存储单元(1408)用于映射所述***接口(5416)和所述数据总线(1422)之间的数据的移动,所述加载/存储单元具有:
配置为与***存储器(1416)通信的***接口(5416);
耦合到所述数据总线(1422)的数据接口(5420);
耦合到所述消息总线(1420)的消息接口(5418);
指令存储器(5405);
数据存储器(5403);
耦合到所述数据接口(5420)的缓冲器(5406);
耦合到所述消息接口(5418)的线程调度电路(5401,5404),所述线程调度电路(5401,5404)包括消息列表处理(5401)和线程包装器(5404),所述线程包装器(5404)通常将输入消息接收到邮箱,以为所述加载/存储单元(1408)调度线程;以及
耦合到所述数据存储器(5403)、所述缓冲器(5406)、所述指令存储器(5405)、线程调度电路(5401,5404)和所述***接口(5416)的处理器(5402);
上下文保存/恢复存储器,其耦合到所述处理器并且被配置为存储挂起线程的寄存器状态。
2.根据权利要求1所述的装置,其中所述加载/存储单元(1408)的特征进一步在于保存/恢复存储器(5414),其耦合到所述处理器并且配置为存储挂起线程的寄存器状态。
3.根据权利要求1所述的装置,其中所述加载/存储单元(1408)的特征进一步在于所述处理器(5402)被配置为复制处理电路(1402-1至1402-R)的寻址模式,使得可以生成处理电路变量的地址。
4.根据权利要求1所述的装置,其中所述加载/存储单元(1408)的特征进一步在于耦合在所述消息接口(5418)和所述处理器(5402)之间的标量输出缓冲器(5412)。
5.根据权利要求1所述的装置,其中所述加载/存储单元(1408)配置为实现配置读线程,使得所述加载/存储单元(1408)从***存储器(1416)重新获得处理电路(1402-1至1402-R)的数据结构,其中所述数据结构至少部分基于用于并行化的串行程序的处理电路(1402-1至1402-R)的计算资源和存储器资源。
6.一种用于执行并行处理的***,其特征在于:
***存储器(1416);以及
耦合到所述***存储器(1416)的处理集群(1400);其中所述处理集群(1400)包括:
消息总线(1420);
数据总线(1422);
布置在分区(1402-1至1402-R)中的多个处理节点(808-1至808-N),每个分区具有耦合到所述数据总线(1422)的总线接口单元(4710-1至4710-R),其中每个处理节点(808-1至808-N)被耦合到所述消息总线(1420);
耦合到所述消息总线(1420)的控制节点(1406);以及
加载/存储单元(1408),所述加载/存储单元(1408)用于映射所述***存储器(1416)和所述处理节点(808-1至808-N)之间的数据的移动,所述加载/存储单元具有:
配置为与***存储器(1416)通信的***接口(5416);
耦合到所述数据总线(1422)的数据接口(5420);
耦合到所述消息总线(1420)的消息接口(5418);
指令存储器(5405);
数据存储器(5403);
耦合到所述数据接口(5420)的缓冲器(5406);
耦合到所述消息接口(5418)的线程调度电路(5401,5404),所述线程调度电路(5401,5404)包括消息列表处理(5401)和线程包装器(5404),所述线程包装器(5404)通常将输入消息接收到邮箱,以为所述加载/存储单元(1408)调度线程;以及
耦合到所述数据存储器(5403)、所述缓冲器(5406)、所述指令存储器(5405)、线程调度电路(5401,5404)和所述***接口(5416)的处理器(5402);
上下文保存/恢复存储器,其耦合到所述处理器并且被配置为存储挂起线程的寄存器状态。
7.根据权利要求6所述的***,其中所述加载/存储单元(1408)的特征进一步在于耦合到所述处理器并且被配置为存储挂起线程的寄存器状态的保存/恢复存储器(5414)。
8.根据权利要求6所述的***,其中所述加载/存储单元(1408)的特征进一步在于所述处理器(5402)配置为复制处理电路(1402-1至1402-R)的寻址模式,使得可以生成处理电路变量的地址。
9.根据权利要求6所述的***,其中所述加载/存储单元(1408)的特征进一步在于耦合在所述消息接口(5418)和所述处理器(5402)之间的标量输出缓冲器(5412)。
10.根据权利要求6所述的***,其中所述加载/存储单元(1408)被配置为实现配置读线程,使得所述加载/存储单元(1408)从***存储器(1416)重新获得处理电路(1402-1至1402-R)的数据结构,其中所述数据结构至少部分基于用于并行化的串行程序的处理电路(1402-1至1402-R)的计算资源和存储器资源。
11.根据权利要求6所述的***,其中所述***的特征进一步在于耦合在所述数据总线(1422)和所述数据接口(5420)之间的数据互连(814)。
12.根据权利要求6所述的***,其中所述***的特征进一步在于:
耦合到所述控制节点(1406)和所述***接口(5416)的***总线(1326,1328);
耦合到所述***存储器(1416)和所述***总线(1326,1328)的存储器控制器(1304);以及
耦合到所述***总线(1326,1328)的主机处理器(1316)。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41521010P | 2010-11-18 | 2010-11-18 | |
US41520510P | 2010-11-18 | 2010-11-18 | |
US61/415,205 | 2010-11-18 | ||
US61/415,210 | 2010-11-18 | ||
US13/232,774 | 2011-09-14 | ||
US13/232,774 US9552206B2 (en) | 2010-11-18 | 2011-09-14 | Integrated circuit with control node circuitry and processing circuitry |
PCT/US2011/061444 WO2012068486A2 (en) | 2010-11-18 | 2011-11-18 | Load/store circuitry for a processing cluster |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103221937A CN103221937A (zh) | 2013-07-24 |
CN103221937B true CN103221937B (zh) | 2016-10-12 |
Family
ID=46065497
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180055828.1A Active CN103221939B (zh) | 2010-11-18 | 2011-11-18 | 移动数据的方法和装置 |
CN201180055748.6A Active CN103221934B (zh) | 2010-11-18 | 2011-11-18 | 用于处理集群的控制节点 |
CN201180055771.5A Active CN103221935B (zh) | 2010-11-18 | 2011-11-18 | 从simd寄存器文件向通用寄存器文件移动数据的方法和装置 |
CN201180055668.0A Active CN103221933B (zh) | 2010-11-18 | 2011-11-18 | 从通用寄存器文件向simd寄存器文件移动数据的方法和装置 |
CN201180055810.1A Active CN103221938B (zh) | 2010-11-18 | 2011-11-18 | 移动数据的方法和装置 |
CN201180055803.1A Active CN103221937B (zh) | 2010-11-18 | 2011-11-18 | 用于处理集群的加载/存储电路 |
CN201180055782.3A Active CN103221936B (zh) | 2010-11-18 | 2011-11-18 | 一种用于处理集群的共享功能存储器电路 |
CN201180055694.3A Active CN103221918B (zh) | 2010-11-18 | 2011-11-18 | 具有分开的数据总线和消息总线的ic集群处理设备 |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180055828.1A Active CN103221939B (zh) | 2010-11-18 | 2011-11-18 | 移动数据的方法和装置 |
CN201180055748.6A Active CN103221934B (zh) | 2010-11-18 | 2011-11-18 | 用于处理集群的控制节点 |
CN201180055771.5A Active CN103221935B (zh) | 2010-11-18 | 2011-11-18 | 从simd寄存器文件向通用寄存器文件移动数据的方法和装置 |
CN201180055668.0A Active CN103221933B (zh) | 2010-11-18 | 2011-11-18 | 从通用寄存器文件向simd寄存器文件移动数据的方法和装置 |
CN201180055810.1A Active CN103221938B (zh) | 2010-11-18 | 2011-11-18 | 移动数据的方法和装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180055782.3A Active CN103221936B (zh) | 2010-11-18 | 2011-11-18 | 一种用于处理集群的共享功能存储器电路 |
CN201180055694.3A Active CN103221918B (zh) | 2010-11-18 | 2011-11-18 | 具有分开的数据总线和消息总线的ic集群处理设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9552206B2 (zh) |
JP (9) | JP5989656B2 (zh) |
CN (8) | CN103221939B (zh) |
WO (8) | WO2012068494A2 (zh) |
Families Citing this family (234)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844687B1 (en) * | 1999-10-06 | 2010-11-30 | Gelvin David C | Method for internetworked hybrid wireless integrated network sensors (WINS) |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8631411B1 (en) | 2009-07-21 | 2014-01-14 | The Research Foundation For The State University Of New York | Energy aware processing load distribution system and method |
US8446824B2 (en) * | 2009-12-17 | 2013-05-21 | Intel Corporation | NUMA-aware scaling for network devices |
US9003414B2 (en) * | 2010-10-08 | 2015-04-07 | Hitachi, Ltd. | Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
KR20120066305A (ko) * | 2010-12-14 | 2012-06-22 | 한국전자통신연구원 | 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법 |
DE202012013520U1 (de) * | 2011-01-26 | 2017-05-30 | Apple Inc. | Externer Kontaktverbinder |
US8918791B1 (en) * | 2011-03-10 | 2014-12-23 | Applied Micro Circuits Corporation | Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID |
US9008180B2 (en) * | 2011-04-21 | 2015-04-14 | Intellectual Discovery Co., Ltd. | Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering |
US20130060555A1 (en) * | 2011-06-10 | 2013-03-07 | Qualcomm Incorporated | System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains |
US9086883B2 (en) | 2011-06-10 | 2015-07-21 | Qualcomm Incorporated | System and apparatus for consolidated dynamic frequency/voltage control |
US8656376B2 (en) * | 2011-09-01 | 2014-02-18 | National Tsing Hua University | Compiler for providing intrinsic supports for VLIW PAC processors with distributed register files and method thereof |
CN102331961B (zh) * | 2011-09-13 | 2014-02-19 | 华为技术有限公司 | 并行模拟多个处理器的方法及***、调度器 |
US20130077690A1 (en) * | 2011-09-23 | 2013-03-28 | Qualcomm Incorporated | Firmware-Based Multi-Threaded Video Decoding |
KR101859188B1 (ko) * | 2011-09-26 | 2018-06-29 | 삼성전자주식회사 | 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법 |
AU2012340684A1 (en) * | 2011-11-22 | 2014-07-17 | Solano Labs, Inc. | System of distributed software quality improvement |
JP5915116B2 (ja) * | 2011-11-24 | 2016-05-11 | 富士通株式会社 | ストレージシステム、ストレージ装置、システム制御プログラムおよびシステム制御方法 |
US9268626B2 (en) * | 2011-12-23 | 2016-02-23 | Intel Corporation | Apparatus and method for vectorization with speculation support |
WO2013106210A1 (en) * | 2012-01-10 | 2013-07-18 | Intel Corporation | Electronic apparatus having parallel memory banks |
US8639894B2 (en) * | 2012-01-27 | 2014-01-28 | Comcast Cable Communications, Llc | Efficient read and write operations |
GB201204687D0 (en) * | 2012-03-16 | 2012-05-02 | Microsoft Corp | Communication privacy |
CN104205042B (zh) | 2012-03-30 | 2019-01-08 | 英特尔公司 | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US10223246B2 (en) * | 2012-07-30 | 2019-03-05 | Infosys Limited | System and method for functional test case generation of end-to-end business process models |
US10154177B2 (en) * | 2012-10-04 | 2018-12-11 | Cognex Corporation | Symbology reader with multi-core processor |
US9436475B2 (en) | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
EP3142016B1 (en) * | 2012-11-21 | 2021-10-13 | Coherent Logix Incorporated | Processing system with interspersed processors dma-fifo |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US9804839B2 (en) * | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US9361116B2 (en) * | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US11163736B2 (en) * | 2013-03-04 | 2021-11-02 | Avaya Inc. | System and method for in-memory indexing of data |
US9400611B1 (en) * | 2013-03-13 | 2016-07-26 | Emc Corporation | Data migration in cluster environment using host copy and changed block tracking |
US9582320B2 (en) * | 2013-03-14 | 2017-02-28 | Nxp Usa, Inc. | Computer systems and methods with resource transfer hint instruction |
US9158698B2 (en) | 2013-03-15 | 2015-10-13 | International Business Machines Corporation | Dynamically removing entries from an executing queue |
US9471521B2 (en) * | 2013-05-15 | 2016-10-18 | Stmicroelectronics S.R.L. | Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit |
US8943448B2 (en) * | 2013-05-23 | 2015-01-27 | Nvidia Corporation | System, method, and computer program product for providing a debugger using a common hardware database |
US9244810B2 (en) | 2013-05-23 | 2016-01-26 | Nvidia Corporation | Debugger graphical user interface system, method, and computer program product |
WO2014189529A1 (en) * | 2013-05-24 | 2014-11-27 | Empire Technology Development, Llc | Datacenter application packages with hardware accelerators |
US9224169B2 (en) * | 2013-05-28 | 2015-12-29 | Rivada Networks, Llc | Interfacing between a dynamic spectrum policy controller and a dynamic spectrum controller |
US9910816B2 (en) * | 2013-07-22 | 2018-03-06 | Futurewei Technologies, Inc. | Scalable direct inter-node communication over peripheral component interconnect-express (PCIe) |
US9882984B2 (en) * | 2013-08-02 | 2018-01-30 | International Business Machines Corporation | Cache migration management in a virtualized distributed computing system |
US10373301B2 (en) * | 2013-09-25 | 2019-08-06 | Sikorsky Aircraft Corporation | Structural hot spot and critical location monitoring system and method |
US8914757B1 (en) * | 2013-10-02 | 2014-12-16 | International Business Machines Corporation | Explaining illegal combinations in combinatorial models |
GB2519107B (en) * | 2013-10-09 | 2020-05-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing speculative vector access operations |
GB2519108A (en) | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
US9740854B2 (en) * | 2013-10-25 | 2017-08-22 | Red Hat, Inc. | System and method for code protection |
US10185604B2 (en) * | 2013-10-31 | 2019-01-22 | Advanced Micro Devices, Inc. | Methods and apparatus for software chaining of co-processor commands before submission to a command queue |
US9727611B2 (en) * | 2013-11-08 | 2017-08-08 | Samsung Electronics Co., Ltd. | Hybrid buffer management scheme for immutable pages |
US10191765B2 (en) | 2013-11-22 | 2019-01-29 | Sap Se | Transaction commit operations with thread decoupling and grouping of I/O requests |
US9495312B2 (en) | 2013-12-20 | 2016-11-15 | International Business Machines Corporation | Determining command rate based on dropped commands |
US9552221B1 (en) * | 2013-12-23 | 2017-01-24 | Google Inc. | Monitoring application execution using probe and profiling modules to collect timing and dependency information |
EP3087472B1 (en) * | 2013-12-27 | 2019-05-08 | Intel Corporation | Scalable input/output system and techniques |
US9307057B2 (en) * | 2014-01-08 | 2016-04-05 | Cavium, Inc. | Methods and systems for resource management in a single instruction multiple data packet parsing cluster |
US9509769B2 (en) * | 2014-02-28 | 2016-11-29 | Sap Se | Reflecting data modification requests in an offline environment |
US9720991B2 (en) * | 2014-03-04 | 2017-08-01 | Microsoft Technology Licensing, Llc | Seamless data migration across databases |
US9697100B2 (en) * | 2014-03-10 | 2017-07-04 | Accenture Global Services Limited | Event correlation |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
JP6183251B2 (ja) * | 2014-03-14 | 2017-08-23 | 株式会社デンソー | 電子制御装置 |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
US9607073B2 (en) * | 2014-04-17 | 2017-03-28 | Ab Initio Technology Llc | Processing data from multiple sources |
US10102211B2 (en) * | 2014-04-18 | 2018-10-16 | Oracle International Corporation | Systems and methods for multi-threaded shadow migration |
US9400654B2 (en) * | 2014-06-27 | 2016-07-26 | Freescale Semiconductor, Inc. | System on a chip with managing processor and method therefor |
CN104125283B (zh) * | 2014-07-30 | 2017-10-03 | 中国银行股份有限公司 | 一种用于集群的消息队列接收方法及*** |
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 |
US9313266B2 (en) * | 2014-08-08 | 2016-04-12 | Sas Institute, Inc. | Dynamic assignment of transfers of blocks of data |
US9910650B2 (en) * | 2014-09-25 | 2018-03-06 | Intel Corporation | Method and apparatus for approximating detection of overlaps between memory ranges |
US9501420B2 (en) * | 2014-10-22 | 2016-11-22 | Netapp, Inc. | Cache optimization technique for large working data sets |
WO2016071730A2 (es) * | 2014-11-06 | 2016-05-12 | Appriz Incorporated | Aplicación móvil y solución de interacción financiera en dos vías con alertas y notificaciones personalizadas |
US9727500B2 (en) | 2014-11-19 | 2017-08-08 | Nxp Usa, Inc. | Message filtering in a data processing system |
US9697151B2 (en) | 2014-11-19 | 2017-07-04 | Nxp Usa, Inc. | Message filtering in a data processing system |
US9727679B2 (en) * | 2014-12-20 | 2017-08-08 | Intel Corporation | System on chip configuration metadata |
US9851970B2 (en) * | 2014-12-23 | 2017-12-26 | Intel Corporation | Method and apparatus for performing reduction operations on a set of vector elements |
US9880953B2 (en) * | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
US9286196B1 (en) * | 2015-01-08 | 2016-03-15 | Arm Limited | Program execution optimization using uniform variable identification |
WO2016115075A1 (en) | 2015-01-13 | 2016-07-21 | Sikorsky Aircraft Corporation | Structural health monitoring employing physics models |
US20160219101A1 (en) * | 2015-01-23 | 2016-07-28 | Tieto Oyj | Migrating an application providing latency critical service |
US9547881B2 (en) * | 2015-01-29 | 2017-01-17 | Qualcomm Incorporated | Systems and methods for calculating a feature descriptor |
WO2016123808A1 (zh) * | 2015-02-06 | 2016-08-11 | 华为技术有限公司 | 数据处理***、计算节点和数据处理的方法 |
US9785413B2 (en) * | 2015-03-06 | 2017-10-10 | Intel Corporation | Methods and apparatus to eliminate partial-redundant vector loads |
JP6427053B2 (ja) * | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
US10095479B2 (en) * | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US10372616B2 (en) | 2015-06-03 | 2019-08-06 | Renesas Electronics America Inc. | Microcontroller performing address translations using address offsets in memory where selected absolute addressing based programs are stored |
US9923965B2 (en) | 2015-06-05 | 2018-03-20 | International Business Machines Corporation | Storage mirroring over wide area network circuits with dynamic on-demand capacity |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
CN106293893B (zh) * | 2015-06-26 | 2019-12-06 | 阿里巴巴集团控股有限公司 | 作业调度方法、装置及分布式*** |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10459723B2 (en) | 2015-07-20 | 2019-10-29 | Qualcomm Incorporated | SIMD instructions for multi-stage cube networks |
US9930498B2 (en) * | 2015-07-31 | 2018-03-27 | Qualcomm Incorporated | Techniques for multimedia broadcast multicast service transmissions in unlicensed spectrum |
US20170054449A1 (en) * | 2015-08-19 | 2017-02-23 | Texas Instruments Incorporated | Method and System for Compression of Radar Signals |
WO2017052548A1 (en) | 2015-09-24 | 2017-03-30 | Hewlett Packard Enterprise Development Lp | Failure indication in shared memory |
US20170104733A1 (en) * | 2015-10-09 | 2017-04-13 | Intel Corporation | Device, system and method for low speed communication of sensor information |
US9898325B2 (en) * | 2015-10-20 | 2018-02-20 | Vmware, Inc. | Configuration settings for configurable virtual components |
US20170116154A1 (en) * | 2015-10-23 | 2017-04-27 | The Intellisis Corporation | Register communication in a network-on-a-chip architecture |
CN106648563B (zh) * | 2015-10-30 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 应用程序中共享模块的依赖解耦处理方法和装置 |
KR102248846B1 (ko) * | 2015-11-04 | 2021-05-06 | 삼성전자주식회사 | 데이터를 병렬 처리하는 방법 및 이를 위한 장치 |
US9977619B2 (en) * | 2015-11-06 | 2018-05-22 | Vivante Corporation | Transfer descriptor for memory access commands |
US10177993B2 (en) | 2015-11-25 | 2019-01-08 | International Business Machines Corporation | Event-based data transfer scheduling using elastic network optimization criteria |
US10057327B2 (en) | 2015-11-25 | 2018-08-21 | International Business Machines Corporation | Controlled transfer of data over an elastic network |
US9923839B2 (en) * | 2015-11-25 | 2018-03-20 | International Business Machines Corporation | Configuring resources to exploit elastic network capability |
US10216441B2 (en) | 2015-11-25 | 2019-02-26 | International Business Machines Corporation | Dynamic quality of service for storage I/O port allocation |
US9923784B2 (en) | 2015-11-25 | 2018-03-20 | International Business Machines Corporation | Data transfer using flexible dynamic elastic network service provider relationships |
US10581680B2 (en) | 2015-11-25 | 2020-03-03 | International Business Machines Corporation | Dynamic configuration of network features |
US10642617B2 (en) * | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
US20170177349A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations |
CN107015931A (zh) * | 2016-01-27 | 2017-08-04 | 三星电子株式会社 | 用于中断处理的方法和加速器单元 |
CN105760321B (zh) * | 2016-02-29 | 2019-08-13 | 福州瑞芯微电子股份有限公司 | SOC芯片的debug时钟域电路 |
US20210049292A1 (en) * | 2016-03-07 | 2021-02-18 | Crowdstrike, Inc. | Hypervisor-Based Interception of Memory and Register Accesses |
GB2548601B (en) * | 2016-03-23 | 2019-02-13 | Advanced Risc Mach Ltd | Processing vector instructions |
EP3226184A1 (en) * | 2016-03-30 | 2017-10-04 | Tata Consultancy Services Limited | Systems and methods for determining and rectifying events in processes |
US9967539B2 (en) * | 2016-06-03 | 2018-05-08 | Samsung Electronics Co., Ltd. | Timestamp error correction with double readout for the 3D camera with epipolar line laser point scanning |
US20170364334A1 (en) * | 2016-06-21 | 2017-12-21 | Atti Liu | Method and Apparatus of Read and Write for the Purpose of Computing |
US10797941B2 (en) * | 2016-07-13 | 2020-10-06 | Cisco Technology, Inc. | Determining network element analytics and networking recommendations based thereon |
CN107832005B (zh) * | 2016-08-29 | 2021-02-26 | 鸿富锦精密电子(天津)有限公司 | 分布式数据存取***及方法 |
KR102247529B1 (ko) * | 2016-09-06 | 2021-05-03 | 삼성전자주식회사 | 전자 장치, 재구성 가능 프로세서 및 그 제어 방법들 |
US10353711B2 (en) | 2016-09-06 | 2019-07-16 | Apple Inc. | Clause chaining for clause-based instruction execution |
US10909077B2 (en) * | 2016-09-29 | 2021-02-02 | Paypal, Inc. | File slack leveraging |
WO2018078451A1 (en) * | 2016-10-25 | 2018-05-03 | Reconfigure.Io Limited | Synthesis path for transforming concurrent programs into hardware deployable on fpga-based cloud infrastructures |
US10423446B2 (en) * | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
KR102659495B1 (ko) * | 2016-12-02 | 2024-04-22 | 삼성전자주식회사 | 벡터 프로세서 및 그 제어 방법 |
GB2558220B (en) | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
CN108616905B (zh) * | 2016-12-28 | 2021-03-19 | 大唐移动通信设备有限公司 | 基于蜂窝的窄带物联网中用户平面优化方法和*** |
US10268558B2 (en) | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10671395B2 (en) * | 2017-02-13 | 2020-06-02 | The King Abdulaziz City for Science and Technology—KACST | Application specific instruction-set processor (ASIP) for simultaneously executing a plurality of operations using a long instruction word |
US11144820B2 (en) * | 2017-02-28 | 2021-10-12 | Microsoft Technology Licensing, Llc | Hardware node with position-dependent memories for neural network processing |
US10169196B2 (en) * | 2017-03-20 | 2019-01-01 | Microsoft Technology Licensing, Llc | Enabling breakpoints on entire data structures |
US10360045B2 (en) * | 2017-04-25 | 2019-07-23 | Sandisk Technologies Llc | Event-driven schemes for determining suspend/resume periods |
US10552206B2 (en) * | 2017-05-23 | 2020-02-04 | Ge Aviation Systems Llc | Contextual awareness associated with resources |
US20180349137A1 (en) * | 2017-06-05 | 2018-12-06 | Intel Corporation | Reconfiguring a processor without a system reset |
US20180359130A1 (en) * | 2017-06-13 | 2018-12-13 | Schlumberger Technology Corporation | Well Construction Communication and Control |
US11021944B2 (en) | 2017-06-13 | 2021-06-01 | Schlumberger Technology Corporation | Well construction communication and control |
US11143010B2 (en) | 2017-06-13 | 2021-10-12 | Schlumberger Technology Corporation | Well construction communication and control |
US10599617B2 (en) * | 2017-06-29 | 2020-03-24 | Intel Corporation | Methods and apparatus to modify a binary file for scalable dependency loading on distributed computing systems |
WO2019005165A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | METHOD AND APPARATUS FOR VECTORIZING INDIRECT UPDATING BUCKLES |
CN118069218A (zh) | 2017-09-12 | 2024-05-24 | 恩倍科微公司 | 极低功率微控制器*** |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US11061575B2 (en) * | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
CN109697114B (zh) * | 2017-10-20 | 2023-07-28 | 伊姆西Ip控股有限责任公司 | 用于应用迁移的方法和机器 |
US10761970B2 (en) * | 2017-10-20 | 2020-09-01 | International Business Machines Corporation | Computerized method and systems for performing deferred safety check operations |
US10572302B2 (en) * | 2017-11-07 | 2020-02-25 | Oracle Internatíonal Corporatíon | Computerized methods and systems for executing and analyzing processes |
US10705843B2 (en) * | 2017-12-21 | 2020-07-07 | International Business Machines Corporation | Method and system for detection of thread stall |
US10915317B2 (en) * | 2017-12-22 | 2021-02-09 | Alibaba Group Holding Limited | Multiple-pipeline architecture with special number detection |
CN108196946B (zh) * | 2017-12-28 | 2019-08-09 | 北京翼辉信息技术有限公司 | 一种微内核操作***的分区多核方法 |
US10366017B2 (en) | 2018-03-30 | 2019-07-30 | Intel Corporation | Methods and apparatus to offload media streams in host devices |
WO2019191739A1 (en) * | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
CN109087381B (zh) * | 2018-07-04 | 2023-01-17 | 西安邮电大学 | 一种基于双发射vliw的统一架构渲染着色器 |
CN110837414B (zh) * | 2018-08-15 | 2024-04-12 | 京东科技控股股份有限公司 | 任务处理方法和装置 |
US10862485B1 (en) * | 2018-08-29 | 2020-12-08 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Lookup table index for a processor |
CN109445516A (zh) * | 2018-09-27 | 2019-03-08 | 北京中电华大电子设计有限责任公司 | 一种应用于双核SoC中外设时钟控制方法及电路 |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US11108675B2 (en) | 2018-10-31 | 2021-08-31 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for testing effects of simulated frame preemption and deterministic fragmentation of preemptable frames in a frame-preemption-capable network |
US11061894B2 (en) * | 2018-10-31 | 2021-07-13 | Salesforce.Com, Inc. | Early detection and warning for system bottlenecks in an on-demand environment |
US10678693B2 (en) * | 2018-11-08 | 2020-06-09 | Insightfulvr, Inc | Logic-executing ring buffer |
US10776984B2 (en) | 2018-11-08 | 2020-09-15 | Insightfulvr, Inc | Compositor for decoupled rendering |
US10728134B2 (en) * | 2018-11-14 | 2020-07-28 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for measuring delivery latency in a frame-preemption-capable network |
CN109374935A (zh) * | 2018-11-28 | 2019-02-22 | 武汉精能电子技术有限公司 | 一种电子负载并机方法及*** |
US10761822B1 (en) * | 2018-12-12 | 2020-09-01 | Amazon Technologies, Inc. | Synchronization of computation engines with non-blocking instructions |
GB2580136B (en) * | 2018-12-21 | 2021-01-20 | Graphcore Ltd | Handling exceptions in a multi-tile processing arrangement |
US10671550B1 (en) * | 2019-01-03 | 2020-06-02 | International Business Machines Corporation | Memory offloading a problem using accelerators |
TWI703500B (zh) * | 2019-02-01 | 2020-09-01 | 睿寬智能科技有限公司 | 可縮短內文交換時間之方法及其半導體裝置 |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
EP3935500A1 (en) * | 2019-03-06 | 2022-01-12 | Live Nation Entertainment, Inc. | Systems and methods for queue control based on client-specific protocols |
US10935600B2 (en) * | 2019-04-05 | 2021-03-02 | Texas Instruments Incorporated | Dynamic security protection in configurable analog signal chains |
CN111966399B (zh) * | 2019-05-20 | 2024-06-07 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN110177220B (zh) * | 2019-05-23 | 2020-09-01 | 上海图趣信息科技有限公司 | 一种具有外部授时功能的相机及其控制方法 |
US11195095B2 (en) * | 2019-08-08 | 2021-12-07 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
US11461106B2 (en) * | 2019-10-23 | 2022-10-04 | Texas Instruments Incorporated | Programmable event testing |
US11144483B2 (en) * | 2019-10-25 | 2021-10-12 | Micron Technology, Inc. | Apparatuses and methods for writing data to a memory |
FR3103583B1 (fr) * | 2019-11-27 | 2023-05-12 | Commissariat Energie Atomique | Système de gestion des données partagées |
US10877761B1 (en) * | 2019-12-08 | 2020-12-29 | Mellanox Technologies, Ltd. | Write reordering in a multiprocessor system |
CN111061510B (zh) * | 2019-12-12 | 2021-01-05 | 湖南毂梁微电子有限公司 | 一种可扩展的asip结构平台及指令处理方法 |
CN111143127B (zh) * | 2019-12-23 | 2023-09-26 | 杭州迪普科技股份有限公司 | 监管网络设备的方法、装置、存储介质及设备 |
CN113034653B (zh) * | 2019-12-24 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 一种动画渲染方法及装置 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11137936B2 (en) | 2020-01-21 | 2021-10-05 | Google Llc | Data processing on memory controller |
US11360780B2 (en) * | 2020-01-22 | 2022-06-14 | Apple Inc. | Instruction-level context switch in SIMD processor |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
EP4102465A4 (en) | 2020-02-05 | 2024-03-06 | Sony Interactive Entertainment Inc. | GRAPHICS PROCESSOR AND INFORMATION PROCESSING SYSTEM |
US11188316B2 (en) * | 2020-03-09 | 2021-11-30 | International Business Machines Corporation | Performance optimization of class instance comparisons |
US11354130B1 (en) * | 2020-03-19 | 2022-06-07 | Amazon Technologies, Inc. | Efficient race-condition detection |
US12001929B2 (en) * | 2020-04-01 | 2024-06-04 | Samsung Electronics Co., Ltd. | Mixed-precision neural processing unit (NPU) using spatial fusion with load balancing |
WO2021212074A1 (en) * | 2020-04-16 | 2021-10-21 | Tom Herbert | Parallelism in serial pipeline processing |
JP7380415B2 (ja) * | 2020-05-18 | 2023-11-15 | トヨタ自動車株式会社 | エージェント制御装置 |
JP7380416B2 (ja) | 2020-05-18 | 2023-11-15 | トヨタ自動車株式会社 | エージェント制御装置 |
SE544261C2 (en) | 2020-06-16 | 2022-03-15 | IntuiCell AB | A computer-implemented or hardware-implemented method of entity identification, a computer program product and an apparatus for entity identification |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
GB202010839D0 (en) * | 2020-07-14 | 2020-08-26 | Graphcore Ltd | Variable allocation |
US12021546B2 (en) * | 2020-09-03 | 2024-06-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for improved belief propagation based decoding |
US11340914B2 (en) * | 2020-10-21 | 2022-05-24 | Red Hat, Inc. | Run-time identification of dependencies during dynamic linking |
JP7203799B2 (ja) | 2020-10-27 | 2023-01-13 | 昭和電線ケーブルシステム株式会社 | 油入り電力ケーブルおよび接続部における漏油箇所の補修方法 |
TWI768592B (zh) * | 2020-12-14 | 2022-06-21 | 瑞昱半導體股份有限公司 | 中央處理器 |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US11243773B1 (en) | 2020-12-14 | 2022-02-08 | International Business Machines Corporation | Area and power efficient mechanism to wakeup store-dependent loads according to store drain merges |
CN112924962B (zh) * | 2021-01-29 | 2023-02-21 | 上海匀羿电磁科技有限公司 | 一种地下管线侧向偏移滤波检测及定位方法 |
CN113112393B (zh) * | 2021-03-04 | 2022-05-31 | 浙江欣奕华智能科技有限公司 | 视觉导航***中的边缘化装置 |
CN113438171B (zh) * | 2021-05-08 | 2022-11-15 | 清华大学 | 一种低功耗存算一体***的多芯片连接方法 |
CN113553266A (zh) * | 2021-07-23 | 2021-10-26 | 湖南大学 | 一种基于并行性检测模型的串行程序的并行性检测方法、***、终端及可读存储介质 |
US20230086827A1 (en) * | 2021-09-23 | 2023-03-23 | Oracle International Corporation | Analyzing performance of resource systems that process requests for particular datasets |
US11770345B2 (en) * | 2021-09-30 | 2023-09-26 | US Technology International Pvt. Ltd. | Data transfer device for receiving data from a host device and method therefor |
JP2023082571A (ja) * | 2021-12-02 | 2023-06-14 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
US20230289189A1 (en) * | 2022-03-10 | 2023-09-14 | Nvidia Corporation | Distributed Shared Memory |
WO2023214915A1 (en) * | 2022-05-06 | 2023-11-09 | IntuiCell AB | A data processing system for processing pixel data to be indicative of contrast. |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
DE102022003674A1 (de) * | 2022-10-05 | 2024-04-11 | Mercedes-Benz Group AG | Verfahren zum statischen Allozieren von lnformationen zu Speicherbereichen, informationstechnisches System und Fahrzeug |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206922B1 (en) * | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
CN1993709A (zh) * | 2005-05-20 | 2007-07-04 | 索尼株式会社 | 信号处理设备 |
EP2187695A1 (en) * | 2007-12-28 | 2010-05-19 | Huawei Technologies Co., Ltd. | Method, device and system for realizing task in cluster environment |
CN101799750A (zh) * | 2009-02-11 | 2010-08-11 | 上海芯豪微电子有限公司 | 一种数据处理的方法与装置 |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4862350A (en) * | 1984-08-03 | 1989-08-29 | International Business Machines Corp. | Architecture for a distributive microprocessing system |
GB2211638A (en) * | 1987-10-27 | 1989-07-05 | Ibm | Simd array processor |
US5218709A (en) * | 1989-12-28 | 1993-06-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Special purpose parallel computer architecture for real-time control and simulation in robotic applications |
IL97315A (en) * | 1990-02-28 | 1994-10-07 | Hughes Aircraft Co | Multi-group signal processor |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5315700A (en) * | 1992-02-18 | 1994-05-24 | Neopath, Inc. | Method and apparatus for rapidly processing data sequences |
JPH07287700A (ja) * | 1992-05-22 | 1995-10-31 | Internatl Business Mach Corp <Ibm> | コンピュータ・システム |
US5315701A (en) * | 1992-08-07 | 1994-05-24 | International Business Machines Corporation | Method and system for processing graphics data streams utilizing scalable processing nodes |
US5560034A (en) * | 1993-07-06 | 1996-09-24 | Intel Corporation | Shared command list |
JPH07210545A (ja) * | 1994-01-24 | 1995-08-11 | Matsushita Electric Ind Co Ltd | 並列処理プロセッサ |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
JPH1049368A (ja) * | 1996-07-30 | 1998-02-20 | Mitsubishi Electric Corp | 条件実行命令を有するマイクロプロセッサ |
WO1998013759A1 (fr) * | 1996-09-27 | 1998-04-02 | Hitachi, Ltd. | Machine de traitement de donnees et systeme de traitement de donnees |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
US6243499B1 (en) * | 1998-03-23 | 2001-06-05 | Xerox Corporation | Tagging of antialiased images |
JP2000207202A (ja) * | 1998-10-29 | 2000-07-28 | Pacific Design Kk | 制御装置およびデ―タ処理装置 |
WO2000062182A2 (en) * | 1999-04-09 | 2000-10-19 | Clearspeed Technology Limited | Parallel data processing apparatus |
US8171263B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
US6751698B1 (en) * | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
EP1102163A3 (en) * | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
JP2001167069A (ja) * | 1999-12-13 | 2001-06-22 | Fujitsu Ltd | マルチプロセッサシステム及びデータ転送方法 |
JP2002073329A (ja) * | 2000-08-29 | 2002-03-12 | Canon Inc | プロセッサ |
WO2002029601A2 (en) * | 2000-10-04 | 2002-04-11 | Pyxsys Corporation | Simd system and method |
US6959346B2 (en) * | 2000-12-22 | 2005-10-25 | Mosaid Technologies, Inc. | Method and system for packet encryption |
JP5372307B2 (ja) * | 2001-06-25 | 2013-12-18 | 株式会社ガイア・システム・ソリューション | データ処理装置およびその制御方法 |
GB0119145D0 (en) * | 2001-08-06 | 2001-09-26 | Nokia Corp | Controlling processing networks |
JP2003099252A (ja) * | 2001-09-26 | 2003-04-04 | Pacific Design Kk | データ処理装置およびその制御方法 |
JP3840966B2 (ja) * | 2001-12-12 | 2006-11-01 | ソニー株式会社 | 画像処理装置およびその方法 |
US7853778B2 (en) * | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
US7548586B1 (en) * | 2002-02-04 | 2009-06-16 | Mimar Tibet | Audio and video processing apparatus |
US7506135B1 (en) * | 2002-06-03 | 2009-03-17 | Mimar Tibet | Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements |
JP2005535966A (ja) * | 2002-08-09 | 2005-11-24 | インテル・コーポレーション | アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム |
JP2004295494A (ja) * | 2003-03-27 | 2004-10-21 | Fujitsu Ltd | 汎用性及びリアルタイム性を有するマルチ処理ノードシステム |
US7107436B2 (en) * | 2003-09-08 | 2006-09-12 | Freescale Semiconductor, Inc. | Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect |
US7836276B2 (en) * | 2005-12-02 | 2010-11-16 | Nvidia Corporation | System and method for processing thread groups in a SIMD architecture |
DE10353267B3 (de) * | 2003-11-14 | 2005-07-28 | Infineon Technologies Ag | Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl |
GB2409060B (en) * | 2003-12-09 | 2006-08-09 | Advanced Risc Mach Ltd | Moving data between registers of different register data stores |
US8566828B2 (en) * | 2003-12-19 | 2013-10-22 | Stmicroelectronics, Inc. | Accelerator for multi-processing system and method |
US7412587B2 (en) * | 2004-02-16 | 2008-08-12 | Matsushita Electric Industrial Co., Ltd. | Parallel operation processor utilizing SIMD data transfers |
JP4698242B2 (ja) * | 2004-02-16 | 2011-06-08 | パナソニック株式会社 | 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置 |
JP2005352568A (ja) * | 2004-06-08 | 2005-12-22 | Hitachi-Lg Data Storage Inc | アナログ信号処理回路、並びに、そのデータレジスタ書換方法とそのデータ通信方法 |
US7681199B2 (en) * | 2004-08-31 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Time measurement using a context switch count, an offset, and a scale factor, received from the operating system |
US7565469B2 (en) * | 2004-11-17 | 2009-07-21 | Nokia Corporation | Multimedia card interface method, computer program product and apparatus |
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
US20060155955A1 (en) * | 2005-01-10 | 2006-07-13 | Gschwind Michael K | SIMD-RISC processor module |
GB2437836B (en) * | 2005-02-25 | 2009-01-14 | Clearspeed Technology Plc | Microprocessor architectures |
GB2423840A (en) * | 2005-03-03 | 2006-09-06 | Clearspeed Technology Plc | Reconfigurable logic in processors |
US7992144B1 (en) * | 2005-04-04 | 2011-08-02 | Oracle America, Inc. | Method and apparatus for separating and isolating control of processing entities in a network interface |
CN101322111A (zh) * | 2005-04-07 | 2008-12-10 | 杉桥技术公司 | 每个线程具有多个并发流水线的多线程处理器 |
US20060259737A1 (en) * | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
JP2006343872A (ja) * | 2005-06-07 | 2006-12-21 | Keio Gijuku | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
US8275976B2 (en) * | 2005-08-29 | 2012-09-25 | The Invention Science Fund I, Llc | Hierarchical instruction scheduler facilitating instruction replay |
US7617363B2 (en) * | 2005-09-26 | 2009-11-10 | Intel Corporation | Low latency message passing mechanism |
US7421529B2 (en) * | 2005-10-20 | 2008-09-02 | Qualcomm Incorporated | Method and apparatus to clear semaphore reservation for exclusive access to shared memory |
US20070150895A1 (en) * | 2005-12-06 | 2007-06-28 | Kurland Aaron S | Methods and apparatus for multi-core processing with dedicated thread management |
CN2862511Y (zh) * | 2005-12-15 | 2007-01-24 | 李志刚 | 用于gjb-289a总线的多功能接口板 |
US7788468B1 (en) * | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US7360063B2 (en) * | 2006-03-02 | 2008-04-15 | International Business Machines Corporation | Method for SIMD-oriented management of register maps for map-based indirect register-file access |
US8560863B2 (en) * | 2006-06-27 | 2013-10-15 | Intel Corporation | Systems and techniques for datapath security in a system-on-a-chip device |
JP2008059455A (ja) * | 2006-09-01 | 2008-03-13 | Kawasaki Microelectronics Kk | マルチプロセッサ |
CN101627365B (zh) * | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US7870400B2 (en) * | 2007-01-02 | 2011-01-11 | Freescale Semiconductor, Inc. | System having a memory voltage controller which varies an operating voltage of a memory and method therefor |
JP5079342B2 (ja) * | 2007-01-22 | 2012-11-21 | ルネサスエレクトロニクス株式会社 | マルチプロセッサ装置 |
US20080270363A1 (en) * | 2007-01-26 | 2008-10-30 | Herbert Dennis Hunt | Cluster processing of a core information matrix |
US8250550B2 (en) * | 2007-02-14 | 2012-08-21 | The Mathworks, Inc. | Parallel processing of distributed arrays and optimum data distribution |
CN101021832A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 支持局部寄存和条件执行的64位浮点整数融合运算群 |
US8132172B2 (en) * | 2007-03-26 | 2012-03-06 | Intel Corporation | Thread scheduling on multiprocessor systems |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
CN100461095C (zh) * | 2007-11-20 | 2009-02-11 | 浙江大学 | 一种支持多模式的媒体增强流水线乘法单元设计方法 |
FR2925187B1 (fr) * | 2007-12-14 | 2011-04-08 | Commissariat Energie Atomique | Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele,en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees |
US20090183035A1 (en) * | 2008-01-10 | 2009-07-16 | Butler Michael G | Processor including hybrid redundancy for logic error protection |
EP3413206B1 (en) * | 2008-05-30 | 2020-10-28 | Advanced Micro Devices, Inc. | Local and global data share |
CN101739235A (zh) * | 2008-11-26 | 2010-06-16 | 中国科学院微电子研究所 | 将32位dsp与通用risc cpu无缝混链的处理器装置 |
CN101593164B (zh) * | 2009-07-13 | 2012-05-09 | 中国船舶重工集团公司第七○九研究所 | 基于嵌入式Linux的从USB HID装置及固件实现方法 |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
-
2011
- 2011-09-14 US US13/232,774 patent/US9552206B2/en active Active
- 2011-11-18 CN CN201180055828.1A patent/CN103221939B/zh active Active
- 2011-11-18 WO PCT/US2011/061456 patent/WO2012068494A2/en active Application Filing
- 2011-11-18 WO PCT/US2011/061369 patent/WO2012068449A2/en active Application Filing
- 2011-11-18 JP JP2013540059A patent/JP5989656B2/ja active Active
- 2011-11-18 CN CN201180055748.6A patent/CN103221934B/zh active Active
- 2011-11-18 JP JP2013540064A patent/JP2014501969A/ja active Pending
- 2011-11-18 JP JP2013540069A patent/JP2014501008A/ja active Pending
- 2011-11-18 CN CN201180055771.5A patent/CN103221935B/zh active Active
- 2011-11-18 CN CN201180055668.0A patent/CN103221933B/zh active Active
- 2011-11-18 CN CN201180055810.1A patent/CN103221938B/zh active Active
- 2011-11-18 WO PCT/US2011/061474 patent/WO2012068504A2/en active Application Filing
- 2011-11-18 WO PCT/US2011/061461 patent/WO2012068498A2/en active Application Filing
- 2011-11-18 WO PCT/US2011/061431 patent/WO2012068478A2/en active Application Filing
- 2011-11-18 JP JP2013540074A patent/JP2014501009A/ja active Pending
- 2011-11-18 WO PCT/US2011/061444 patent/WO2012068486A2/en active Application Filing
- 2011-11-18 WO PCT/US2011/061428 patent/WO2012068475A2/en active Application Filing
- 2011-11-18 CN CN201180055803.1A patent/CN103221937B/zh active Active
- 2011-11-18 JP JP2013540061A patent/JP6096120B2/ja active Active
- 2011-11-18 JP JP2013540065A patent/JP2014501007A/ja active Pending
- 2011-11-18 CN CN201180055782.3A patent/CN103221936B/zh active Active
- 2011-11-18 JP JP2013540058A patent/JP2014505916A/ja active Pending
- 2011-11-18 CN CN201180055694.3A patent/CN103221918B/zh active Active
- 2011-11-18 WO PCT/US2011/061487 patent/WO2012068513A2/en active Application Filing
- 2011-11-18 JP JP2013540048A patent/JP5859017B2/ja active Active
-
2016
- 2016-02-12 JP JP2016024486A patent/JP6243935B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206922B1 (en) * | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
CN1993709A (zh) * | 2005-05-20 | 2007-07-04 | 索尼株式会社 | 信号处理设备 |
EP2187695A1 (en) * | 2007-12-28 | 2010-05-19 | Huawei Technologies Co., Ltd. | Method, device and system for realizing task in cluster environment |
CN101799750A (zh) * | 2009-02-11 | 2010-08-11 | 上海芯豪微电子有限公司 | 一种数据处理的方法与装置 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103221937B (zh) | 用于处理集群的加载/存储电路 | |
US11893424B2 (en) | Training a neural network using a non-homogenous set of reconfigurable processors | |
Jones et al. | GRIP—a high-performance architecture for parallel graph reduction | |
US11886931B2 (en) | Inter-node execution of configuration files on reconfigurable processors using network interface controller (NIC) buffers | |
US11392740B2 (en) | Dataflow function offload to reconfigurable processors | |
Barsotti et al. | Fastbus data acquisition for CDF | |
WO2022133047A1 (en) | Dataflow function offload to reconfigurable processors | |
US20230289242A1 (en) | Hardware accelerated synchronization with asynchronous transaction support | |
Zhang et al. | Design and Implementation of Real-Time Processing Systems | |
Fan | Realization of Multiprocessing on a RISC-like Architecture | |
Chen et al. | Integrating Memory And Network Accesses: A Flexible Processor-network Interface For Efficient Application Execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |