标签:Once rect result col ota rac 控制流图 diff 维护
督促自己读论文
Abstract
Multiscalar processors use a new, aggressive implementation paradigm for extracting large quantities of instruction level parallelism from ordinary high level language programs. A single program is divided into a collection of tasks by a combination of software and hardware. The tasks are distributed to a number of parallel processing units which reside within a processor complex. Each of these units fetches and executes instructions belonging to its assigned task. The appearance of a single logical register ?le is maintained with a copy in each parallel processing unit. Register results are dynamically routed among the many parallel processing units with the help of compiler-generated masks. Memory accesses may occur speculatively without knowledge of preceding loads or stores. Addresses are disambiguated dynamically, many in parallel, and processing waits only for true data dependences.
This paper presents the philosophy of the multiscalar paradigm, the structure of multiscalar programs, and the hardware architecture of a multiscalar processor. The paper also discusses performance issues in the multiscalar model, and compares the multiscalar paradigm with other paradigms. Experimental results evaluating the performance of a sample of multiscalar organizations are also presented.
摘要
多标量处理器使用一种新的,激进的实现方式将高层程序语言中的指令进行并行指令,一个单独的程序被分割为一系列软硬件结合的任务,这些任务被分配到一个处理器集合中的多个并行的处理单元,每个处理单元取指并执行各自任务的指令。每个独立的抽象寄存器以副本的形式保存在每一个并行处理单元中。寄存器的运算结果根据编译器产生的掩码进行动态路由,对内存的投机访问导致无法预测其访存行为。为了保证数据地址访问的结果的一致性,处理器需要等待实际依赖的数据产生。
这篇论文通过介绍多标量的整体思路与方法,多标量程序的结构,多标量处理器的硬件结构三个层面来阐述多标量处理器。本论文还进行了多标量处理器的性能问题,并与其他结构的进行比较,并呈现了一些测试结果。
ILP processors and compilers typically convert the total ordering of instructions as they appear in the original program into a partial ordering determined by dependences on data and control. Control dependences (which appear as conditional branches) present a major obstacle to highly parallel execution because these dependences must be resolved before all subsequent instructions are known to be valid.
ILP处理器和编译器通常将指令在原始程序中的顺序转换为数据以及控制依赖的顺序。由于分支后的指令需要根据分支指令的执行结果来判断是否执行,因此,该控制依赖项(如分支)是阻碍高度并行执行的主要障碍。
Focusing on control dependences, one can represent a static program as a control ?ow graph (CFG), where basic blocks are nodes, and arcs represent ?ow of control from one basic block to another. Dynamic program execution can be viewed as walking through the program CFG, generating a dynamic sequence of basic blocks which have to be executed for a particular run of the program
根据程序的控制依赖,可以将程序的控制转换为控制流图(CFG),其将程序块表示为节点,并用边表示各个程序块的控制流。动态执行程序可以看作是在控制流图中进行遍历,生成程序的特定执行基本块间的动态序列。
To achieve high performance, an ILP processor must attempt to walk through the CFG with a high level of parallelism. Branch prediction with speculative execution is one commonly-used technique for raising the level of parallelism that can be achieved during the walk. The primary constraint on any parallel walk, however, is that it must preserve the sequential semantics assumed in the program
为了可以高效的运行程序,ILP处理器必须尝试在更高层次上并行遍历CFG,在遍历过程中,对分支进行推测性的执行是一种提高并行度的常用手段。然而,任何并行执行的首要约束在于必须保持程序的源语义。
In the multiscalar model of execution, the CFG is partitioned into portions called tasks. A multiscalar processor walks through the CFG speculatively, taking task-sized steps, without pausing to inspect any of the instructions within a task. A task is assigned to one of a collection of processing units for execution by passing the initial program counter of the task to the processing unit. Multiple tasks then execute in parallel on the processing units, resulting in an aggregate execution rate of multiple instructions per cycle.
在多标量并行执行模型中,CFG被分割为多个任务,一个多标量处理器投机性的遍历CFG,将任务作为最小单元进行遍历。每个任务将其起始的程序地址分配给一个程序执行单元,多个任务同时执行,进而提高每个周期内指令的执行数量。
At this level, the concept sounds simple, however, the key to making it work is the proper resolution of inter-task data dependences. In particular, data that is passed between instructions via registers and memory must be routed correctly by the hardware. Furthermore, it is in this area of inter-task data communication that the multiscalar approach differs signi?cantly from more traditional multiprocessing methods.
在这个层次上,这个概念看起来很简单,然而,达到这个目的的关键在于处理好任务间的控制以及数据依赖。特别是两个任务间的数据通过寄存器以及内存的传递必须在硬件上得到正确的路由。此外,在任务间的通信方式上,多标量处理器于其他传统的处理器上有着显著的不同。
This paper describes the multiscalar approach to exploiting ?ne-grain parallelism (or instruction-level parallelism or ILP). Section 2 provides an overview of the multiscalar paradigm. A breakdown of the distribution of the available processing unit cycles in multiscalar execution follows in Section 3. In Section 4, we compare multiscalar with other ILP paradigms. A performance evaluation of potential con?gurations of a multiscalar processor is given in Section 5. In Section 6, we summarize this work and offer concluding remarks.
本片论文用于描述采用细粒度并行的多标量执行方法,在第二章概述多标量范式,在第三章对多标量执行的处理器中期进行详细说明,第四章,将多标量处理器于其他处理器进行比较,并在第五章对多标量处理器进行性能评估,第六章进行总结。
A multiscalar program must provide the means to support a fast walk (through the CFG) that distributes tasks en masse to processing units. Below, we describe three distinct types of information maintained within a machine-level multiscalar program to facilitate this end: (i) the actual code for the tasks which comprises the work, (ii) the details of the structure of the CFG, and (iii) the communication characteristics of individual tasks.
多标量程序必须提供一种可以在CFG图中快速遍历的方法,以便将任务分发给每个处理单元,下面,我们,我们将描述在机器级的多标量程序中维护的三种不同的类型信息,以达到这个目的:
1.任务的实际代码组成本工作
每个任务的代码都是特定的,一个任务是由一系列的指令构成,其方式与顺序的程序片段相同,尽管,在各个不同的体系结构中指令集各有不同,影响单独的处理单元的设计,但对多标量处理器的影响很小,因此,指定任务的指令集是次要的(这个特性的意义在于现有的ISA可以在没有大规模调整的情况下进行使用)
标签:Once rect result col ota rac 控制流图 diff 维护
原文地址:https://www.cnblogs.com/hanm/p/11977285.html