1、 沈阳理工大学学士学位论文 多核研究平台-CMC总线的设计与实现 摘 要 随着人类社会的不断进步,以及计算机硬件飞速发展,多核处理器的出现是大势所趋!在信息产业的发展过程中,单核处理器暴露出许许多多的局限,多核处理器已经给人们带来了巨大的变化,带来更多的生产力优势和卓越的性能表现。随着当前市场经济发展的需要,人们对处理器速度、商业计算市场价值、应用前景、功耗等等性能方面要求更进一步的提高。多核处理器融合了未来的发展趋势,多核处理器必将成为下一代服务器和个人操作平台的主流,因此,对多核处理器相关技术的研究具有十分重要的意义。CMC( Core Memory Core)总线是为多核
2、处理器或众核处理器的内部通信设计的一种高效解决方案。目前多核处理器以其性能优势取代了单核处理器,多核处理器的体系结构仍有很多的关键技术亟待解决,包括核间通信问题。讨论了目前多核处理器中使用的核间通讯技术,分析了优缺点,在此基础上提出了 CMC 总线。 关键字:多核处理器;核间通信;CMC总线 Abstract Along with the advance of human society, as well as the rapid development of computer hardware, the emergen
3、ce of multi-core processors is the trend of The Times! In the process of the development of information industry, single-core processor has exposed many limitations, multi-core processor has brought great changes to people, bring more productivity advantage and superior performance. With the needs o
4、f the development of the current market economy, people of processor speed, the business computing market value, application prospect, power consumption and so on performance requires further improvement. Multi-core processor combines the development trend of the future, multi-core processors will b
5、ecome the mainstream of the next generation of servers and personal operation platform, therefore, of multi-core processors related technology research has very important significance. The CMC ( Core-Memory-Core) bus provides an efficient solution for the inter- core communication in the multi-cor
6、e processor or many-core processor. The single-core processor has been replaced by the multi-core processor with its advantages. There are many key technologies in the architecture of multi-core processor to be solved,including the inter- core communication. This article discusses some advantages an
7、d disadvantages of current inter-core communication technologies in the multi-core processor,so we design the CMC bus. Key words:multi-core processor; inter-core communication;CMC bus 目 录 1 绪论 3 1.1 课题研究背景和意义 3 1.2 国内外研究现 3 1.3 课题主要内容 3 2 多核处理器介绍 3 2.1 多核技术介绍 3 2.1.1多核技术的定义 3
8、 2.1.2多核技术的产生 3 2.1.3多核技术的现状和前景 3 2.2多核处理器 3 2.2.1单核处理器的局限性 3 2.2.2多核处理器的提出 3 2.2.3多核处理器的概念 3 2.2.4处理器的同构和异构 3 2.2.5多核处理器的优点 3 2.2.6多核多线程处理器的关键技术 3 2.2.7核间通信技术 3 2.2.8总线设计 3 2.2.9处理器技术发展 3 2.2.10面临的挑战 3 3 C++语言概述 3 3.1 C++语言简介 3 3.1.1 C++语言的发展 3 3.1.2 C++语言的特点 3 3.2 C++程序简介 3 3.3 C
9、程序的开发环境 3 3.3.1 Visual C++介绍 3 3.3.2 启动Visual C++ 3 3.3.3 Visual C++集成开发环境 3 3.3.4编辑C++源程序 3 3.3.5编译和运行 3 4 CMC总线 3 4.1 CMC总线的提出 3 4.2 基于CMC总线的多核处理器结构设计 3 4.3 CMC总线握手逻辑设计 3 4.4 CMC 总线硬件设计 3 5 多核系统的CMC功能模块 3 5.1 VB实现握手功能函数 3 5.1.1 创建窗体 3 5.1.2 准备握手函数 3 5.1.3 运行握手程序 3 5.1.4 测试运行结果分析
10、3 5.2 C++上实现功能模块 3 5.2.1 主要内容 3 5.2.2 功能函数 3 5.2.3 流程图 3 5.2.5 如何实现CMC功能 3 6 测试 3 6.1 测试握手读写功能模块 3 6.2 结果分析 3 总 结 3 致 谢 3 参考文献 3 附录A 英文文献 3 附录B 中文文献 3 附录C 程序代码 3 64 1 绪论 1.1 课题研究背景和意义 CMC( Core Memory Core) 总线是为多核处理器或众核处理器的内部通信设计的一种高效解决方案。目前多核处理器以其性能优势取代了单核处理器,多核处理器的体系结构仍有很
11、多的关键技术亟待解决,包括核间通信问题。讨论了目前多核处理器中使用的核间通讯技术,分析了优缺点,在此基础上提出了CMC总线。CMC总线的设计目标为只需一根握手信号线,简单的硬件逻辑,并为软件提供必要的控制接口。在C++上实现多核的CMC总线,验证该总线作为一种高效的多核处理器核间通信方案的可行性。 1.2 国内外研究现 核间通信技术中共享总线与交叉开关两种结构都易于设计实现,软件开销较小。交叉开关是多通道的数据传输,相比于单通道的共享总线互联结构具有更大的访问带宽。但是实现交叉开关需占用更多的片上面积。随着多核系统中核的数目不断增加,等待时间变长,多核处理器的软件开销加大。共享总线与交叉开
12、关结构只适合于核数较多的多核处理器,对于未来众核处理器会形成性能瓶颈。 NoC 结构使得未来多核处理器的各个核可以通过更灵活的方式交换数据,从而避免了集中的互连设计带来的系统性能瓶颈。这种方式避免了共享总线单一通道的瓶颈和交叉开关固定通道的瓶颈,提高了通道的利用效率,但其代价是大幅增加了软件开销。能运行,但是对核的时间占用太大。NoC 占用过多的 L1 Cache 空间和软件时间,不适合于众核处理器的底层通信。对上述三种通信架构进行了性能的折衷,提出了一种新型的多核处理器内部核间通信总线—CMC总线。CMC总线两个核共用一个存储器,该总线特点是用了一根OC门的握手线,实现两个核的握手协议,简单
13、的硬件逻辑,并为软件提供必要的控制接口,可实现多核处理器核间的高效通信。 1.3 课题主要内容 该设计模仿一根OC门的握手线,实现两个核的握手协议,给多核研究平台提供一个仿真核间通信手段。CMC总线设计目标为一根握手信号,编写读写程序,设计多核系统的CMC功能模块,在C++上实现多核的CMC总线,验证该总线作为一种高效的多核处理核间的通信方案的可行性。 2 多核处理器介绍 2.1 多核技术介绍 2.1.1多核技术的定义 在当代由于社会的
14、进步,社会需求的不断加大,面对市场规模的不断提高,业务需求的不断提高,高性能的计算机成为了一种必不可少的数据处理工具。但由于单核多线程已经无法满足目前需求,随之在计算机领域也应运而生了一门新兴的科技——多(内)核技术。多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。最为显著的是多核处理器技术,它也是CPU设计中的一项先进技术。它把两个以上的处理器核集成在一块芯片上,以增强计算性能。CMP通过在多个CPU核上分配工作负荷,并且依靠到内存和输入输出(I/O)的高速片上互联和高带宽管道对系统性能进行提升。 2.1.2多核技术的产生 40多年前,Intel的创始人戈登摩尔先生根据计算
15、机处理器发展的规律,总结出了至今在计算机硬件领域中非常著名的摩尔定律:“电脑芯片上的晶体管的数量每1 8个月将翻一番”。在芯片设计和制造工艺上,几乎到了极限,CPU的运算能力无法再通过增加晶体管的数量来提高了。在这种情况之下,CPU的制造商必须要用新的方式来提高计算机的运算能力,于是就有IBM、Sun公司利用计算机理论的并行计算设计出了多核CPU 。 2.1.3多核技术的现状和前景 自从多核技术新兴以来,各行各业都给予了很高的支持。教育方面,全国有120多家高校开设了多核技术或者并行计算这门课。为了以后的并行程序的设计而服务。在商业反面,很多大型公司,很多网络游戏的代理公司都花了巨资来支持
16、研发超级计算机,来提高他们的竞争水平。很多媒体纷纷及时播报关于多核技术的发展状况。及时提供给社会有关人士研究。很多大型企业已经开始培养并行程序开发,超级计算机使用的人才。1993年,德国曼海姆大学汉斯、埃里克等人发起创建了全球超级计算机TOP500排名榜,从很大程度上促进了多核技术的发展…… 多核技术使得计算机领域从“山重水复疑无路,柳暗花明又一村。”的窘境。当单核的发展已经进入死胡同时,各CPU厂家也开始改变设计典范,未来所有微处理器皆朝多核心设计发展为主流,传统型单一核心处理器将退居二线。关于双核心,我想不必再解释了,大家耳熟能详,从ALTHON 64 X2 系列的横空出世,到现在的酷睿
17、傲视群雄,再到双核安腾2的发布,双核心已经是目前市场的主流产品。在服务器领域,双核心处理器以其卓越的性能,更低的成本也被大多数企业接受。从软件的设计角度来说,双核/多核也改变了一些就有的思路。nVIDIA首席科学家David Kirk曾抱怨多核心处理器给游戏开发人员带来了巨大的编程困难。而INTEL 在发展硬件的同时,也在软件上做出了相应的改进。在2007年的多核应用暨Intel服务器平台大会上,英特尔数字企业集团副总裁兼服务器平台事业部总经理Kirk Skaugem先生表示:“英特尔实际上是全世界最大的软件工具的公司,我们不仅是一个硬件公司,要想优化你们的多核,不优化就不能实现所有的性能,如
18、果大家上我们的网站可以看到,我们的未来不仅仅停留于四核,未来会变成几十个核,甚至更多,所以我们在软件方面会进一步优化。”由此可知Intel公司已经在多核技术方面做好了充分的准备,这也必将导致多核技术将成为主流。今年初,在由英特尔网络部主办,CSDN协办的英特尔多核平台编程 优化大赛中,涌现出大量优秀的作品,充分的利用了双核/多核对于多线程和并行计算技术,使得代码运送速度大大提升。事实证明,最新的多核心、超线程编程工具,可以为开发人员提供丰富的资源以供利用,只有摒弃守旧的工作习惯,尽快改变观念,跟上时代的进步,多核心、超线程编程并不会成为不可逾越的障碍。 2.2多核处理器 2.2.1单核处
19、理器的局限性 传统的单核处理器相对于双核处理器有较多生产、加工、性能、使用等等方面的限性,双核处理器在各项预算的前提下,才是用户理想的选择。下面我们分析一下,单核处理器的局限性主要表现的几个方面: 1) 主频低 CPU厂商正在努力把主频提高到4GHZ甚至更高,其实已经到了工艺加工极限,实现起来是不可能达到的。而且造成巨大的生产成本,其成品性价比也非常低。已经没有什么使用价值。 2) 双核处理器性价比极高 在单核处理器系统中,单一线程中已经不太可能提高更多的并行性。简单点说就是传统单核处理器的是一个通道,双核处理器是两个通道,处理速度比传统快。而且,生产成本也相对较低。目前,双核处理器
20、的价格已经很便宜了,用户理想的选择当然是双核,而非单核处理器。 3) 系统所能耗问题现象突出 目前,相对于传统的单核处理器来说,如果仅仅提升处理主频,其发热量非常大,将消耗非常大的功率,那么其散热量也就不行了,没有足够大,足够强的冷去风扇,使处理器正常稳定地工作。 4) 对大型功能需求处理能力低 随着当前对大型数据库、政府、企业、军事、通信要求高性能处理能力芯片,单核处理器已经表现得不能为力,而且已经显现了巨大的缺陷,达不到理想的使用效果。 2.2.2多核处理器的提出 上一节已经讲到:随着单核CPU在处理系统能力上,体现出来的性能瓶颈,并暴露出许许多多的局限,下面,我们自然而然的引
21、入多核处理器概念,多核处理器能带来许多,让用户很满意的性能优势,在很多关键处理需求上让用户喜悦,比如说:系统安全性和虚拟技术等方面起到至关重要作用。随着虚拟技术的逐步发展,该技术已经能够提供对资源使用率有较好的保护,并且在一些重要的商用市场提供更好的保护,有较高的市场价值。而我们普通消费者在多核处理器的批量生产后,便也会得到比以前传统的单核处理器,得到更高的性能,更快的运算,更安全的性能,逐步提高人们生活质量,提高人们工作效率。 2.2.3多核处理器的概念 所谓多核心处理器,简单的说就是在一块CPU基板上集成两个或两个以上处理器核心,并且通过并行总线将个处理器核心连接起来。例如:上面章节提
22、到intel公司07年推出的非常流行的酷睿2型双核处理器。酷睿2型双核处理器其实是单芯片多核处理器(CMP)中最容易、最简单实现的一种多核处理器。实际上,在嵌入处理器研究中,双核心处理器是性价比非常高的一种芯片处理器。 我们先谈一下多核处理器可能存在一些问题。多核处理器存在的主要问题:因为单片多核处理器系统的资源都是采用划分方式的,如果当没有足够多的线程时。就造成了处理器系统资源的浪费。多核处理器的有点主要是:处理器可以很简单的认为容易获得非常高的主频,而且与此同时缩短的设计、验证、制作加工的时间。而多核处理器相对于传统的单核处理器具有更高的并行度,在多核处理器上可以达到多线程、多进程并行,
23、意思就是说在同一时刻处理器上有多个线程和多个进程在并行执行。 多核处理器芯片的出现和发展,是并行技术发展和市场应用需求的必然产物。多核处理器能获得用户较满意的主频,采用多核处理器架构能获得较高的性能,在每个时钟周期内,多核处理器可执行更多内核有效单元,内核之间互相达到高效的通信机制,才使系统达到最大性能,达到较高的主频。 这主要如下四个方面的原因: 第一:根据摩尔定律,传统的单核处理器不可能达到理想的主频,而且随着集成电路、晶体管高速发展,在制造水准进入90nm工艺时代,多核处理器芯片将能更高效发挥其重要的性能。 第二,多核核间通信技术逐步发展,多核处理器核间的通信标准统一规范后,各个
24、内核之间相互协作和通信实现高效的通信机制,而与传统的单核处理器结构相比,多核处理器在克服线程延迟影响方面更具有优势。 第三,在能耗方面,多核处理器相对于传统的的单核处理器其功耗小得多。当达到同一主频时,传统的单核处理器要达到这一主频时,其发热量一定非常大,将消耗非常大的功率,并散发出巨大的热量,如果没有足够大、足够强的冷却风扇,处理器就无法正常稳定保持工作。而多核处理器芯片在这方面就进行了优化,在功耗方面性能表现卓越。 第四,多核处理器研制设计时间短、技术相对成熟、必要劳动成本低。最有效的例证就是单核处理器与双核处理器,在提升主频上研制设计成本,体现出的性价比。目前,双核处理器已经牢牢占据
25、市场绝大多位置,将有逐步完全取代传统单核处理器的趋势。 2.2.4处理器的同构和异构 多核处理器存在两种结构形态:同构和异构,下面本文简要地说明分析一下同构与异构是多核处理器芯片的两种比较流行的结构形态,在多核处理器的发展思路上有十分重要的意义。 请看下表2.1:我们将同构与异构多核处理器作一下见简要性能比较,从表中,我们很容易看出同构和异构多核处理器的4个方面:即:1、主要应用;2、主要结构;3、数据存储;4、核间互连。主要不同就是异构多核处理器是专用处理器。针对用户不同需求,我们将有针对性的采用不同处理器设计方法,比一个以不变应万变的方法更有价值。当时,采用异构处理架构一般意味着采用
26、两个或者更多个芯片,这样我们可以很容易的看出先用不同的结构的处理器体现的性能是不一样的。 表2.1同构与异构多核处理器比较 同构的多核处理器 异构的多核处理器 主要应用 通用处理器 多用/专用处理器 主要结构 同构核心,多核 主从式异构核心,众核 数据存储 寄存器文件、Cache、内存 寄存器文件、Cache、内存 核间互联 多总线、交叉开关、格橱等 多总线、交叉开关、格橱等 2.2.5多核处理器的优点 和单核处理器相比,多核处理器有着5个显著的优点: 1、逻辑简单:相对超标量微处理器结构和超长指令字结构而言,单芯
27、片多处理器结构的控制逻辑复杂性要明显低很多。相应的单芯片多处理器的硬件实现必然要简单得多。 2、高主频:芯片多处理器结构的控制逻辑相对简单,包含极少的全局信号,因此线延迟对其影响比较小,因此,在同等工艺条件下,单芯片多处理器的硬件实现要获得比超标量微处理器和超长指令字微处理器更高的工作频率。 3、低通信延迟:由于多个处理器集成在一块芯片上,且采用共享Cache或者内存的方式,多线程的通信延迟会明显降低,这样也对存储系统提出了更高的要求。 4、低功耗:调节电压/频率、负载优化分布等,可有效降低CMP功耗。 5、设计和验证周期短:微处理器厂商一般采用现有的成熟单核处理器作为处理器核心,从而
28、可缩短设计和验证周期,节省研发成本。 2.2.6多核多线程处理器的关键技术 多核处理器有许多重大的关键技术,至今都是处理器研究的热点问题,主要是集中在体系架构、软件、逻辑控制、设计周期、功耗和安全性设计等等方面,多核多线程处理器具有当前研究热门方面的技术。下面例举出多核多线程处理器芯片面临着的九大关键技术: l 核结构研究:同构还是异构 l 程序执行模型 l Cache设计:多级Cache设计与一致性问题 l 总线设计 l 操作系统设计:任务调度、中断处理、同步互斥 l 低功耗设计 l 存储器墙 l 可靠性及安全性设计 l 核间通信技术 2.2.7核间通信技术 多核处
29、理器是指一个芯片内含有两个或者两个以上的“执行内核”。多核处理器核间通信结构研究目的是使各核之间能够相互协作、通信,提高处理器速度、性能。目前多核处理器的体系结构除了继续沿用单核中的总线共享结构,如 AMBA、CoreConnect、Wishbone、OCP、C* BUS 等总线结构外,还有交叉开关( Cross-bar switch) 、片上网络 ( Network on-Chip) 等结构。 图2.1给出了共享总线结构的多核处理器模型。处理器内部每个核都有私有一级缓存( L1 Cache)和共享的二级缓存( L2 Cache) 。核的 L1 Cache 之间、核的 L1 Cache 与
30、L2 Cache、主存与片内以及 I/O 设备与片内的通信都是通过共享总线实现。这种结构只能同时允许一个核的L1 Cache 与 L2 Cache 进行交互。 图2.1共享内存多核处理器模型 如图2.2所示,交叉开关结构引入了交换矩阵这种新的交换方式,摒弃了共享带宽的交换方式。Cross-bar Switch被不同核的 L1 Cache 交替使用从而达到访问共享 L2 Cache 的目的。n 条横向和 m 条纵向的总线构成的网状结构使得每一个核能够和任意一块L2 Cache 进行连接
31、每一条交叉线中的交叉位置等效于一个开关[4]。如果有不同的核需要同时访问同一块 L2 Cache 会产生竞争现象,这时需要有相应的仲裁机制来保证数据的完整性与一致性,其中硬件保证了操作的唯一性,软件保证了数据的完整性。 图2.2 交叉开关结构 片上网络( NoC,Network on-Chip) 核心思想是将计算机网络技术思想移植到芯片设计中。NoC设计定义了5个协议层: 物理层、数据链路层、网络层、传输层和系统层。数据采用报文形式交换,将消息划分成固定长度的报文,每个报文的前几个字节包含路由和控制信息。在报文转发中,依照路由算法决定报文在网络结构中传输的路径、方向、距离
32、交换算法决定两个相邻路由节点之间某种方式动态地分配传输线路和接口的资源。 共享总线与交叉开关两种结构都易于设计实现,软件开销较小。交叉开关是多通道的数据传输,相比于单通道的共享总线互联结构具有更大的访问带宽。但是实现交叉开关需占用更多的片上面积。当核的数目增加时,多核处理器核间通信源硬件资源消耗的数量级将按平方阶 O( n2) 增加( n 为多核处理器中核的个数) 。这两种结构在进行数据交换时可能会产生竞争现象,可采用总线侦听协议的方式来保证数据的一致性与完整性。这样核本身需要侦听逻辑,处理器的逻辑资源就增大。随着多核系统中核的数目不断增加,等待时间变长,多核处理器的软件开销加大。共享总线
33、与交叉开关结构只适合于核数较多的多核处理器,对于未来众核处理器会形成性能瓶颈。 NoC 结构使得未来多核处理器的各个核可以通过更灵活的方式交换数据,从而避免了集中的互连设计带来的系统性能瓶颈。这种方式避免了共享总线单一通道的瓶颈和交叉开关固定通道的瓶颈,提高了通道的利用效率,但其代价是大幅增加了软件开销,包括报文的分组编码和重组解码,这些都要增加软件时间并占用 L1 Cache 空间来完成。因此片上网络适合大核模式的处理器,其每个大核具有较强的功能,较大的 L1 Cache 空间。NoC 因为占用过多的 L1 Cache 空间和软件时间,所以不适合于众核处理器的底层通信。NoC 结构只适用于
34、大核模式的多核处理器。 文中对上述三种通信架构进行了性能的折衷,提出了一种新型的多核处理器内部核间通信总线—CMC总线。该总线特点是只用了一根握手线,简单的硬件逻辑,并为软件提供必要的控制接口,可实现多核处理器核间的高效通信。 2.2.8总线设计 传统微处理器中,Cache不命中或访存事件都会对CPU的执行效率产生负面影响,而总线接口单元(BIU)的工作效率会决定此影响的程度。当多个CPU核心同时要求访问内存或多个CPU核心内私有Cache同时出现Cache不命中事件时,BIU对这多个访问请求的仲裁机制以及对外存储访问的转换机制的效率决定了CMP系统的整体性能。因此寻找高效的多端口总线接
35、口单元(BIU)结构,将多核心对主存的单字访问转为更为高效的猝发(burst)访问; 同时寻找对CMP处理器整体效率最佳的一次Burst访问字的数量模型以及高效多端口BIU访问的仲裁机制将是CMP处理器研究的重要内容,目前Inter推出了最新的英特尔智能互连技术(QPI)技术总线,更大程度发掘了多核处理器的实力。 2.2.9处理器技术发展 多核处理器的前景是非常光明的,是未来处理器发展的主流。有可能多年之后,主流的多核多线程处理器一定能够具备同步运行越来越多复杂的指令,实践证明:从单一线程是不具备执行复杂的指令,究其主要根由,有如下两个方面的原因:第一个方面的原因是我们在增多多核芯片内核时
36、肯定提高了芯片的绝对成本,前期投入很大,其目标的价值并不一定让用户达到预期的满意度;第二个方面的原因是我们在生产制作芯片时,所需用去的必要时间变得更久,也不一定能达到用户对处理器性能日益的需求。在当前的处理器结构设计上,我们对更加复杂化、创新化的设计理念也只仅仅能使未来理想中,多核处理器芯片的性能只能达到有限提高的,这需要我们去研究相应的更多、更高水平的核间通信技术。 当前,多核多线程处理器正在稳步发展,相关的一些核心技术,也正逐渐成熟。我们在研究单芯片多核多线程处理器的过程中,我们在利用集成多个SOC内核加工到一个芯片上,来达到提升多线程的并行性,提高各个内核间进程的通信,在硬件总线上的
37、设计进行优化,在核通信模块的设计上,多运用先进的技术,通过大量能够高速运行在多核处理器系统上的软件开发,提升多核处理器核间通信技术。因此我们说:当前,未来处理器发展的重要趋势:单芯片多核处理器。 2.2.10面临的挑战 第一,核间通信是一个难题。显而易见,目前,在学术界,单芯片处理器核心之间的通信技术研究将是重要的问题,核间通信技术,是当今研究的热门。因此,一个单芯片多核处理器核心之间的通信模块化设计显得非常重要,多核处理器核间的灵活通信是单芯片多核处理器最基本的工作。 第二,如何降低多核处理器的功耗。对于芯片散热问题,是老生常谈的问题了,我们以为追求高主频的同时,也是要求存在用户接受范
38、围内的功耗标准。随着各类大型、巨型的大批量生产和投入使用,在理论上,单芯片多核处理器的功耗方面,急需要专业人员加大投入进行更多的优化和改进。 第三,最关键软件技术跟不上技术发展的需要。我们知道,在硬件和软件业上的发展,其实是相辅相成的,谁也离不开谁,软件业的发展跟不上,造成了单芯片多核处理器的技术性能瓶颈,这一点是单芯片多核处理器未来性能优势能否立足、发展和进步最严峻的挑战,当前,可能很多人还没有想到,几乎没有真正能支持单芯片多核处理器的系统软件,单芯片多核处理器在执行程序指令时,势必将会受软件高度控制。我们在对多核处理器研究过程中,发现软件体系对单芯片多核处理器有重要的作用和意义。 第四
39、在多核硬件平台设计。内核芯片在布局,总线设计,功耗等诸多方面十分具有独到之处,在嵌入式硬件平台重要设计方面,单芯片XLR732多核多线处理器具有广泛的代表性。多核处理器逐渐将完全取代单核处理器市场地位,也说明了多核处理器是法杖的趋势。但是如何加大改善硬件平台设计,加大提升多核处理器高性能的产品,需要我们共同努力在硬件、软件发展上开拓创新,努力工作和学习。 3 C++语言概述 3.1C++语言简介 3.1.1C++语言的发展 C语言是贝尔实验室于20世纪70年代初研制出来的,后来又被多次改进,并出现了多种版本。C语言既
40、具有高级语言的特点,表达力丰富,可移植性好;又具有低级语言的一些特点,能够很方便地实现汇编级的操作,目标程序效率很高。刚开始形成的C语言,受到那些想建立更快、更有效代码的程序员的欢迎。有一位名叫Bjarne Stroustrup的人却不满足于仅仅是生产快速代码,他却想面向对象的C语言。他开始对C语言的内核进行必要的修改,使其能满足面向对象模型的要求。C++从此产生。 C++语言自诞生以来,经过开发和扩充已形成一种完全成熟的编程语言。现在C++已由ANSI、BSI、DIN、其他几个国家标准机构和ISO定为标准。ISO标准于1997年11月4号经投票正式通过。 C++标准演变了许多年。C++模
41、板则是近几年来对此语言的一种扩展,模板是根据类型参数来产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对许多类型的数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库(Standard Template Library,STL)和微软的活动模板库(Active Template Libraty,ATL)都基于这个C++语言扩展。 C++标准可分为两部分——C++语言本身和C++标准库。标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。应该说,C/C++包括了相对少的关键字,而且
42、很多最有用的函数都来源于库,C++标准库实现容器和部分算法就是STL。 3.1.2 C++语言的特点 1优越的性能 其性能有两个方面:算法速度和机器代码效率。以一个算法可以定义为数据通过系统的概念化的路径,它描述一些点,在这些点上,数据能够被操作并可转换产生某个结果。例如,一个算法定义为获取一个字符串,计算字符串中的字符个数,并作为结果返回的过程。算法与语言是独立的,所以在编程之前必须设计算法,编写一个快速程序的第一个步骤是设计良好的算法,能以最少的操作步骤得出问题的答案。第二个步骤是选择语言,这也影响程序的速度。 从性能的角度考虑,用汇编语言编写程序是最佳的选择,它是计算机能理解的自
43、然语言。但是,几乎没有人用汇编语言编写完整的程序,因为这样做极其乏味。另一个最佳的选择是C语言。然而,由Visual C++提供的所有工具都产生C++,而不是C。使用Visual C++的向导可以生成大量的实用代码,而不必人工地编写代码。从编写程序的难易程度和程序的性能综合考虑,C++是最佳的选择。 C++性能良好,因为他被编译为机器代码。对VBScrip和Java等语言,代码在运行时由程序解释,而且每次运行程序时都要将代码转换为机器码,这样做效率比较低,不仅仅是已编译过的C++程序运行得较快,而且微软C++编译器已存在多年。这意味着微软的编译器程序员已经把许多优点集中到编译器上,以致它能产
44、生非常高效的机器码。 2 全面兼容C C++语言保持了C简洁、高效和接近汇编等特点,同时对C的类型系统进行了改革和扩充。C++对C的兼容性体现在许多C代码的程序不必修改就可被C++所使用上。为保持这种兼容性,C++也支持面向过程的程序设计,因此C++不是一个纯正的面向对象语言。 3 支持面向对象的方法 C++是一种支持面向对象的程序设计语言(Oriented Object Programming,OOP)。C++语言代码以类的形式组成,使得应用程序的开发变得十分容易。C++面向对象技术的特征主要有封装性、继承性和多态性。 3.2 C++程序简介 在开始学习C++语言编程之
45、前,应该了解一下C++源程序的基本结构,以及如何书写、编译和运行C++程序,以便建立一个总体的印象。
用C++语言编写应用程序,再到最后得到的结果,需要经过3个过程,即编写源程序、编译和运行。
1 编写源程序
一个简单的C++应用程序
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
// first.cpp
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#include
46、is is my first C++ program.”< 47、个main()函数。该函数标志着执行应用程序时的起始点。上程序中关键字void表示main()函数无返回值。
(4)任何函数中可以有多条语句。任何函数中可以有多条语句。上程序中的main()函数中只有一条语句,即:
cout<<”This is my first C++ program.”< 48、序中可以加入一些注释行,例如用“//”开头的行。
(7)在C++程序中,字母的大小写是具有区分意义的,因此main、Main、MAIN都是不同的名称。作为程序的入口只能是main()函数。
2 编译
当C++程序编写完成后,必须经过C++编译器把C++源程序编译成.obj的目标文
件,然后使用连接工具将目标文件连接为.exe的应用程序。在C++集成环境中,往往可以通过Build命令一次完成这两个步骤。
3 运行
根据运行的不同目的,运行可分为应用运行、测试运行和调试运行。应用运行是指程序正式投入使用后的运行,目的是通过程序的运行完成预先设定的功能,从而获得相应的效益。测试运行是 49、应用运行前的试运行,是为了验证整个应用系统的正确性,如果发现错误,应进一步判断错误的原因和产生错误的大致位置,以便加以纠正。调试运行则是专门为验证某段程序的正确性而进行的。运行时,通过输入一些特定的数据,观察程序是否产生预期的输出。如果没有,则通过程序跟踪方法,观察程序是否按预期的流程运行,程序中某些变量的值是否如预期的那样改变,从而判定出错的具体原因和位置,再加以纠正。
3.3 C++程序的开发环境
目前,比较流行的C++程序集成开发环境有基于Windows平台的Microsoft Visual C++和Borland C++ Builder以及基于DOS平台的Turbo C++和Bor 50、land C++。下面对Visual C++开发环境的使用作简要介绍。
3.3.1 Visual C++介绍
Visual C++是美国Microsoft公司最新推出的可视化C++开发工具,是日前计算机开发者首选的C++开发环境。它支持最新的C++标准,它的可视化工具和开发向导使C++应用开发变得非常方便快捷。
Visual C++已经从Visual C++ 1.0发展到最新的Visual C++7.0版本。不管使用何种版本,其基本操作大同小异。
3.3.2 启动Visual C++
当Visual C++成功安装后,通过选择Windows桌面的“开始”→“程序”→“Microsof






