多发射处理器编译
㈠ 如何在 GCC 中为具有 FPU 的 Cortex M4 启用硬件浮点数学运算
VFP (vector floating-point)
从ARMv5开始,就有可选的 Vector Floating Point (VFP)模块,当然最新的如 Cortex-A8, Cortex-A9 和 Cortex-A5 可以配置成不带VFP的模式供芯片厂商选择。VFP经过若干年的发展,有VFPv2 (一些 ARM9 / ARM11)、 VFPv3-D16(只使用16个浮点寄存器,默认为32个)和VFPv3+NEON (如大多数的Cortex-A8芯片)。对于包含NEON的ARM芯片,NEON一般和VFP公用寄存器。
硬浮点Hard-float
编译器将代码直接编译成发射给硬件浮点协处理器(浮点运算单元FPU)去执行。FPU通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元FPU当然会带来性能的提升。因为往往一个浮点的函数调用需要几个或者几十个时钟周期。
软浮点 Soft-float
编译器把浮点运算转换成浮点运算的函数调用和库函数调用,没有FPU的指令调用,也没有浮点寄存器的参数传递。浮点参数的传递也是通过ARM寄存器或者堆栈完成。 现在的linux系统默认编译选择使用hard-float,即使系统没有任何浮点处理器单元,这就会产生非法指令和异常。因而一般的系统镜像都采用软浮点以兼容没有VFP的处理器。
armel和armhf ABI
在armel中,关于浮点数计算的约定有三种。以gcc为例,对应的-mfloat-abi参数值有三个:soft,softfp,hard。soft是指所有浮点运算全部在层实现,效率当然不高,会存在不必要的浮点到整数、整数到浮点的转换,只适合于早期没有浮点计算单元的ARM处理器;softfp是目前armel的默认设置,它将浮点计算交给FPU处理,但函数参数的传递使用通用的整型寄存器而不是FPU寄存器;hard则使用FPU浮点寄存器将函数参数传递给FPU处理。需要注意的是,在兼容性上,soft与后两者是兼容的,但softfp和hard两种模式不兼容。默认情况下,armel使用softfp,因此将hard模式的armel单独作为一个abi,称之为armhf。而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。在完全不改变源码和配置的情况下,在一些应用程序上,使用armhf能得到20%——25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。
Soft-float和hard-float的编译选项
在CodeSourcery gcc的编译参数上,使用-mfloat-abi=name来指定浮点运算处理方式。-mfpu=name来指定浮点协处理的类型。可选类型如fpa,fpe2,fpe3,maverick,vfp,vfpv3,vfpv3-fp16,vfpv3-d16,vfpv3-d16-fp16,vfpv3xd,vfpv3xd-fp16,neon,neon-fp16,vfpv4,vfpv4-d16,fpv4-sp-d16,neon-vfpv4等。使用-mfloat-abi=hard (等价于-mhard-float) -mfpu=vfp来选择编译成硬浮点。使用-mfloat-abi=softfp就能兼容带VFP的硬件以及soft-float的实现,运行时的连接器ld.so会在执行浮点运算时对于运算单元的选择,是直接的硬件调用还是库函数调用,是执行/lib还是/lib/vfp下的libm。-mfloat-abi=soft (等价于-msoft-float)直接调用软浮点实现库。
㈡ 我用Ue 编译网页时老是出现临时文件。那位高手教我设置一下吧
给份超全的。
用法:复制记事本上,需要用的时候再拿出来找找。
太多了?多就好。找到关键的词,在记事本里的查找中查一下就OK了。
access arm 磁头臂,存取臂
access time 存取时间
adder 加法器
address 地址
alphanumeric 字母数字的
analog computer 模拟计算机
analyst 分析员
area 区域
array 数组,阵列
assembler 汇编程序
automation 自动化
band 区
batch processing 成批处理
binary code 二进制码
binary digit 二进制位,二进制数字
bit 比特,二进制的一位
branch 分支,支线
brush 电刷
buffer storage 缓冲存储器
calculator 计算器
call instruction 呼叫指令
card punch 卡片穿孔机
card reader 卡片阅读机,读卡机
cell 单元
channel 通道,信道
character 字符
check digit 校验数位
circuit 电路,线路
to clear 清除,清零
clock 时钟
code 代码
to code 编码
coder 编码员,编码器
command 指令,命令
compiler 编译程序
computer language 计算机语言
console 控制台
control unit 控制部件,控制器
core storage, core store 磁心存储器
counter 计数器
cybernetics 控制论
cycle 循环
data 数据
data processing 数据处理
debugging 调试
decision 制定
digit 数字,数位,位
digital computer 数字计算机
disc, disk 磁盘
display unit 显示装置
drum 磁鼓
to edit 编辑
electronics 电子学
emitter 发射器
to encode 编码
to erase 擦除,清洗,抹除
feed 馈送,供给
to feed 馈送,供给
feedback 反馈
field 字段,信息组,域
file 文件
floppy disk 软磁盘
floppy disk drive 软磁盘机
flow chart 流程图
frame 帧
hardware 硬件
identifier 标识符
index 索引
information 信息
inline processing 内处理
input 输入
inquiry 询问
instruction 指令
integrated circuit 集成电路
to interpret 解释
item 项目,项
jump 转移
key 键,关键码
keyboard 键盘
latency time 等待时间
library 库,程序库
linkage 连接
to load 装入,寄存,写入,加载
location 存储单元
logger 登记器,记录器
loop 循环
machine language 机器语言
magnetic storage 磁存储器
magnetic tape 磁带
matrix 矩阵
memory 存储器
message 信息,报文
microcomputer 微型计算机
mole 组件,模块
monitor 监视器,监督程序,管程
nanosecond 毫微秒
network 网络,网
numeric, numerical 数字的,数值的
octet 八位位组,八位字节
operator 操作员
optical character reader 光符阅读机
optical scanner 光扫描器
output 输出
overflow 溢出,上溢
panel 平板
parameter 参数,参量
perforator 穿孔机
peripheral equipment 外围设备,外部设备
personal computer 个人计算机
printed circuit 印制电路
printer 打印机
printout 打印输出
to process 处理
processing unit 处理部件
program 程序
to program 程序编制
programmer 程序设计员
programming 程序设计,程序编制
pulse 脉冲
punch 穿孔
to punch 穿孔
punched card, punch card 穿孔卡片
punched tape, punch tape 穿孔纸带
punch hole 孔,穿孔
random access 随机存取
to read 读
reader 阅读程序
reading 阅读
real time 实时
record, register 记录
rendancy 冗余
routine 例行程序
selector 选择器,选择符
sentinel 标记
sequence 序列,顺序
sequential 顺序的
serial 串行的.连续的
shift 移位,移数
signal 信号
simulation 模拟
simulator 模拟器,模拟程序
software 软件,软设备
sort 分类,排序
sorter 分类人员,分类机,分类程序,排序程序
storage 存储器
to store 存储
subroutine, subprogram 子程序
switch 开关
symbol 符号
symbolic language 符号语言
system 系统
tabulator 制表机
teleprinter 电传打字机
terminal 终端
terminal unit 终端设备
timer 时钟,精密计时器
time sharing 分时
timing 定时
track 磁道
transcer 传感器,翻译机
translator 翻译程序,翻译器
to update 更新
Winchester disk drive 温彻斯特磁盘机,硬盘机
working storage 工作存储器
回答者:Anspir - 经理 四级 2-18 01:56
提问者对于答案的评价:
3q3q3q3q 了
评价已经被关闭 目前有 1 个人评价
好
100% (1) 不好
0% (0)
其他回答共 1 条
一些电脑常用的英语单词EeDx
&;云南国土资源职业学院-学院论坛 -- 说你想说的,写你想写的 rt{CD
CPU(Center Processor Unit)中央处理单元 &QLC
mainboard主板 x,ZI/u
RAM(random access Y<WpH
memory)随机存储器(内存) b@mx6!
ROM(Read Only Memory)只读存储器 }
Floppy Disk软盘 2-G
Hard Disk硬盘 )1CqZ%
CD-ROM光盘驱动器(光驱) 2n'$~(
monitor监视器 G&tfc:
keyboard键盘 Z<_
mouse鼠标 am[#[
chip芯片 *c]3;h
CD-R光盘刻录机 @OcK
HUB集线器 z+i
Modem= MOlator-DEMolator,调制解调器 %/-
P-P(Plug and Play)即插即用 p'FL=e
UPS(Uninterruptable Power Supply)不间断电源 +**R`Q
BIOS(Basic-input-Output r
System)基本输入输出系统 /r88,>
CMOS(Complementary Metal-Oxide-Semiconctor)互补金属氧化物半导体 f;W`
setup安装 ANJA=
uninstall卸载 t
wizzard向导 ~|pM
OS(Operation Systrem)操作系统 #7r
OA(Office AutoMation)办公自动化 )(
exit退出 tv
edit编辑 r]09
复制 U$'!>
cut剪切 8
paste粘贴 YV%
delete删除 &Xw+~A
select选择 ^p=
find查找 Gx
select all全选 ?V1.#
replace替换 C~k'lS
undo撤消 !d(.'G
redo重做 _v
program程序 L-HP
license许可(证) 7:k
back前一步 2u
next下一步 T8Y
finish结束 lxq
folder文件夹 wg
Destination Folder目的文件夹 \
user用户 fNKh?
click点击 jeQ
double click双击 uqPI}
right click右击 FRI(%Z
settings设置 i
update更新 KU\S'G
release发布 ^~,dxh
data数据 D*
data base数据库 3
DBMS(Data Base Manege I
System)数据库管理系统 %
view视图 L=#
insert插入 AND(8,
object对象 R&
configuration配置 +;}Owt
command命令 qa
document文档 fW0.
POST(power-on-self-test)电源自检程序 7
cursor光标 J)8J
attribute属性 mEr
icon图标 &=8rqE
service pack服务补丁 %+*oN
option pack功能补丁 3oAM$&
Demo演示 Q@31
short cut快捷方式 QI_
exception异常 /<&PT/
debug调试 1p
previous前一个 "g#F.
column行 {J
row列 a`a08
restart重新启动 S!RG
text文本 xy
font字体 M_
size大小 W
scale比例 n
interface界面 ?
function函数 zmbE
access访问 >I"jB5
manual指南 u;-6F
active激活 {uw2KY
computer language计算机语言 G}
menu菜单 PTPT
GUI(graphical user C1;Y
interfaces )图形用户界面 CG
template模版 zEJf-
page setup页面设置 >,VvY
password口令 </+fMZ
code密码 f
print preview打印预览 ;MRNq]
zoom in放大 1
zoom out缩小 'F
pan漫游 g0<pg{
cruise漫游 6=^
full screen全屏 ^H}*
tool bar工具条 .!@gC
status bar状态条 f/
ruler标尺 5wLN=|
table表 lE02W
paragraph段落 >
symbol符号 J
style风格 1
execute执行 nfjox
graphics图形 ~=@r@i
image图像 GFb
Unix用于服务器的一种操作系统 NkC
Mac OS苹果公司开发的操作系统 Qxsv;k
OO(Object-Oriented)面向对象 *Dm_U
virus病毒 x
file文件 H|
open打开 8d
colse关闭 }f3
new新建 X:z 9
save保存 wkxUy
exit退出 ,r
clear清除 bOJE
default默认 V
LAN局域网 DyGj
WAN广域网 M
Client/Server客户机/服务器 T% LQE
ATM( Asynchronous y
Transfer Mode)异步传输模式 w#%vz
Windows NT微软公司的网络操作系统 Cf^1
Internet互联网 Dk
WWW(World Wide Web)万维网 Lt
protocol协议 Pu!
HTTP超文本传输协议 =$'Y
FTP文件传输协议 #[C5
Browser浏览器 Jra3LP
homepage主页 &xhV
Webpage网页 [
website网站 V{H]
URL在Internet的WWW服务程序上 +{0[UY
用于指定信息位置的表示方法 V@
Online在线 jsU8M
Email电子邮件 ;cK)<F
ICQ网上寻呼 8&
Firewall防火墙 XA
Gateway网关 wD4OSI
HTML超文本标识语言 Bm
hypertext超文本 `L
hyperlink超级链接 lk3.7
IP(Address)互联网协议(地址) :!
SearchEngine搜索引擎 }bW#=<
TCP/IP用于网络的一组通讯协议 Al
Telnet远程登录 OItR
IE(Internet Explorer)探索者(微软公司的网络浏览器) ,(no
Navigator引航者(网景公司的浏览器) :Po
multimedia多媒体 pGLJJ/
ISO国际标准化组织 <9G7
ANSI美国国家标准协会 H
able 能 KEE"_N
activefile 活动文件 cm
addwatch 添加监视点 <t
allfiles 所有文件 L
allrightsreserved 所有的权力保留 Z]k
altdirlst 切换目录格式 C
并能够解决更大范围内的磁盘问题 -Czp:.
andotherinformation 以及其它的信息 Y
archivefileattribute 归档文件属性 {
assignto 指定到 dYbYC|
autoanswer 自动应答 V
autodetect 自动检测 9,|^&l
autoindent 自动缩进 {SYh]/
autosave 自动存储 c]n}!
availableonvolume 该盘剩余空间 A{
badcommand 命令错 c-P=z
badcommandorfilename 命令或文件名错 +
batchparameters 批处理参数 C^!&a
binaryfile 二进制文件 idK
binaryfiles 二进制文件 no2
borlandinternational borland国际公司 -
bottommargin 页下空白 '37q
bydate 按日期 ('
byextension 按扩展名 "Jc\
byname 按名称 {
bytesfree 字节空闲 ]`@
callstack 调用栈 `|d>
casesensitive 区分大小写 ^
要求出现确认提示,在你想覆盖一个 4
centralpointsoftwareinc central point 软件股份公司 QLG
changedirectory 更换目录 $xZ
changedrive 改变驱动器 &:_F08
changename 更改名称 Z+9
characterset 字符集 (
checkingfor 正在检查 OE
检查磁盘并显示一个状态报告 [c,O$4
chgdrivepath 改变盘/路径 [{?
china 中国 hAn
chooseoneofthefollowing 从下列中选一项 #I^ceW
clearall 全部清除 kmHZ
clearallbreakpoints 清除所有断点 `.W
clearsanattribute 清除属性 -2&P
clearscommandhistory 清除命令历史 ~
clearscreen 清除屏幕 ;
closeall 关闭所有文件 =a9
codegeneration 代码生成 d|'N
colorpalette 彩色调色板 jqmU
commandline 命令行 :>"B
commandprompt 命令提示符 )h>z
compressedfile 压缩文件 Z5I1g
配置硬盘,以为 MS-DOS 所用 e6
conventionalmemory 常规内存 <4|ig
***ceptemptyones 拷贝目录和子目录,空的除外 2<
拷贝设置了归档属性的文件 F}?,Ei
把文件拷贝或搬移至另一地方 ]X
把一个软盘的内容拷贝到另一个软盘上 (
diskette 复制磁盘 u&6DR
C拷贝M移动 O比 F搜索R改名 D删除 V版本 E浏览A属性 W写字 P打印 L列表 P5
rightc 版权(c pe`pB%
创建DOS分区或逻辑DOS驱动器 fQN<>
createextendeddospartition 创建扩展DOS分区 $lo>
在扩展DOS分区中创建逻辑DOS驱动器 D
createprimarydospartition 创建DOS主分区 C+,dOl
createsadirectory 创建一个目录 )PB'
创建,改变或删除磁盘的卷标 a
currentfile 当前文件 ,Ny
currentfixeddiskdrive 当前硬盘驱动器 *{G_^3
currentsettings 当前设置 d
currenttime 当前时间 L^A9U
cursorposition 光标位置 f&x^N
defrag 整理碎片 &Q<
dele 删去 W
删除分区或逻辑DOS驱动器 h,#x
删除一个目录和所有的子目录及其中的所有文件 Q?bbAz
deltree 删除树 Z;
devicedriver 设备驱动程序 wkO'gF
dialogbox 对话栏 iq
directionkeys 方向键 %a3g.
directly 直接地 IHF
directorylistargument 目录显示变量 +P.9os
directoryof 目录清单 SapM(
directorystructure 目录结构 3,/p;
diskaccess 磁盘存取 YsT
disk 磁盘拷贝 Pu
磁盘服务功能: C拷贝 O比较 F搜索R改卷名V校验 浏览E编缉M图 L找文件 N格式化 LyqjZ*
diskspace 磁盘空间 vkfiE
displayfile 显示文件 EVP@4
displayoptions 显示选项 T
displaypartitioninformation 显示分区信息 t].H
显示指定目录和所有目录下的文件 x0d
显示指定属性的文件 )oJ
显示或改变文件属性 s8bo
displaysorsetsthedate 显示或设备日期 (MnW:
以单色而非彩色显示安装屏信息 $^rC3x
显示系统中已用和未用的内存数量 ]0__
显示磁盘上所有文件的完整路径和名称 )lI
显示或改变当前目录 ,Ff,aO
doctor 医生 :
doesn 不 <DK(
doesntchangetheattribute 不要改变属性 <n%PI
dosshell DOS 外壳 EF
doubleclick 双击 f
你想显示逻辑驱动器信息吗(y/n)? ?puxa#
driveletter 驱动器名 &
editmenu 编辑选单 Ce`
emsmemory ems内存 5
endoffile 文件尾 p,J'
endofline 行尾 1!9
enterchoice 输入选择 %Z]-
entiredisk 转换磁盘 |4z
environmentvariable 环境变量 'o1F s
esc esc b\g
everyfileandsubdirectory 所有的文件和子目录 NZ%$.
existingdestinationfile 已存在的目录文件时 20jCR<
expandedmemory 扩充内存 UE/L(
expandtabs 扩充标签 jO]5;k
explicitly 明确地 4hy
extendedmemory 扩展内存 W8G
fastest 最快的 ihbXqH
fatfilesystem fat 文件系统 :v+.
fdiskoptions fdisk选项 wKM4
fileattributes 文件属性 AC"G4?
fileformat 文件格式 n\UCV
filefunctions 文件功能 YRp
fileselection 文件选择 "B&i
fileselectionargument 文件选择变元 x\Y]Y
filesin 文件在 $4
filesinsubdir 子目录中文件 Q
fileslisted 列出文件 1fCM
filespec 文件说明 -_W*r
filespecification 文件标识 Fcwm
filesselected 选中文件 0{Y
findfile 文件查寻 W3U4
fixeddisk 硬盘 SCf
fixeddisksetupprogram 硬盘安装程序 W
fixeserrorsonthedisk 解决磁盘错误 ].B
floppydisk 软盘 /$/
formatdiskette 格式化磁盘 r ?
formatsadiskforusewithmsdos 格式化用于MS-DOS的磁盘 OfS&P4
formfeed 进纸 {^U
freememory 闲置内存 c2-v{o
fullscreen 全屏幕 wS
functionprocere 函数过程 Q
graphical 图解的 +ZL
graphicslibrary 图形库 sqCT
groupdirectoriesfirst 先显示目录组 <s
hangup 挂断 v
harddisk 硬盘 J&N6'^
hardwaredetection 硬件检测 $Jh'E{
hasbeen 已经 [&
helpfile 帮助文件 #V~l.
helpindex 帮助索引 2
helpinformation 帮助信息 r|9
helppath 帮助路径 W
helpscreen 帮助屏 B
helptext 帮助说明 <G4
helptopics 帮助主题 8b2:
helpwindow 帮助窗口 c@[2i
hiddenfile 隐含文件 5S
hiddenfileattribute 隐含文件属性 cmy-^
hiddenfiles 隐含文件 YQ2Z
howto 操作方式 gBl"
ignorecase 忽略大小写 ,iZo.,
在常规和上位内存 V
incorrectdos 不正确的DOS Af
incorrectdosversion DOS 版本不正确 m!l0M
indicatesabinaryfile 表示是一个二进制文件 4hGPst
indicatesanasciitextfile 表示是一个ascii文本文件 wr$G5
insertmode 插入方式 3@(cp
请用scandisk,不要用chkdsk B~
inuse 在使用 x
invaliddirectory 无效的目录 3
is 是 cpDB|
kbytes 千字节 .
keyboardtype 键盘类型 eY\%
labeldisk 标注磁盘 a1
laptop 膝上 !
largestexecutableprogram 最大可执行程序 L!G)uw
largestmemoryblockavailable 最大内存块可用 /|
lefthanded 左手习惯 `hWc
leftmargin 左边界 }c4_
linenumber 行号 ^8MTBl
linenumbers 行号 \ZfR
linespacing 行间距 '?
listbyfilesinsortedorder 按指定顺序显示文件 eah"Q
listfile 列表文件 6ms
listof 清单 X
locatefile 文件定位 Nt`
lookat 查看 RoW{c2
lookup 查找 :iHWer
macroname 宏名字 ,j2g[9
makedirectory 创建目录 :R
memoryinfo 内存信息 "}X_
memorymodel 内存模式 af
menubar 菜单条 @x
menucommand 菜单命令 s
menus 菜单 wH
messagewindow 信息窗口 A
microsoft 微软 j`3F
microsoftantivirus 微软反病毒软件 xv<nf
microsoftcorporation 微软公司 l}
mini 小的 m
modemsetup 调制解调器安装 >`P
molename 模块名 Ru?
monitormode 监控状态 @%!&p{
monochromemonitor 单色监视器 E:.T1a
moveto 移至 ,)~LG
multi 多 -E4
newdata 新建数据 XCGg
newer 更新的 +
newfile 新文件 [ptU
newname 新名称 aIx 3
newwindow 新建窗口 EQnZ
norton norton rPMw
nostack 栈未定义 y<{k3J
noteusedeltreecautiously 注意:小心使用deltree l
onlinehelp 联机求助 1L8>6@
optionally 可选择地 )ur&
or 或 |kP&vO
pageframe 页面 L^9j4Y
pagelength 页长 J
在显示每屏信息后暂停一下 p'
pctools pc工具 "SiP)
postscript 附言 hNA
prefixmeaningnot 前缀意即\"不 id@6J
prefixtoreverseorder 反向显示的前缀 =3
用前缀和放在短横线-后的开关(例如/-w)预置开关 ?Ga
pressakeytoresume 按一键继续 EbBQL
pressanykeyforfilefunctions 敲任意键执行文件功能 >6
pressentertokeepthesamedate 敲回车以保持相同的日期 )yUR
pressentertokeepthesametime 敲回车以保持相同的时间 @vH^bp
pressesctocontinue 敲esc继续 T|e}
pressesctoexit 敲<esc>键退出 ElD
pressesctoexitfdisk 敲esc退出fdisk 1
敲esc返回fdisk选项 "vb
previously 在以前 C
printall 全部打印 Wz
printdevice 打印设备 #p
printerport 打印机端口 QO(`I(
在指定的路径下处理所有目录下的文件 Y^
programfile 程序文件 r\S(F
programmingenvironment 程序设计环境 37fo z
在创建每个目标文件时提醒你 >by55J
在拷贝前提示你敲一下键 Pz
pulldown 下拉 i]|#h?
pulldownmenus 下拉式选单 vy
quickformat 快速格式化 DP{
quickview 快速查看 3"\>
&;云南国土资源职业学院-学院论坛 -- 说你想说的,写你想写的
readonlyfile 只读文件 k5BsN
readonlyfileattribute 只读文件属性 |nZ
readonlyfiles 只读文件 D8
readonlymode 只读方式 =
redial 重拨 A(n_`A
repeatlastfind 重复上次查找 "muN1
reportfile 报表文件 c
resize 调整大小 2\|
respectively 分别地 ]1YLL-
rightmargin 右边距 5
rootdirectory 根目录 co&
运行debug, 它是一个测试和编辑工具 (^E
runtimeerror 运行时出错 uS
saveall 全部保存 plN.
saveas 另存为@92G
㈢ 并行处理的并行算法的基本策略
在并行处理技术中所使用的算法主要遵循三种策略:
1.分而治之法:也就是把多个任务分解到多个处理器或多个计算机中,然后再按照一定的拓扑结构来进行求解。
2.重新排序法:分别采用静态或动态的指令词度方式。
3.显式/隐式并行性结合:显式指的是并行语言通过编译形成并行程序,隐式指的是串行语言通过编译形成并行程序,显式/隐式并行性结合的关键就在于并行编译,而并行编译涉及到语句、程序段、进程以及各级程序的并行性。
二、并行性描述定义
利用计算机语言进行并行性描述的时候主要有三种方案:
1.语言扩展方案:也就是利用各种语言的库函数来进行并行性功能的扩展。
2.编译制导法:也称为智能编译,它是隐式并行策略的体现,主要是由并行编译系统进行程序表示、控制流的分析、相关分析、优化分析和并行化划分,由相关分析得到方法库管理方案,由优化分析得到知识库管理方案,由并行化划分得到程序重构,从而形成并行程序。
3.新的语言结构法:这是显式并行策略的体现。也就是建立一种全新的并行语言的体系,而这种并行语言通过编译就能直接形成并行程序。
三、并行软件
并行软件可分成并行系统软件和并行应用软件两大类,并行系统软件主要指并行编译系统和并行操作系统,并行应用软件主要指各种软件工具和应用软件包。在软件中所牵涉到的程序的并行性主要是指程序的相关性和网络互连两方面。
1.程序的相关性:程序的相关性主要分为数据相关、控制相关和资源相关三类。
数据相关说明的是语句之间的有序关系,主要有流相关、反相关、输出相关、I/O相关和求知相关等,这种关系在程序运行前就可以通过分析程序确定下来。数据相关是一种偏序关系,程序中并不是每一对语句的成员都是相关联的。可以通过分析程序的数据相关,把程序中一些不存在相关性的指令并行地执行,以提高程序运行的速度。
控制相关指的是语句执行次序在运行前不能确定的情况。它一般是由转移指令引起的,只有在程序执行到一定的语句时才能判断出语句的相关性。控制相关常使正在开发的并行性中止,为了开发更多的并行性,必须用编译技术克服控制相关。
而资源相关则与系统进行的工作无关,而与并行事件利用整数部件、浮点部件、寄存器和存储区等共享资源时发生的冲突有关。软件的并行性主要是由程序的控制相关和数据相关性决定的。在并行性开发时往往把程序划分成许多的程序段——颗粒。颗粒的规模也称为粒度,它是衡量软件进程所含计算量的尺度,一般用细、中、粗来描述。划分的粒度越细,各子系统间的通信时延也越低,并行性就越高,但系统开销也越大。因此,我们在进行程序组合优化的时候应该选择适当的粒度,并且把通讯时延尽可能放在程序段中进行,还可以通过软硬件适配和编译优化的手段来提高程序的并行度。
2.网络互连:将计算机子系统互连在一起或构造多处理机或多计算机时可使用静态或动态拓扑结构的网络。静态网络由点一点直接相连而成,这种连接方式在程序执行过程中不会改变,常用来实现集中式系统的子系统之间或分布式系统的多个计算结点之间的固定连接。动态网络是用开关通道实现的,它可动态地改变结构,使之与用户程序中的通信要求匹配。动态网络包括总线、交叉开关和多级网络,常用于共享存储型多处理机中。在网络上的消息传递主要通过寻径来实现。常见的寻径方式有存储转发寻径和虫蚀寻径等。在存储转发网络中以长度固定的包作为信息流的基本单位,每个结点有一个包缓冲区,包从源结点经过一系列中间结点到达目的结点。存储转发网络的时延与源和目的之间的距离(段数)成正比。而在新型的计算机系统中采用虫蚀寻径,把包进一步分成一些固定长度的片,与结点相连的硬件寻径器中有片缓冲区。消息从源传送到目的结点要经过一系列寻径器。同一个包中所有的片以流水方式顺序传送,不同的包可交替地传送,但不同包的片不能交叉,以免被送到错误的目的地。虫蚀寻径的时延几乎与源和目的之间的距离无关。在寻径中产生的死锁问题可以由虚拟通道来解决。虚拟通道是两个结点间的逻辑链,它由源结点的片缓冲区、结点间的物理通道以及接收结点的片缓冲区组成。物理通道由所有的虚拟通道分时地共享。虚拟通道虽然可以避免死锁,但可能会使每个请求可用的有效通道频宽降低。因此,在确定虚拟通道数目时,需要对网络吞吐量和通信时延折衷考虑。
四、硬件技术在硬件技术方面主要从处理机、存储器和流水线三个方面来实现并行。
1.处理机:主要的处理机系列包括CISC、RISC、超标量、VL1W、超流水线、向量以及符号处理机。
传统的处理机属于复杂指令系统计算(CISC)结构。指令系统大,指令格式可变,通用寄存器个数较少,基本上使用合一的指令与数据高速缓存,时钟频率较低,CPI较高,大多数利用ROM 实现微码控制CPU,而当今的精简指令系统计算(RISC)处理机指令格式简单规范,面向寄存器堆,采用重叠寄存器窗口技术,具有多级Cache,多种流水线结构,强调编译优化技术,时钟频率快,CPI低,大多数用硬连线控制CPU。
CISC或RISC标量处理机都可以采用超标量或向量结构来改善性能。标量处理机在每个周期内只发射一条指令并要求周期只完成从流水线来的一条指令。而在超标量处理机中,使用了多指令流水线,每个周期要发射多条指令并产生多个结果。由于希望程序中有许多的指令级并行性,因此超标量处理机更要依靠优化编译器去开发并行性。
VL1W 结构是将水平微码和超标量处理这两种普遍采用的概念结合起来产生的。典型的超长指令字VL1W 机器指令字长度有数百位。在VLlW 处理机中,多个功能部件是并发工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同时执行的各种操作是用VL1W 指令来同步的,每条指令可指定多个操作。VL1W 指令译码比超标量指令容易,但在开发不同数量的并行性时总是需要不同的指令系统。VL1W 主要是开发标量操作之间的并行性,它的成功与否很大程度取决于代码压缩的效率,其结构和任何传统的通用处理机完全不兼容。即使同一结构的不同实现也不大可能做到彼此二进制兼容。VL1W 的主要优点在于它的硬件结构和指令系统简单,在科学应用领域可以发挥良好作用,但在一般应用场合可能并不很好用。
向量处理机对数组执行向量指令,每条指令都包含一串重复的操作。它是专门设计用来完成向量运算的协处理机,通常用于多流水线超级计算机中。向量处理机可以利用循环级展开所得的并行性,它可以附属于任何标量处理机。专用的向量流水线可以在循环控制中消除某些软件开销,它的效果与优化编译器将顺序代码向量化的性能很有关系。从理论上说,向量机可以具有和超标量处理机同样的性能,因此可以说向量机的并行性与超标量机相同。
符号处理机是为AI应用而研制的,已用于定理证明、模式识别、专家系统、知识工程、文本检索、科学以及机器智能等许多应用领域。在这些应用中,数据和知识表达式、原语操作、算法特性、存储器、I/0和通信以及专用的结构特性与数值计算是不一样的,符号处理机也称为逻辑程序设计语言处理机、表处理语言处理机或符号变换器。符号处理并不和数值数据打交道,它处理的是逻辑程序、符号表、对象、剧本、黑板、产生式系统、语义网络、框架以及人工神经网络等问题。这些操作需要专门的指令系统,通常不使用浮点操作。
2.存储器:存储设备按容量和存取时间从低到高可分为寄存器、高速缓存、主存储器、磁盘设备和磁带机五个层次。较低层存储设备与较高层的相比,存取速度较快、容量较小,每字节成本较高、带宽较宽、传输单位较小。
存放在存储器层次结构中的信息满足三个重要特性:包含性、一致性和局部性。所谓包含性,指的是一个信息字的复制品可以在比它高的所有层中找到,而如果在高层中丢失了一个信息,则在比它低的所有层中此信息也将丢失。CPU 和高速缓存之间的信息传送是按字进行的,高速缓存和主存储器间用块作为数据传送的基本单位,主存和磁盘之间又是以页面为基本单位来传送信息的,而在磁盘和磁带机之间的数据传送则是按文件级处理的。所谓一致性要求的是同一个信息项与后继存储器层次上的副本是一致的。也就是说,如果在高速缓存中的一个字被修改过,那么在所有更高层上该字的副本也必须立即或最后加以修改。为了尽量减少存储器层次结构的有效存取时间,通常把频繁使用的信息放在较低层次。维护存储器层次结构一致性一般有两种策略,一种是写直达策略,也就是如果,则立即在所有高层存储器中进行同样的修改;另一种是写回策略,也就是在较低层中对信息进行修改后并不立即在高层存储器中进行相应的修改,而是等到该信息将被替换或将从低层中消失时才在所有高层存储器中进行同样的修改。甚至可以将写直达和写回策略的优点结合起来,形成写一次协议来维护存储器的一致性。
存储器的层次结构是在一种程序行为——访问的局部性基础上开发出来的。主要有时间局部性、空间局部性和顺序局部性。时间局部性指的是最近的访问项很可能在不久的将来再次被访问。它往往会引起对最近使用区域的集中访问。空间局部性表示一种趋势,指的是一个进程访问的各项其地址彼此很近。顺序局部性指的是在典型程序中,除非是转移指令,一般指令都是顺序执行的。
在多处理机系统中一般使用共享存储器。对共享存储器的组织一般采用低位交叉、高位交叉、高低位交叉三种方法。低位交叉又称并发存取,它是把相邻的地址放在相邻的存储器模块中,在访问时不容易产生冲突,并行性较好,但可靠性容错能力和扩展性均较差。高位交叉又称允许同时存取,它是把相邻地址分配到同一个存储器模块中,可靠性、容错能力和扩展性均较强,但访问时易产生冲突,带宽较窄,并行性较差。高低位交叉存取又称C—s存取,它是结合了高位交叉和低位交叉两种方法的优点,既解决了冲突问题,又能有效地提高容错能力和并行性,最适合于向量处理机结构。
3.流水线:流水线技术主要有指令流水线技术和运算流水线技术两种。
指令流水线技术主要目的是要提高计算机的运行效率和吞吐率。它主要通过设置预取指令缓冲区、设置多功能部件、进行内部数据定向、采取适当的指令调度策略来实现。指令调度的策略主要有静态和动态两种,静态词度是基于软件的,主要由编译器完成,动态词度是基于硬件的,主要是通过硬件技术进行。
运算流水线主要有单功能流水线和多功能流水线两种。其中多功能流水线又可分为静态流水线和动态流水线。静态流水线技术只用来实现确定的功能,而动态流水线可以在不同时间重新组合,实现不同的功能,它除流线连接外,还允许前馈和反馈连接,因此也称为非线性流水线。这些前馈和反馈连接使得进入流水线的相继事件的词度变得很不简单。由于这些连接,流水线不一定从最后一段输出。根据不同的数据流动模式,人们可以用同一条流水线求得不同功能的值。
并行计算机发展简述
40 年代开始的现代计算机发展历程可以分为两个明显的发展时代:串行计算时代、并行计算时代。每一个计算时代都从体系结构发展开始,接着是系统软件(特别是编译器与操作系统)、应用软件,最后随着问题求解环境的发展而达到顶峰。创建和使用并行计算机的主要原因是因为并行计算机是解决单处理器速度瓶颈的最好方法之一。
并行计算机是由一组处理单元组成的,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。因此,并行计算机的两个最主要的组成部分是计算节点和节点间的通信与协作机制。并行计算机体系结构的发展也主要体现在计算节点性能的提高以及节点间通信技术的改进两方面。
60 年代初期,由于晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。这些技术发展的结果导致了并行计算机的出现,这一时期的并行计算机多是规模不大的共享存储多处理器系统,即所谓大型主机(Mainframe)。IBM360 是这一时期的典型代表。
到了60 年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了。与单纯提高时钟频率相比,这些并行特性在处理器内部的应用大大提高了并行计算机系统的性能。伊利诺依大学和Burroughs 公司此时开始实施IlliacIV 计划,研制一台64 个CPU 的SIMD 主机系统,它涉及到硬件技术、体系结构、I/O 设备、操作系统、程序设计语言直至应用程序在内的众多研究课题。不过,当一台规模大大缩小了的16CPU 系统终于在1975 年面世时,整个计算机界已经发生了巨大变化。
首先是存储系统概念的革新,提出虚拟存储和缓存的思想。IBM360/85 系统与360/91是属于同一系列的两个机型,360/91 的主频高于360/85,所选用的内存速度也较快,并且采用了动态调度的指令流水线;但是,360/85 的整体性能却高于360/91,唯一的原因就是前者采用了缓存技术,而后者则没有。
其次是半导体存储器开始代替磁芯存储器。最初,半导体存储器只是在某些机器被用作缓存,而CDC7600 则率先全面采用这种体积更小、速度更快、可以直接寻址的半导体存储器,磁芯存储器从此退出了历史舞台。与此同时,集成电路也出现了,并迅速应用到了计算机中。元器件技术的这两大革命性突破,使得IlliacIV 的设计者们在底层硬件以及并行体系结构方面提出的种种改进都大为逊色。
1976 年CRAY-1 问世以后,向量计算机从此牢牢地控制着整个高性能计算机市场15 年。CRAY-1 对所使用的逻辑电路进行了精心的设计,采用了我们如今称为RISC 的精简指令集,还引入了向量寄存器,以完成向量运算。这一系列全新技术手段的使用,使CRAY-1 的主频达到了80MHz。
微处理器随着机器的字长从4 位、8 位、16 位一直增加到32 位,其性能也随之显着提高。正是因为看到了微处理器的这种潜力,卡内基- 梅隆大学开始在当时流行的DECPDP11 小型计算机的基础上研制成功一台由16 个PDP11/40 处理机通过交叉开关与16 个共享存储器模块相连接而成的共享存储多处理器系统C.mmp。
从80 年代开始,微处理器技术一直在高速前进。稍后又出现了非常适合于SMP 方式的总线协议,而伯克利加州大学则对总线协议进行了扩展,提出了Cache 一致性问题的处理方案。从此,C.mmp 开创出的共享存储多处理器之路越走越宽;现在,这种体系结构已经基本上统治了服务器和桌面工作站市场。
同一时期,基于消息传递机制的并行计算机也开始不断涌现。80 年代中期,加州理工成功地将64 个i8086/i8087 处理器通过超立方体互连结构连结起来。此后,便先后出现了Intel iPSC 系列、INMOS Transputer 系列,Intel Paragon 以及IBM SP 的前身Vulcan 等基于消息传递机制的并行计算机。
80 年代末到90 年代初,共享存储器方式的大规模并行计算机又获得了新的发展。IBM将大量早期RISC 微处理器通过蝶形互连网络连结起来。人们开始考虑如何才能在实现共享存储器缓存一致的同时,使系统具有一定的可扩展性(Scalability)。90 年代初期,斯坦福大学提出了DASH 计划,它通过维护一个保存有每一缓存块位置信息的目录结构来实现分布式共享存储器的缓存一致性。后来,IEEE 在此基础上提出了缓存一致性协议的标准。
90 年代以来,主要的几种体系结构开始走向融合。属于数据并行类型的CM-5 除大量采用商品化的微处理器以外,也允许用户层的程序传递一些简单的消息;CRAY T3D是一台NUMA 结构的共享存储型并行计算机,但是它也提供了全局同步机制、消息队列机制,并采取了一些减少消息传递延迟的技术。
随着商品化微处理器、网络设备的发展,以及MPI/PVM 等并行编程标准的发布,机群架构的并行计算机出现。IBM SP2 系列机群系统就是其中的典型代表。在这些系统中,各个节点采用的都是标准的商品化计算机,它们之间通过高速网络连接起来。
今天,越来越多的并行计算机系统采用商品化的微处理器加上商品化的互连网络构造,这种分布存储的并行计算机系统称为机群。国内几乎所有的高性能计算机厂商都生产这种具有极高性能价格比的高性能计算机,并行计算机就进入了一个新的时代,并行计算的应用达到了前所未有的广度和深度。
并行计算机随着微处理芯片的发展,已经进入了一个新时代。目前并行计算机的性能已经突破20PFLOPS,正在向百亿亿次发展。我国并行计算机的研制已经走在世界前列。2003年由联想公司生产的深腾6800 在2003 年11 月世界TOP500 排名中位列第14 名,2004 年曙光公司生产的曙光4000A 在2004 年6 月的世界TOP500 排名中位列第10 名,这是我国公开发布的高性能计算机在世界TOP500 中首次进入前十名,这标志着我国在并行计算机系统的研制和生产中已经赶上了国际先进水平,为提高我国的科学研究水平奠定了物质基础。2013年国际超级计算机大会最新发布的世界超级计算机500强排名中,国防科技大学研制的天河二号超级计算机系统,以峰值计算速度每秒5.49亿亿次、持续计算速度每秒3.39亿亿次双精度浮点运算的优异性能位居榜首。
从TOP500 的前10 名来看,美国仍然是超级计算机的最大拥有者。按照世界TOP500 的统计数据来分析,美国在计算能力上占有近全世界的一半,在TOP500 中的所有计算机中拥有的数量超过50%。

㈣ 计算机编译就是指编码和译码两个过程吗
在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成"1"或"0",这样就可打开或关闭某个控制门,这就是直接控制法.
在6.3节中所讲的就是这种方法.但在某些复杂的计算机中,微命令甚至可多达三四百个,这使微指令字长达到难以接受的地步,并要求机器有大容量控制存储器,为了改进设计出现了以下各种编译法.
6.4.1 微指令的编译法(编码译码方法)(2)
2.字段直接编译法
在计算机中的各个控制门,在任一微周期内,不可能同时被打开,而且大部分是关闭的(相应的控制位为"0").所谓微周期,指的是一条微指令所需的执行时间.如果有若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的.
例如,向主存储器发出的读命令和写命令是互斥的;又如在ALU部件中,送往ALU两个输入端的数据来源往往不是唯一的,而每个输入端在任一微周期中只能输入一个数据,因此控制该输人门的微命令是互斥的.
选出互斥的微命令,并将这些微命令编成一组,成为微指令字的一个字段,用二进制编码来表示, 就是字段直接编译法.
6.4.1 微指令的编译法(编码译码方法)(3)
例如,将7个互斥的微命令编成一组,用三位二进制码分别表示每个微命令,那么在微指令中,该字段就从7位减成3位,缩短了微指令长度.而在微指令寄存器的输出端,为该字段增加一个译码器,该译码器的输出即为原来的微命令.
6.4.1 微指令的编译法(编码译码方法)(4)
字段长度与所能表示的微命令数的关系如下:
字段长度 微命令数
2位 2~3
3位 4~7
4位 8~15
一般每个字段要留出一个代码,表示本段不发出任何微命令,因此当字段长度为3位时,最多只能表示7个互斥的微命令,通常代码000表示不发微命令.
6.4.1 微指令的编译法(编码译码方法)(5)
3.字段间接编译法
字段间接编译法是在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法.
如果在字段直接编译法中,还规定一个字段的某些微命令,要兼由另一字段中的某些微命令来解释,称为字段间接编译法.
本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段.
6.4.1 微指令的编译法(编码译码方法)(6)
字段A(3位)的微命令还受字段B控制,当字段B发出b1微命令时,字段A发出a1,1,a1,2,…,a1,7中的一个微命令;而当字段B发出b2微命令时,字段A发出a2,1,a2,2,…,a2,7中的一个微命令,仅当A为000时例外,此时什么控制命令都不产生.
6.4.1 微指令的编译法(编码译码方法)(7)
4.常数源字段E
在微指令中,一般设有一个常数源字段E就如指令中的直接操作数一样.E字段一般仅有几位,用来给某些部件发送常数,故有时称为发射字段.
该常数有时作为操作数送入ALU运算;有时作为计算器初值,用来控制微程序的循环次数等.
6.4.2 微程序流的控制 (1)
当前正在执行的微指令,称为现行微指令,现行微指令所在的控制存储器单元的地址称现行微地址,现行微指令执行完毕后,下一条要执行的微指令称为后继微指令,后继微指令所在的控存单元地址称为后继微地址.
所谓微程序流的控制是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址.
与程序设计相似,在微程序设计中除了顺序执行微程序外还存在转移功能和微循环程和微子程序等,这将影响下址的形成.
下面介绍几种常见的产生后继微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式产生后继微地址.
在顺序执行微指令时,后继微地址由现行微地址加上一个增量(通常为1)形成的;而在非顺序执行时则要产生一个转移微地址.
机器加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取令操作,然后由指令操作码产生后继微地址.接下去,若顺序执行微指令,则将现行微地址主微程序计数器( PC中)+1产生后继微地址;若遇到转移类微指令,则由 PC与形成转移微地址的逻辑电路组合成后继微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量与下址字段结合产生后继微地址
将微指令的下址字段分成两部分:转移控制字段BCF和转移地址字段BAF,当微程序实现转移时,将BAF送 PC,否则顺序执行下一条微指令( PC+1).
执行微程序条件转移时,决定转移与否的硬件条件有好几种.例如,"运算结果为零","溢出","已完成指定的循环次数"等.
我们假设有八种转移情况,定义了八个微命令(BCF取3位),在图中设置计数器CT用来控制循环次数.如在执行乘(或除)法指令时,经常采用循环执行"加,移位"(或减,移位)的方法,指令开始执行时,在CT中置循环次数)每执行一次循环,计数器减1,当计数器为零时结束循环.又考虑到执行微子程序时,要保留返回微地址,因此图中设置了一个返回寄存器RR.
㈤ 解释下龙芯
关于CPU和芯片,我们标准的操作系统,大约有350个C函数,这种操作系统叫标准的操作系统,IEEE
POSIX这就是标准操作系统的规范,但是事实上,美国很多军方的CPU和工控,飞机制造和武器工业控制领域很多芯片是不支持这个标准的,比如军队的OpenRISC派系的芯片,只能支持大约100~150个标准C函数,当然了,剩下的200多个函数可以使用这个100多个函数来用软件来实现,但是,这些用软件实现的库和函数,运行速度相当的慢。
实际上mips就是当年早期OpenRISC商业化的产物,但是Mips走的更远,主要解决大规模并行的浮点数运算问题。mips是支持linux操作系统的,但是这个CPU只能顺利的运行大约150个标准的操作系统的C函数。
现在C++标准库STL一共又20个大类,超过了1000个函数或者模板实现,而boost库(STL的升级版)有超过2000个复杂函数或者模板实现,这些函数如果在intel或者AMD的芯片上执行得到的结果,跟在arm上执行得到的结果很多都是不同的,尤其是执行效率问题,很多在arm上慢的要死,比java还要慢(现在安卓机主要使用java开发应用软件,编译器是使用J2SDK修改的编译器)。苹果公司在这方面有比较深入的研究。这个不细谈。
如果这个C++函数在mips芯片上执行,这里面有一多半是根本无法执行的,也就是说,会崩溃和异常退出。并且,J2SDK也是无法在mips上顺利的执行的,相当的垃圾的一个芯片。
这就是为啥在美国9年代末期,mips被市场淘汰的根本原因。
