【计算机系统结构】第六章:向量处理机

2024-04-02 00:28

本文主要是介绍【计算机系统结构】第六章:向量处理机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一节:向量的流水处理与向量流水处理机

知识点1:向量处理机相关概念

①向量处理机是有向量数据表示的处理机,分向量流水处理机和阵列处理机两类。向量流水处理机是以时间重叠途径开发的,而阵列处理机是以资源重复途径开发的。

②所谓V,冲突,指的是并行工作的各向量指令的源向量或结果向量使用了相同的V{。

③CRAY-1向量处理的一个显著特点是只要不出现功能部件使用冲突和源向量寄存器使用冲突,通过链接机构可使有数据相关的向量指令仍能大部分时间并行执行。

④链接技术是提高计算机整体运算速度的一个非常重要的措施。

第二节:阵列处理机的原理

知识点1:阵列处理机的构形和特点

1、阵列处理机的构形和特点

(1)阵列处理机的构形

阵列处理机有两种构形,差别主要在于存储器的组成方式和互连网络的作用不同。

①构形1:

是采用分布式存储器阵列处理机的构形。各处理单元有局部存储器(PEM)存放被分布的数据,只能被本处理单元直接访问。

在控制部件内还有一个存放程序和数据的主存储器,整个系统是在控制部件的控制下运行用户程序和部分系统程序的。在执行主存储器中的用户程序时,所有指令都在控制部件中进行译码,把只适合串行处理的标量或控制类指令留给控制部件自己执行,而把适合于并行处理的向量类指令“播送”给各个PE,控制处于“活跃”的那些PE并行执行。

②构形2:

是采用集中式共享存储器的阵列处理机构形。系统存储器是由K个存储分体(MM。~一MMA-)集中组成,经ICN为全部N个处理单元(PE一~PEy,)所共享。为使各处理单元对长度为N的向量中各个元素都能同时并行处理,存储分体个数K应等于或多于处理单元数N。各处理单元在访主存时,为避免发生分体冲突,也要求有合适的算法能将数据合理地分配到各个存储分体中。

知识点2:阵列处理机与流水处理机的比较

1、阵列处理机的单指令流多数据流处理方式和由它产生的特殊结构是以诸如有限差分、矩阵、信号处理、线性规划等一系列计算问题为背景发展起来的。这些计算问题利用多个处理单元对向量或数组所包含的各个分量同时计算,从而易于获得很高的处理速度。

①与同样擅长于向量处理的流水线处理机相比,阵列处理机利用的是资源重复,而不是时间重叠;利用的是并行性中的同时性,而不是并发性。它的每个处理单元要同等地担负起各种运算功能,但其设备利用率却可能没有多个单功能流水线部件的那样高。阵列处理机提高速度主要是靠增大处理单元数,比起向量流水处理机主要靠缩短时钟周期来说,速度提高的潜力要大得多。

②与流水线处理机不同的另一方面是阵列处理机使用简单、规整的互连网络来确定处理单元间的连接。

阵列处理机在机间互连上比固定结构的单功能流水线灵活,使相当一部分专门问题上的工作性能比流水线处理机高得多,专用性强得多。

阵列处理机实质上是由专门应对数组运算的处理单元阵列组成的处理机、专门从事处理单元阵列的控制及标量处理的处理机和专门从事系统输入/输出及操作系统管理的处理机组成的一个异构型多处理机系统。

知识点3: ILLIAC IV的并行算法

累加和是解决将N个数的顺序相加转为并行相加的问题。为得到各项累加的部分和与最后的总和,要用到处理单元中的活跃标志位。只有处于活跃状态的处理单元才能执行相应的操作。为叙述方便,取N=8,即有8个数A(I)顺序累加,其中0≤I≤7。

第三节:SIMD计算机互联网络

知识点1:互连网的设计目标

SIMD系统的互连网络的设计目标是:结构不要过分复杂,以降低成本;互连要灵活,以满足算法和应用的需要;处理单元间信息交换所需的传送步数要尽可能少,以提高速度性能;能用规整单一的基本构件组合而成,或者经多次通过或者经多级连接来实现复杂的互连,使模块性好,以便于用VLSI实现并满足系统的可扩充性。

知识点2:互连函数的表示

为反映互连特性,每种互连网络可用一组互连函数定义。如果把互连网络的N个入端和N个出端(N=2")各自用0,1,…,N-1的整数编号代表,则互连函数就是表示互连网络的出端号和入端号的一一对应关系。

互连函数可以直接用结点间的连线图表示,但有时显得烦琐,也难以体现出连接上的内在规律。因此,常用另一种简单的函数式表示,即把所有入端x和出端f(x)都用二进制编码,从两者的二进制编码上找出其函数规律。

知识点3:互连网应抉择的几个问题

在确定PE之间通信的互连网络时,需要对操作方式、控制策略、交换方法和网络的拓扑结构做出抉择。

操作方式有同步、异步及同步与异步组合3种。现有的阵列处理机根据其SIMD性质,均采用同步操作方式,让所有PE按时钟同步操作。异步或组合操作方式一般多用于多处理机。

交换方法主要有线路交换、包交换及线路与包交换组合3种。网络的拓扑结构指的是互连网络入、出端可以连接的模式,有静态和动态两种。

知识点4:基本的单级互连网络

基本的单级互连网络有:立方体单级网络、PM2I单级网络、混洗交换单级网络、蝶形单级网络。

(1)立方体单级网络

立方体(Cube)单级网络的每个顶点(网络的结点)代表一个处理单元,共有8个处理单元,用zyx三位二进制码编号。它所能实现的入、出端连接如同立方体各顶点间能实现的互连一样,即每个处理单元只能直接连到其二进制编码的某一位取反的其他3个处理单元上。

(2) PM2I单级网络。

PM2I单级网络是“加减2i”单级网络的简称。能实现与j号的处理单元直接相连的是号为j±2i的处理单元,即:

PM2.;(j)=j+2i mod N

PM2_;(j)=j-2i mod N

式中,0≤j≤N-1,0≤i≤n-1,n=log,N。它共有2n个互连函数。对于N=8的三维PM2I互连网络的互连函数,有PM2+o、PM2-o、PM2,1、PM2-1、PM2+2等五个不同的的互连函数。

(3)混洗交换单级网络

混洗交换单级网络包含两个互连函数,一个是全混,另一个是交换。图6-16表示8个处理单元间的全混连接。可以看出,其连接规律是把全部按编码顺序排列的处理单元从当中分为数目相等的两半,前一半和后一半在连接至出端时正好一一隔开。

(4)蝶形单级网络

蝶形单级网络(Butterfly)的互连函数为Butterfly (P.1Pm-2…P,P。)=PoPn-2…P1Pn-1

即将二进制地址的最高位和最低位相互交换位置。图6-18为N=8个处理单元之间用蝶形单级互连网络互连的情况。它实现的是0→0,1→4,22,3→6,4→1,5→5,6-→3,7→7的同时连接。

知识点5:基本的多级互连网络

(1)多级PM2I网络

N=8的多级PM2I网络的结构包含n级单元间连接,每一级都是把前后两列各N=2n个单元按PM2I拓扑相互连接起来。从第1级(O≤in-1)来说,每一个入单元j (0≤j≤N-1)都有3根连接线分别通往单元j,j+2imodN和j-2imodN。

(2)基准网络

基准网络与二进制立方体网络的逆网络相似,只是在第1级的级间连接不同。它采取从输入到输出的级间互连为恒等、逆全混、子逆全混和恒等置换,所用交换单元均为二功能的,采取单元控制。

第四节:共享主存构形的阵列处理机中的并行存储器的无冲突访问

知识点1:实现方阵或长方阵数组的无冲突访问的要求

对于二维数组(结论也适用于多维数组)而言,假设主存有m个分体并行,从中访问有n个元素的数组子集。这n个元素的变址跳距对于二维数组的行、列、主对角线、次对角线都是不一样的,但要求都能实现无冲突访问。如果设m=n=4,一个4×4的二维数组直接按行存储的方案则如图6所示。

虽然同时访问某一行、主对角线或次对角线上的所有元素时,都可以无冲突地访问,但要同时访问某一列的元素时,由于它们集中存放在同一存储分体内,会产生访存冲突,因此,每次只能访问其中的一个元素,使实际频宽降低到1/4。

第五节:脉动阵列流水处理机

知识点1:脉动阵列流水处理机的工作原理

脉动阵列结构是由一组处理单元(PE)构成的阵列。每个PE的内部结构相同,一般由一个加法/逻辑运算部件或加法/乘法运算部件再加上若干锁存器构成,可完成少数基本的算术逻辑运算操作。阵列内所有处理单元的数据锁存器都受同一个时钟控制。运算时数据在阵列结构的各个处理单元间沿各自的方向同步向前推进,形象的称其为脉动阵列结构。

知识点2:脉动阵列结构的特点

脉动阵列结构具有如下特点:

(1)结构简单、规整,模块化强,可扩充性好,非常适合用超大规模集成电路实现。

(2)PE间数据通信距离短、规则,使数据流和控制流的设计、同步控制等均简单规整。

(3)脉动阵列中所有PE能同时运算,具有极高的计算并行性,可通过流水获得很高的运算效率和吞吐率。输入数据能被多个处理单元重复使用,大大减轻了阵列与外界的I/O通信量,降低了对系统主存和I/0系统频宽的要求。

(4)脉动阵列结构的构形与特定计算任务和算法密切相关,具有某种专用性,限制了应用范围,这对VLSI是不利的。

知识点3:发展通用脉动阵列结构的途径

造成脉动阵列处理机应用范围有限的关键因素是,受阵列结构的通用性及I/0带宽约束所限制的阵列结构的规模大小。发展通用脉动阵列构的途径主要有3种:

(1)通过增设附加的硬件,对阵列的拓扑结构和互连方式用可编程开关进行重构,即经程序重新配置阵列的结构。

(2)用软件把不同的算法映像到固定的阵列结构上,该方法依赖于面向并行运算所采用的程序语言,操作系统,编详程序和软件开发工具的设计。

(3)探寻与问题大小无关的脉动处理方法,以及VLSI运算系统的分割矩阵算法,使它们可以克服阵列只能求解固定大小题目的缺陷,同时探寻发展适合一类计算问题的通用算法和相应的设置方案。

这篇关于【计算机系统结构】第六章:向量处理机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868518

相关文章

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s