① 医院计算机五大应用系统
一般来说分以下几大类应用系统:
系统管理平台(SMS)
临床资讯系统(CIS)
病人管理系统(PAS)
临床工作站系统(CWS)
管理资讯系统(MIS)
决策支援系统(DSS)
知识管理系统(KMS)
公共应用服务(CAS)
协作互动支援服务(TES)
也有医院按各应用系统模组分法,常见的有:
HIS (Hospital Information System) 医院资讯系统
CIS (Clinical Information System) 临床资讯系统
LIS (Laboratory Information System)实验室(检验科)资讯系统
PACS (Picture Archiving and Communication Systems) 影像归档和通讯系统
RIS (Radiology Information System) 放射科资讯管理系统
EMR (Electronic Medical Record) 电子病历
OA (Office Automation) 办公自动化
CRM (Customer Relationship Management)客户关系管理
PEIS (Physical Examination Information System) 体检资讯系统
ORIS (Operation Room Information System) 手术室资讯系统
CCIS (Critical Care Information System) 重症监护资讯系统
WMIS (Wireless Medical Information System) 无线医疗资讯系统
强大的功能极大地推动了因特网的发展和普及,它可以使一个从没有用过计算机的人,几分钟内就可以学会浏览网上丰富多彩的多媒体资讯。您只需要用滑鼠点选一下相关题目和照片就可以从一个网站进入另一个网站,从一个国家进入另一个国家,坐在家中就可轻松漫游全球。
电子邮件(E-MAIL):是计算机与通讯相结合的产物,主要用于计算机使用者之间交换电子信件。发信者在计算机上输入发信档案内容,存入发信方信箱中,借助通讯网路将放在发信方信箱中的信件传送到收信方信箱中橘卖,当收信人开启自己的计算机,借助通讯网路便可开启收方信箱,阅读发方传来的信件。在网际网路众多的应用中,电子邮件无疑是其中最受欢迎的一个。 无论您住在天涯,还是住在海角,通过可爱的"伊妹儿",我们便可以方便地通讯联络。噢!远在大洋彼岸的哥哥生日到了,赶快给他"E-MAIL"一张贺卡,再附上一段家人的嘱咐和期望,短短几分钟便飞到了他的手里。回过头来,再算算经济帐,花了不到几毛钱,以后跟哥哥联络再不用为钱发愁! 在拥有了一个电子信箱之后,您还可以使用网路的"新闻订阅"服务。我们将最新的国内、国际新闻,公众服务资讯,娱乐资讯,计算机网路业界资讯,财政证券资讯,热门话题等丰富的内容进行分类收集、整理、加工,按照您指定的订阅需求,定时传送到您的信箱里。拥有了电子信箱,您就拥有了一个称职的秘书,保证让您紧跟时代的潮流!
档案传输(FTP):网上的很多应用软体、游戏、歌曲等档案都是共享并可以免费下载的,您只需登入相关网站,使用FTP协议就可下载所需的档案。
USENET新闻:USENET是一个世界范围的电子公告板,用于释出公告、新闻和各种文章供大家使用。USENET的每个论坛又称为新闻组,如同报纸一样,每篇来稿被看成一篇文章,每个人都可以阅读,每个读过文章的人都可以根据自己的观点发表评论。
远端登入(TELNET):通过使用TELNET,INTERNET上的使用者可以将自己的计算机模拟成一台远端计算机的终端,然后在它上面执行程搜伍扰式,或者使用它的软体和硬体资源。
一、系统软体
1.作业系统
2.程式语言设计
3.语言处理程式
4.资料库管理程式
5.系统辅助处理程式
二、应用软体
1、文书处理软体
2、资讯管理软体
3、辅助设计软体
4、实时控制软体
我现在大概就知道这么多,希望对你有帮助!
一般由计算机硬体系统、系统软体、应用软体组成。计算机基本硬体系统由运算器和控制器、储存器、外围介面和外围装置组成。系统软体包括作业系统、编译程式、资料库管理系统、各种高阶语言等。应用软体由通用支援软体和各种应用软体包组成。
五大系统?硬体系统吧?
计算机硬体系统由运算器、控制器、储存器、输入装置,输出装置组成
解:MOV A,R1
MOV R0,A
(2)外部RAM 20H单元内容送R0。
解:MOV R0,#20H
MOVX A,@R0
MOV R0,A
(3)外部RAM 20H单元内容送内部RAM 20H单元。
解:MOV R0,#20H
MOVX A,@R0
MOV @R0,A
(4)外部RAM 1000H单元内容送内部RAM 20H单元。
解:MOV DPTR,#1000H
MOVX A,@DPTR
MOV 20H,A
(5)外部ROM 2000H单元内容送R0。
解:MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV R0,A
(6)外部RAM 2000H单元内容送内部RAM 20H单元。
解:MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV 20,A
(7)外部RAM 2000H单元内容送外部RAM 20H单元。
解:MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV R0, #20H
MOV @R0,A
2-2 已知A=7AH,R0=30H,(30H)=A5H,PSW=81H。问执行以下各指令的结果(每条指令都以题中规定的资料参加操作)。
(1)XCH A,R0 A=30H,R0=7AH, P=0
(2)XCH A,30H A=A5H, (30H)=7AH, P=0
(3)XCH A,@R0 A=A5H, (30H)=7AH, P=0
(4)XCHD A,@R0 A=75H, (30H)=AAH, P=1
(5)SWAPA A=A7H P=1
(6)ADD A,R0 A=AAH Cy=0 OV=1 P=0
(7)ADD A,30H A=1FH Cy=1 OV=0 P=1
(8)ADD A,#30H A=AAH Cy=0 OV=1 P=0
(9)ADDC A,30H A=20H Cy=1 OV=1 P=1
(10)SUBB A,30H A=D4H Cy=1 OV=1 P=0
(11)SUBB A,#30H A=49H Cy=0 OV=0 P=1
(12)DA A A=80H Cy=1 P=1
(13)RL A A=F4H Cy=1 P=1
(14)RLC A A=F5H Cy=0 P=0
(15)CJNE A,#30H,00 A=7AH Cy=0 P=1
(16)CJNE A,#30H,00 A=7AH Cy=1 P=1
2-3 设内部RAM的30H单元内容为40H,即(30H)=40H,还知(40H)=10H,(10H)=00H,埠P1=CAH,问执行以下指令后各有关存贮器单元、暂存器及埠的内容(即R0,R1,A,B,P1,40H,30H及10H单元)。
MOV R0,#30H
MOV A,@R0
MOV R1,A
MOV B,@R1
MOV @R1,P1
MOV P2,P1
MOV 10H,#30H
MOV 30H,10H
解:每条指令执行后的结果依次如下列所示:R0=30H,A=40H,R1=40H,B=10H,(40H)=CAH,P2=CAH,(10H)=20H,(30H)=20H。
由此可知执行后的各单元内容:R0=30H,R1=40H,A=40H, B=10H, P1=CAH, (40H)=CAH,(30H)=20H,(10H)=20H。
2-4 设R0=17H,A=83H,(17H)=34H,问执行以下指令后,A=?
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A
解:此题是为了熟悉逻辑运算指令。各条指令的执行结果如下:
A←83H∧17H=10000011∧00010111=03H
(17H) ←34H∨03H=00110100∨00000011=37H
A←03H⊕37H=00000011⊕00110111=34H
A←A=00110100=CBH
所以程式执行后,A=CBH
2-5 试编写程式,将内部RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH和2DH单元。
解:此题可以直接用传送指令来完成:
MOV 2FH,20H
MOV 2EH,21H
MOV 2DH,22H
当然也可以用回圈程式来做:
MOV R0,#20H ;源资料区首地址
MOV R1,#2FH ;目的资料区首地址
MOV R3,#03H ;资料块长度
LOOP: MOV A,@R0
MOV @R1,A
INC R0
DEC R1
DJNZ R2,LOOP
SJMP $
2-6 编写程式,进行两个16位数的减法:6F5DH-13B4H。结果存至内部RAM的30H和31H单元,30H存差的低8位。
解:程式如下:
MOV A,#5DH
CLR C
SUBB A,#0B4H
MOV 30H,A
MOV A,#6FH
SUBB A,#13H
MOV 31H,A
SJMP $
由于MCS=51指令系统中,减法指令只能完成带借位减法,所以在开始做减法时,一般都要对进位位Cy清0。
2-7 编写程式,若累加器A的内容分别满足以下条件时,则程式转至LABEL存贮单元。设A中存的是无符号数。
1、A 10
解:此题可直接用比较条件转移指令来完成,有关的程式语句如下:
CJNE A,#0AH,00H
JNG LABEL
比较条件转移指令根据A-0AH的结果来位置Cy的值,只要A 10,减法就不需要借位,即Cy=0。再用一条“JNC”指令就可以决定是否要转移至LABEL。偏移量00H表示比较后无论结果如何都先执行下一条语句。
2、A>10
解:这时如果仍然与0AH比较,则无法区分A >10(要转移)和A=10(不转移)。当然也可以增加其它的指令(如累加器判断零条件转移语句等)来完成所需的功能,但会使语句增多,程式不够简洁。不如直接与0BH(十进位制数11)比较,比较之后A 11都使Cy=0,相当于A>10才使Cy=0。仍用两条语句就能完成所需功能
CJNE A,#0BH,00H
JNG LABEL
3、A 10
解:这种情况与题(2)相似,可直接与11作比较,但这时是Cy=1时才转移。
CJNE A,#0BH,00H
JC LABEL
4、A<10
解:这时只需直接和10作比较即可,与题(1)类似:
CJNE A,#0AH,00H
JC LABEL
2-8 已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行RET指令后,SP=?PC=?
解:MCS-51系统中,堆叠是向上生长的,故出栈操作时堆叠指标要减小。执行RET指令的过程如下:
PC15-8 (SP) 即PC15-8=(25H)=34H
SP SP-1 即SP=24H
PC7-0 (SP) 即PC7-0=(24H)=12H
SP SP-1 即SP=23H
结果为:SP=23H,PC=3412H
2-9 若SP=25H,PC=2345H,标号LABEL所在的地址为3456H,问执行长呼叫指令LCALL LABEL后,堆叠指标和堆叠的内容发生什么变化?PC的值等于什么?
解:长呼叫指令完成两个功能:把下一条指令地址堆入堆叠,并把所呼叫子程式的入口地址赋予程式计数器PC。过程如下:
PC PC+3 所以PC=2345H+3=2348H
SP SP+1 所以SP=26H
(SP) PC7-0 所以(26H)=48H
SP SP+1 所以SP=27H
(SP) PC15-8 所以(27H)=23H
PC LABEL 所以PC=3456H
结果应为:SP=27H,(26H)=48H,(27H)=23H,PC=3456H。
2-10 上题的LCALL指令能否直接换成ACALL指令,为什么?如果使用ACALL指令,则可呼叫的地址范围是什么?
解:ACALL指令只能在2K位元组范围内呼叫。具体来讲,要求PC+2后,PC的高5位与呼叫地址LABEL的高5位相同。或者说执行ACALL以后的PC值和呼叫地址应在同一页内(每页地址范围为2K位元组)。在本题中:
PC+2=2345+2=2347H,高5位00100
而 LABEL=3456H, 高5位00110
两者不相等,不在同一页内,所以不能直接换成ACALL指令
如果使用ACALL指令,则可呼叫地址最小值为2000H,最大值为27FFH。即高5位地址保持00100不变,低11位地址可以从全0变为全1。地址范围为2K位元组。
2-11 试编写程式,查询在内部RAM的20H-50H单元中是否有0AAH这一资料。若有,则将51H单元置为01H;若未找到;则使51H单元置为0。
解:这个题可以有两种基本的解法。其一是先计算出资料块的长度,然后再作回圈和比较,程式如下:
CLR C
MOV R0,#20H ;R0中为资料块首地址
MOV A,#50H ;资料块末地址
SUBB A,R0
INC A
MOV R1,A ;R1存资料块长度
LOOP1:CJNE @R0,#0AAH,LOOP2
MOV 51H,#01H ;找到置(51H)=01H
SJMP LOOP3
LOOP2: ING R0
DJNZ R1,LOOP1
MOV 51H,#00H ;未找到,置(51H)=01H
LOOP3: SJMP $
第二种解法则直接用比较条件转移指令判断是否已经完成最后一次比较。这时MCS-51指令系统的特点之一。程式如下:
MOV R0,#20H ;R0存资料块首地址
LOOP1: CJNE @R0,#0AAH,LOOP2 ;比较
MOV 51H,#01H ;找到,置(51H)=01H
SJMP LOOP3
LOOP2: ING R0
DJNZ R0,#51H,LOOP1 ;未比较完则回圈
MOV 51H,#00H ;未找到,置(51H)=01H
LOOP3: SJMP $
2-12 试编写程式,查询在内部RAM的20H-50H单元中出现00H的次数,并将查询的结果存入51H单元。
解:此题的解法与上题相似,采用第二种解法,程式如下:
MOV R0,#1FH
MOV R1,#00H ;R1用作计数器
LOOP1: ING R0
CJNE @R0,#00H,LOOP2
INC R1 ;找到一个00H,计数器加1
LOOP2: CJNE @R0,#50H,LOOP1 ;未比较完则回圈
MOV 51H,R1 ;存比较结果
SJMP $
2-13 试编写程式,求20H单元和21H单元中两个补码数差的绝对值,即 。结果保留在A中。若计算结果出现溢位,则置22H单元为0FFH,否则,22H应为00H。
解:可直接用减法指令来完成减法,然后依据差的符号来求绝对值,若差为正数,则差就是所求绝对值。若差为负数,则求反加一之后就可得到绝对值。当然减法之后先要判断是否溢位。若溢位,则只需置溢位标记:使(22H)=0FFH即可。程式如下:
CLR C
MOV 22H,#0FFH
MOV A,20H
SUBB A,21H
JB OV,NEXT
JNB ACC.7,NEXT1 ;差为正则转移
CPL A ;差为负,求补为绝对值
ING A
NEXT1:MOV 22H.,#00H
NEXT: SJMP $
2-14 试编写程式,求20H,21H,22H单元的三个补码数差得绝对值,即 。结果保留在A中。若运算出现溢位,则置23H单元为0FFH;否则,置23H单元为00H。
解:此题的解法与上题相似。只是每次减法以后都要判断是否出现溢位,而不是做完两次减法以后才判断溢位。因为有可能第一次减法以后已经溢位,再作一次减法以后反倒没有溢位,而这时的结果实际上已经不正确了。例如,64-(-64)-(-1)=129。结果已经溢位,但分两步运算时,先由
64-(-64)=01000000-11000000=10000000
这时已经出现溢位,OV=1。若再作第二次减法,则结果为:
10000000-11111111=10000001
溢位标志反而被清零(因为负数减负数不可能溢位),但实际的结果并不正确。所以,需要每作完一次减法运算就检查溢位标志。程式如下:
CLR C
MOV 23H,#0FFH ;先置溢位标志
MOV A,20H
SUBB A,21H ;第一次相减
JB OV,NEXT ;溢位则结束
CLR C ;准备第二次相减
SUBB A,22H ;第二次相减
JB OV,NEXT ;溢位则结束
JNB ACC.7,NEXT1 ;差为正则转移
CPL A ;求反加一
ING A
NEXT1:MOV 23H.,#00H
NEXT: SJMP $
2-15 有一个16位二进位制数,高8位存于21H单元,低8位存于20H单元。试问:(1)执行以下程式段,完成什么逻辑功能?(2)能否用MOV指令替代其中的XCH指令而不改变程式的逻辑功能?写出相应的程式段。(3)这两个程式段的执行结果是否完全相同?差别在那里?
CLR C
XCH A,21H
RRC A
XCH A,21H
XCH A,20H
RRC A
XCH A,20H
解:(1)程式完成的逻辑功能是使21H和20H中的16位二进位制数右移一位,并使最高位为0,一般称为逻辑右移一位。
(2)可以用MOV指令,修改后程式段如下:
CLR C
MOV A,21H
RRC A
MOV 21H,A
MOV A,20H
RRC A
MOV 20H,A
(3)有所差别。虽然从16位右移功能来说两者的功能是相同的,但第一个程式段执行后,累加器A的内容仍维持原值,而第二个程式段执行后将改变A中的数值。
2-16 分析以下程式段的逻辑功能。若要用MOV指令代替其中的交换指令而不改变程式的逻辑功能,应如何进行修改?设20H中存放的是两个四位二进位制数。
MOV R1,#20H
XCHD A,@R1
ADD A,#01H
XCHD A,@R1
XCH A,@R1
ADD A,#01H
XCH A,@R1
解:程式的功能是将20H单元中的两个四位二进位制数分别加1,并且舍弃可能产生的进位。如(20H)=6AH,程式执行后位(20H)=7BH。又如(20H)=9FH,执行后(20H)=A0H。
不采用交换指令而要完成同样的功能,可以有多种修改方法。以下仅为一例:
MOV R1,#20H
XCHD A,@R1
ADD A,#01H ;低4位加1
JB AC,NEXT ;判断低四位有无进位
ADD A,#01H ;高4位加1
NEXT: MOV @R1,A ;送回20H单元
2-17 分析以下程式段的执行结果。若是将其中的DA A指令取消,则结果会有什么不同?
CLR C
MOV 20H,#99H
MOV A,20H
ADD A,#01H
DA A
MOV 20H,A
解:程式执行结果是A=00H,Cy=1,(20H)=00H。
取消DAA指令后,执行结果为A=9AH,Cy=0,(20H)=9AH。
2-18 以下的两个程式段中,R2内所存入的都是两位16进位制数。试问这两个程式段各进行多少次回圈?
MOV R2,#60H
LOOP:……
……
DJNZ R2,LOOP
SJMP $
MOV R2,#60H
LOOP:……
就是计算机系统(软硬体)的安全性(防入侵,抗干扰,资料保护等)
我是做嵌入式开发的,现在的嵌入式,绝大部分都是用linux平台开发,所以你首先要学好linux,给你推荐几本书吧,这几本是我初学的时候看的,很不错。
关于linux程式设计的书:《Linux程式设计(原书第2版)》,《[Linux英文原版图书系列].WILEY-Beginning_Linux_Programming_Third_Edition》,《LINUX程式设计白皮书》。
linux核心的:《自己动手写作业系统》,《Linux核心与程式设计》。
谷歌好像有这方面的东西,可以去找找。
计算机主要应用的领域包括以下六个方面:
一、资讯管理
资讯管理是以资料库管理系统为基础,辅助管理者提高决策水平,改善运营策略的计算机技术。资讯处理具体包括资料的采集、储存、加工、分类、排序、检索和释出等一系列工作。资讯处理已成为当代计算机的主要任务。是现代化管理的基础。据统计,80%以上的计算机主要应用于资讯管理,成为计算机应用的主导方向。资讯管理已广泛应用与办公自动化、企事业计算机辅助管理与决策、情报检索、图书馆里、电影电视动画设计、会计电算化等各行各业。
计算机的应用已渗透到社会的各个领域,正在日益改变着传统的工作、学习和生活的方式,推动着社会的科学计算
科学计算是计算机最早的应用领域,是指利用计算机来完成科学研究和工程技术中提出的数值计算问题。在现代科学技术工作中,科学计算的任务是大量的和复杂的。利用计算机的运算速度高、储存容量大和连续运算的能力,可以解决人工无法完成的各种科学计算问题。例如,工程设计、地震预测、气象预报、火箭发射等都需要由计算机承担庞大而复杂的计算量。
二、过程控制
过程控制是利用计算机实时采集资料、分析资料,按最优值迅速地对控制物件进行自动调节或自动控制。采用计算机进行过程控制,不仅可以大大提高控制的自动化水平,而且可以提高控制的时效性和准确性,从而改善劳动条件、提高产量及合格率。因此,计算机过程控制已在机械、冶金、石油、化工、电力等部门得到广泛的应用。
三、辅助技术
计算机辅助技术包括CAD、CAM和CAI。
1、计算机辅助设计(ComputerAidedDesign,简称CAD)
计算机辅助设计是利用计算机系统辅助设计人员进行工程或产品设计,以实现最佳设计效果的一种技术。CAD技术已应用于飞机设计、船舶设计、建筑设计、机械设计、大规模积体电路设计等。采用计算机辅助设计,可缩短设计时间,提高工作效率,节省人力、物力和财力,更重要的是提高了设计质量。
2、计算机辅助制造(ComputerAidedManufacturing,CAM)
计算机辅助制造是利用计算机系统进行产品的加工控制过程,输入的资讯是零件的工艺路线和工程内容,输出的资讯是刀具的运动轨迹。将CAD和CAM技术整合,可以实现设计产品生产的自动化,这种技术被成为计算机整合制造系统。有些国家已把CAD和计算机辅助制造(ComputerAidedManufacturing)、计算机辅助测试(ComputerAidedTest)及计算机辅助工程(ComputerAidedEngineering)组成一个整合系统,使设计、制造、测试和管理有机地组成为一体,形成高度的自动化系统,因此产生了自动化生产线和“无人工厂”。
3、计算机辅助教学(ComputerAidedInstruction,简称CAI)
计算机辅助教学是利用计算机系统进行课堂教学。教学课件可以用PowerPoint或Flash等制作。CAI不仅能减轻教师的负担,还能教学内容生动、形象逼真,能够动态演示实验原理或操作过程激发学生的学习兴趣,提高教学质量,为培养现代化高质量人才提供了有效方法。
四、翻译
1947年,美国数学家、工程师沃伦·韦弗与英国物理学家、工程师安德鲁·布思提出了以计算机进行翻译(简称“机译”)的设想,机译从此步入历史舞台,并走过了一条曲折而漫长的发展道路。机译被列为21世纪世界十大科技难题。与此同时,机译技术也拥有巨大的应用需求。
机译消除了不同文字和语言间的隔阂,堪称高科技造福人类之举。但机译的译文质量长期以来一直是个问题,离理想目标仍相差甚远。中国数学家、语言学家周海中教授认为,在人类尚未明了大脑是如何进行语言的模糊识别和逻辑判断的情况下,机译要想达到“信、达、雅”的程度是不可能的。这一观点恐怕道出了制约译文质量的瓶颈所在。
五、多媒体应用
随着电子技术特别是通讯和计算机技术的发展,人们已经有能力把文字、音讯、视讯、动画、图形和影象等各种媒体综合起来,构成一种全新的概念—“多媒体”(Multimedia)。在医疗、教育、商业、银行、保险、行政管理、军事、工业、广播、交流和出版等领域中,多媒体的应用发展很快。
六、计算机网路
计算机网路是由一些独立的和具备资讯交换能力的计算机互联构成,以实现资源共享的系统。计算机在网路方面的应用使人类之间的交流跨越了时间和空间障碍。计算机网路已成为人类建立资讯社会的物质基础,它给我们的工作带来极大的方便和快捷,如在全国范围内的银行信用卡的使用,火车和飞机票系统的使用等。可以在全球最大的网际网路络——Inter上进行浏览、检索资讯、收发电子邮件、阅读书报、玩网路游戏、选购商品、参与众多问题的讨论、实现远端医疗服务等。
② ARM架构简介及详细资料
一颗主要用于路由器的Conexant ARM处理器是Acorn电脑公司(Acorn Computers Ltd)于1983年开始的开发计画。
这个团队由Roger Wilson和Steve Furber带领,着手开发一种新架构,类似进阶的MOS Technology 6502处理器。Acorn有一大堆建构在6502架构上的电脑,因此能设计出一颗类似的晶片即意味着对公司有很大的优势。
团队在1985年时开发出ARM1 Sample版,而首颗"真正"的产能型ARM2于次年量产。ARM2具有32位的数据汇流排、26位的定址空间,并提供64 Mbyte的定址范围与16个32-bit的暂存器。这些暂存器其中有一颗做为(word大小)程式计数器,其前面6 bits和后面2 bits用来保存处理器状态标记(Processor Status Flags)。ARM2可能是全世界最简单实用的32位微处理器,其仅容纳了30,000个电晶体(相较于Motorola六年后的68000其包含了70,000颗)。之所以精简的原因在于它不含微码(请参阅microcode)(这表示大概只有68000的1/3至1/4),而与现今大多数的 CPU 不同,它没有包含任何的高速快取。这个精简的特色使它只需消耗很少的电能,却能发挥比 Intel 80286 更好的效能。后继的处理器ARM3更备有4KB的高速快取,使它能发挥更佳的效能。
在1980年代晚期,苹果电脑开始与Acorn合作开发新版的ARM核心,由于这专案非常重要,Acorn甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdings plc于1998年的伦敦交易市场和NASDAQ挂牌上市[1],使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。
这个专案到后来进入了ARM6,首版的式样在1991年释出,然后苹果电脑使用ARM6架构的ARM 610来当作他们Apple Newton PDA的基础。在1994年,Acorn使用ARM 610做为他们Risc PC电脑内的CPU。
在这些变革之后,核心部份却大多维持一样的大小。ARM2有30,000颗电晶体,但ARM6却也只增长到35,000颗。主要概念是以ODM的方式,使ARM核心能搭配一些选配的零件而制成一颗完整的CPU,而且可在现有的晶圆厂里制作并以低成本的方式达到很大的效能。
ARM的经营模式在于出售其智慧财产权核(IP core),授权厂家依照设计制作出建构于此核的微控制器和中央处理器。最成功的实作案例属 ARM7TDMI,几乎卖出了数亿套内建微控制器的装置。
DEC 购买这个架构的产权(此处会造成混淆在于其本身也制造 DEC Alpha 并研发出StrongARM。在 233 MHz 的频率下,这颗 CPU 只消耗一瓦特的电能(后来的晶片消耗得更少)。这项设计后来为了和 Intel 的控诉和解而技术移转,Intel 因而趁机以 StrongARM 架构补强他们老旧的 i960 产线。Intel 后来开发出他们自有的高效能实作,称作XScale,之后也卖给了 Marvell。
支援智慧型型手机、PDA和其他手持装置最常见的架构是ARMv4。XScale 和 ARM926 处理器是ARMv5TE,而且比起建构在 ARMv4 的 StrongARM、ARM925T 和 ARM7TDMI 等处理器还更常见于许多高阶装置上。架构版本如下栏所示。
设计档案
讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在Acorn微电脑的8位6502处理器。
ARM架构包含了下述RISC特性:
读取/储存 架构
不支援地址不对齐记忆体存取(ARMv6核心现已支持)
正交指令集(任意存取指令可以任意的定址方式存取数据Orthogonal instruction set)
大量的16 × 32-bit 暂存器阵列(register file)
固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。
大多均为一个CPU周期执行。
为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:
大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。
算数指令只会在要求时更改条件编码(condition code)
32-bit筒型位移器(barrel shifter)可用来执行大部分的算数指令和定址计算而不会损失效能
强大的索引定址模式(addressing mode)
精简但快速的双优先权中断子系统,具有可切换的暂存器组
有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的执行是否为有条件式的
这大大的减低了在记忆体存取指令时用到的编码位,换句话说,它避免在对小型叙述如if做分支指令。有个标准的范例引用欧几里得的最大公因子算法:
在C程式语言中,循环为:
int gcd (int i, int j)
{
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
在ARM 汇编语言中,循环为:
loop CMP Ri, Rj ; 设定条件为 "NE"(不等于) if (i != j)
; "GT"(大于) if (i > j),
; or "LT"(小于) if (i < j)
SUBGT Ri, Ri, Rj ; 若 "GT"(大于), i = i-j;
SUBLT Rj, Rj, Ri ; 若 "LT"(小于), j = j-i;
BNE loop ; 若 "NE"(不等于),则继续回圈
这避开了then和else子句之间的分支。
另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"资料处理"型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述
a += (j << 2);
在ARM之下,可简化成只需一个word和一个cycle即可完成的指令
ADD Ra, Ra, Rj, LSL #2
这结果可让一般的ARM程式变得更加紧密,而不需经常使用记忆体存取,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的CPU设计相比它仍能执行得不错。
ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如PC-相对定址(的确在ARM上PC为16个暂存器的其中一个)以及 前递加或后递加的定址模式。
另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的指令集。某些早期的 ARM 处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两 Bytes 的数量,因此,严格来讲,对这些处理器产生程式码时,就不可能处理如 C 语言物件中使用 "volatile short" 的资料型态。
ARM7 和大多数较早的设计具备三阶段的流水线化(Pipeline):提取指令、解码,并执行。较高效能的设计,如 ARM9,则有五阶段的流水线化。提高效能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。
这个架构使用"协处理器"提供一种非侵入式的方法来延伸指令集,可透过软体下 MCR、MRC、MRRC和MCRR 等指令来对协处理器定址。协处理器空间逻辑上通常分成16个协处理器,编号分别从 0 至 15 ,而第15号协处理器(CP15)是保留用作某些常用的控制功能,像是使用高速快取和记忆管理单元运算(若包含于处理器时)。
在 ARM 架构的机器中,周边装置连线处理器的方式,通常透过将装置的实体暂存器对应到 ARM 的记忆体空间、协处理器空间,或是连线到另外依序接上处理器的装置(如汇流排)。协处理器的存取延迟较低,所以有些周边装置(例如 XScale 中断控制器)会设计成可透过不同方式存取(透过记忆体和协处理器)。
较新的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位的情形有关。在Thumb模式下,较小的opcode有更少的功能性。例如,只有分支可以是条件式的,且许多opcode无法存取所有CPU的暂存器。然而,较短的opcode提供整体更佳的编码密度(注:意指程式码在记忆体中占的空间),即使有些运算需要更多的指令。特别在记忆体埠或汇流排宽度限制在32 以下的情形时,更短的Thumb opcode能更有效地使用有限的记忆体频宽,因而提供比32位程式码更佳的效能。典型的嵌入式硬体仅具有较小的32-bit datapath定址范围以及其他更窄的16 bits定址(例如Game Boy Advance)。在这种情形下,通常可行的方案是编译成 Thumb 程式码,并自行最佳化一些使用(非Thumb)32位指令集的CPU相关程式区,因而能将它们置入受限的32-bit汇流排宽度的记忆体中。
首颗具备 Thumb 技术的处理器是 ARM7TDMI。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。
ARM 还开发出一项技术,Jazelle DBX (Direct Bytecode eXecution),允许它们在某些架构的硬体上加速执行Java bytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软体时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。
首颗具备Jazelle技术的处理器是ARM926EJ-S:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和套用程式,也因此促使了这项技术不断地开发。
Thumb-2 技术首见于 ARM1156 核心 ,并于2003年发表。Thumb-2 扩充了受限的 16-bit Thumb 指令集,以额外的 32-bit 指令让指令集的使用更广泛。因此 Thumb-2 的预期目标是要达到近乎 Thumb 的编码密度,但能表现出近乎 ARM 指令集在 32-bit 记忆体下的效能。
Thumb-2 至今也从 ARM 和 Thumb 指令集中派生出多种指令,包含位栏(bit-field)操作、分支建表(table branches),和条件执行等功能。
ThumbEE,也就是所谓的Thumb-2EE,业界称为Jazelle RCT技术,于2005年发表,首见于 Cortex-A8 处理器。ThumbEE 提供从 Thumb-2 而来的一些扩充性,在所处的执行环境(Execution Environment)下,使得指令集能特别适用于执行阶段(Runtime)的编码产生(例如即时编译)。Thumb-2EE 是专为一些语言如 Limbo、Java、C#、Perl 和 Python,并能让 即时编译器 能够输出更小的编解码却不会影响到效能。
ThumbEE 所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器(handlers),其包含一小部份经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做记忆体配置。
进阶 SIMD 延伸集,业界称为NEON技术,它是一个结合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 单指令多重数据)指令集,其针对多媒体和讯号处理程式具备标准化加速的能力。NEON 可以在 10 MHz 的 CPU 上执行 MP3 音效解码,且可以执行 13 MHz 频率以下的 GSM AMR (Adaptive Multi-Rate) 语音编码。NEON具有一组广泛的指令集、各自的暂存器阵列,以及独立执行的硬体。NEON 支援 8-, 16-, 32- 和 64-bit 的整数及单精度浮点数据,并以 SIMD 的方式运算,执行图形和游戏处理中关于语音/视讯的部分。SIMD 在 向量超级处理机 中是个决定性的要素,它具备同时多项处理功能。在 NEON 技术中,SIMD 最高可支援到同时 16 个运算。
VFP 是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEE Std 754-1985 二进制浮点算数标准。VFP 提供大多数适用于浮点运算的套用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、印表机、机上盒,和汽车套用等。VFP 架构也支援 SIMD(单指令多重数据)平行化的短向量指令执行。这在图像和讯号处理等套用上,非常有助于降低编码大小并增加输出效率。
在ARM-based处理器中,其他可见的浮点、或 SIMD 的协同处理器还包括了 FPA, FPE, iwMMXt。他们提供类似 VFP 的功能但在opcode层面上来说并不具有相容性。
TrustZone(TM) 技术出现在 ARMv6KZ 以及较晚期的套用核心架构中。它提供了一种低成本的方案,针对系统单晶片(SoC)内加入专属的安全核心,由硬体建构的存取控制方式支援两颗虚拟的处理器。这个方式可使得套用程式核心能够在两个状态之间切换(通常改称为领域(worlds)以避免和其他功能领域的名称混淆),在此架构下可以避免资讯从较可信的核心领域泄漏至较不安全的领域。这种核心领域之间的切换通常是与处理器其他功能完全无关联性(orthogonal),因此各个领域可以各自独立运作但却仍能使用同一颗核心。记忆体和周边装置也可因此得知目前核心运作的领域为何,并能针对这个方式来提供对装置的机密和编码进行存取控制。典型的 TrustZone 技术套用是要能在一个缺乏安全性的环境下完整地执行作业系统,并在可信的环境下能有更少的安全性的编码。
ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 核心的整合硬体叙述,包含完整的软体开发工具(编译器、debugger、SDK),以及针对内含 ARM CPU 矽晶片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 核心整合到他们自行研发的晶片设计中,通常就仅针对取得一份生产就绪的智慧财产权核心(IP Core)认证。对这些客户来说,ARM 会释出所选的 ARM 核心的版图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商(IDM)和晶圆厂家,就选择可合成的RTL(暂存器传输级,如 Verilog)形式来取得处理器的智慧财产权(IP)。藉著可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品(如晶片元件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 核心的矽晶成品,对其它客户来讲,他们通常也保留重制 ARM 核心的权利。
就像大多数 IP 出售方,ARM 依照使用价值来决定 IP 的售价。在架构上而言,更低效能的 ARM 核心比更高效能的核心拥有较低的授权费。以矽晶片实作而言,一颗可整合的核心要比一颗硬体宏(黑箱)核心要来得贵。更复杂的价位问题来讲,持有 ARM 授权的商用晶圆厂(例如韩国三星和日本富士通)可以提供更低的授权价格给他们的晶圆厂客户。透过晶圆厂自有的设计技术,客户可以更低或是免费的ARM预付授权费来取得 ARM 核心。相较于不具备自有设计技术的专门半导体晶圆厂(如台积电和联电),富士通/三星对每片晶圆多收取了两至三倍的费用。对中少量的套用而言,具备设计部门的晶圆厂提供较低的整体价格(透过授权费用的补助)。对于量产而言,由于长期的成本缩减可借由更低的晶圆价格,减少ARM的NRE成本,使得专门的晶圆厂也成了一个更好的选择。
许多半导体公司持有 ARM 授权:Atmel、Broad、Cirrus Logic、Freescale(于2004从摩托罗拉公司独立出来)、富士通、英特尔(借由和Digital的控诉调停)、IBM,英飞凌科技,任天堂,恩智浦半导体(于2006年从飞利浦独立出来)、OKI电气工业,三星电子,Sharp,STMicroelectronics,德州仪器 和 VLSI等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由保密契约所涵盖,在智慧财产权工业,ARM是广为人知最昂贵的CPU核心之一。单一的客户产品包含一个基本的 ARM 核心可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元