‘壹’ RISC的关键技术都有哪些谢谢
ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。本文将对全新的ARMv6架构进行介绍,并深入分析ARM11处理器的先进特点和关键技术。ARMv6结构体系实现新一代微处理器的第一步就是订立一个新的结构体系。这里所说的结构体系只是对处理器行为进行描述,并不包括具体地指定处理器是如何被建造的。结构体系的定义提供了处理器和外界(操作系统,应用程序和调试支持)的接口,从细节上说,处理器结构体系定义了指令集、编程模式和最近的存储器之间的接口。最新的ARM处理器架构—ARMv6,发布于2001年10月,它建立于过去十年ARM许多成功的结构体系基础上。同处理器的授权相似,ARM也向客户授权它的结构体系。比如,Intel的XScale就是基于ARMv5TE的处理器。本文也会就ARM11和Intel XScale的特点作一比较。 目标应用ARMv6架构是根据下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求而制定的。ARM11的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。可以预言,基于AMRv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。主要特点对于各种无线移动应用,毫无节制的提供高性能处理器是无用的。同成本控制类似,功耗的控制也是一个重要因素。ARM11系列处理器展示了在性能上的巨大提升,首先推出350M~500MHz时钟频率的内核,在未来将上升到1GHz时钟频率(如图2)。 ARM11处理器在提供高性能的同时,也允许在性能和功耗间做权衡以满足某些特殊应用。通过动态调整时钟频率和供应电压,开发者完全可以控制这两者的平衡。在0.13um工艺,1.2v条件下,ARM11处理器的功耗可以低至0.4mW/MHz。ARM11处理器同时提供了可综合版本和半定制硬核两种实现。可综合版本可以让客户根据自己的半导体工艺开发出各有特色的处理器内核,并保持足够灵活性。ARM实现的硬核则是为了满足那些极高性能和速度要求的应用,同时为客户节省实现的成本和时间。为了让客户更方便地走完实现流程,ARM11处理器采用了易于综合的流水线结构,并和常用的综合工具以及RAM compiler良好结合,确保了客户可以成功并迅速的达到时序收敛。目前已有的ARM11处理器在不包含Cache的情况下面积小于2.7mm2,对于当前复杂的SoC设计来说,如此小的die size对芯片成本的降低是极其重要的。ARM11处理器在很多方面为软件开发者带来便利。一方面,它包含了更多的多媒体处理指令来加速视频和音频处理;另一方面,它的新型存储器系统进一步提高了操作系统的性能;此外,还提供了新指令来加速实时性能和中断的响应。再次,目前有很多应用要求多处理器的配置(多个ARM内核,或ARM+DSP的组合),ARM11处理器从设计伊始就注重更容易地与其他处理器共享数据,以及从非ARM的处理器上移植软件。此外,ARM还开发了基于ARM11系列的多处理器系统——MPCORE(由二个到四个ARM11内核组成)。优秀的性能ARM11处理器的超强性能是由一系列的架构特点所决定的。ARMv6—决定性能的基础ARMv6架构决定了可以达到高性能处理器的基础。总的来说,ARMv6架构通过以下几点来增强处理器的性能:多媒体处理扩展使MPEG4编码/解码加快一倍音频处理加快一倍增强的Cache结构实地址Cache减少Cache的刷新和重载减少上下文切换的开销增强的异常和中断处理使实时任务的处理更加迅速= 支持Unaligned和Mixed-endian数据访问使数据共享、软件移植更简单,也有利于节省存储器空间对绝大多数应用来说,ARMv6保持了100%的二进制向下兼容,使用户过去开发的程序可以进一步继承下去。ARMv6 保持了所有过去架构中的T(Thumb指令)和E(DSP指令)扩展,使代码压缩和DSP处理特点得到延续;为了加速Java代码执行速度的ARM Jazalle技术也继续在ARMv6架构中发挥重要作用。ARM11处理器的内核特点ARM11处理器是为了有效的提供高性能处理能力而设计的。在这里需要强调的是,ARM并不是不能设计出运行在更高频率的处理器,而是,在处理器能提供超高性能的同时,还要保证功耗、面积的有效性。ARM11优秀的流水线设计是这些功能的重要保证。 相近文章: · 中芯国际牵手飞索投产武汉12英寸厂 · 整合资源比亚迪接手宁波中纬半导体资产 · 东芝追加投资 通过SD卡扩大数字媒体交付 · IBM支持32nm/28nm ARM片上系统芯片 · 海力士关闭200mm晶圆“M7”DRAM工厂 编辑:潘争本文引用地址: http://www.eeworld.com.cn/others/hotclick/200807/article_17973.html
‘贰’ 编译器的组成及各部分的功能及作用
1. 词法分析 词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。 2. 语法分析 语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。 3. 语义分析 语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。 4. 中间代码生成 中间代码生成器根据语义分析器的输出生成中间代码。中间代码可以有若干种形式,它们的共同特征是与具体机器无关。最常用的一种中间代码是三地址码,它的一种实现方式是四元式。三地址码的优点是便于阅读、便于优化。 5. 中间代码优化 优化是编译器的一个重要组成部分,由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间上有很大浪费。当需要生成高效目标代码时,就必须进行优化。 6. 目标代码生成 目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。编译器生成的目标程序代码可以有多种形式:汇编语言、可重定位二进制代码、内存形式。 7 符号表管理 符号表的作用是记录源程序中符号的必要信息,并加以合理组织,从而在编译器的各个阶段能对它们进行快速、准确的查找和操作。符号表中的某些内容甚至要保留到程序的运行阶段。 8 出错处理用户编写的源程序中往往会有一些错误,可分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,也被称作动态语义错误,如变量取值为零时作为除数,数组元素引用时下标出界等。静态错误又可分为语法错误和静态语义错误。语法错误是指有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。静态语义错误是指分析源程序时可以发现的语言意义上的错误,如加法的两个操作数中一个是整型变量名,而另一个是数组名等。
‘叁’ 编译器程序的组成部分分别是什么
编译器是由词法分析器,语法分析器,语义分析器,中间代码生成,代码优化和目标代码生成。谢谢。
‘肆’ VC编译器中“优选大小或速度”和“优化”选项的设置区别在哪里
VC中的优化里面的 按大小优化 与 按速度优化 是分开选的,不能同时选择两者
‘伍’ 含有代码优化的编译器的执行效率高这句话对不对
优化方式理论上跟编译器和硬件都有关联。代码级别的优化,要看所使用的编译器实现,Xcode用的是clang,VS用的是windows自己的编译器。。。
汇编级别(指令级别)的优化,要根据硬件对应的指令集实现,指令集根据CPU类型的不同而不同。。。
‘陆’ RISC的指令集使编译优化工作更____
哪里说RISC更复杂了?
‘柒’ 通信工程,嵌入式系统,汽车电子,选哪个
首先说通信工程,随着中国3G时代的到来,通信工程方面的人才肯定是必不可少的,但现在通信工程找工作的范围不是很宽,主要是一些大的企业,比喻移动,中国电信等,而一般都没有小企业做这方面的,因为这些技术是一般小企业做不来的,在加上通信工程知识都是比较难学的,要学好不容易,他要求有很好的数学基础,不过真正学的很好的话,那高薪是不用愁的,我就是因为学不来像《信号与系统》这样的课程而未走这条路的。
再说嵌入式系统(是我现在在学的),就像楼上说的那样,现在中国的嵌入式行业真正是处在飞速发展的阶段,其发展的前景是很广阔的,而且这方面的人才现在还很缺,所以一般学这个专业的找到一份工作室不用愁的。上次我们学校过来招聘的就开出了3000--5000的起薪,现在都是这个行情。如果能上研究生的话,那工资水平就更高了,我在网上看过的招聘 :具有研究生学历,三年以上工作经验的年薪在10万-15万之间。
嵌入式一般有偏硬件和偏软件之分,基础课也较多,电信方面的如 电路、模数电、微机、单片机、汇编等,计算机方面的如 计算机原理、C/C++、数据结构、操作系统、软件基础等,真正难的是后面以这些为基础的 ARM嵌入式系统、运行在这硬件上的操作系统 如LINUX、WINDOWS CE等、基于以上基础的 应用程序的开发,内核的开发、驱动程序的开发。
要学好嵌入式不容易,但我相信只要多花时间,什么问题都能搞定。呵呵
以上是我了解的,给你作参考。至于汽车电子我了解不多。
‘捌’ 编译器能够完成的工作是
1. 词法分析词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。
2. 语法分析语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。
3. 语义分析语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。
4. 中间代码生成中间代码生成器根据语义分析器的输出生成中间代码。中间代码可以有若干种形式,它们的共同特征是与具体机器无关。最常用的一种中间代码是三地址码,它的一种实现方式是四元式。三地址码的优点是便于阅读、便于优化。
5. 中间代码优化
优化是编译器的一个重要组成部分,由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间上有很大浪费。当需要生成高效目标代码时,就必须进行优化。
6. 目标代码生成
目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。编译器生成的目标程序代码可以有多种形式:汇编语言、可重定位二进制代码、内存形式。
7 符号表管理
符号表的作用是记录源程序中符号的必要信息,并加以合理组织,从而在编译器的各个阶段能对它们进行快速、准确的查找和操作。符号表中的某些内容甚至要保留到程序的运行阶段。
8 出错处理用户编写的源程序中往往会有一些错误,可分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,也被称作动态语义错误,如变量取值为零时作为除数,数组元素引用时下标出界等。静态错误又可分为语法错误和静态语义错误。语法错误是指有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。静态语义错误是指分析源程序时可以发现的语言意义上的错误,如加法的两个操作数中一个是整型变量名,而另一个是数组名等。
‘玖’ keil c51优化等级介绍
一般用优化等级8,其它的别用,容易出事。
编译完之后多留意data,xdata,看有没超出芯片的最大值,
特别是data,不能超过128,甚至太接近128有时也会出问题。
如果data 需要使用到256,则另外的128用idata定义
‘拾’ 编译器具体实现中比较巧妙的思想有哪些
要说编译器实现的巧妙思想,很多都是用来解决工程性问题的,跟编译原理中的算法(解决抽象概念问题 / 学术问题)未必有直接关系。
题主是更想知道某个算法在具体实现中的特点或者说应用方式呢,还是更想了解工程方面的问题呢?
我觉得前者应该有很多人会给出非常有趣的回答,我就主要回答后者的方面吧。解决工程性问题的巧妙技巧也挺吸引人的,而且有非常大量的素材…根本无法列举完。
LLVM
说到编译器实现,不得不落个俗套说说LLVM编译器套件。不用介绍LLVM是啥了,感觉是“地球人都知道”系列。
1、一套IR,三种表现形式:运行时表现形式(llvm/IR,内存中)、序列化表现形式(bitcode,用于存储)、文本表现形式(“LLVM汇编”,便于人阅读和编辑)。三种形式间可以无损变换是LLVM非常非常强大的实现特点之一。
实际使用时能否真的达到无损变换很大程度上取决于要实现的语言有多少东西无法用LLVM IR表达。
例如说如果有语言实现基于LLVM来实现JIT编译器,并且想把一个运行时的对象指针当作常量嵌入生成的代码里,它可以把这个常量构造成LLVM IR,但如果把这个常量序列化到bitcode或生成文本形式,等“下一次编译”再读出来用的话,那个常量指针可能已经不对了。这跟生成PIC(position-independent code)的问题类似,但LLVM没办法帮语言解决这种问题。
也有可能有些语言实现偷懒,有些嵌入LLVM IR的metadata无法无损转换为文本形式,这也不能怪LLVM IR不好,但确实是使用中要头疼的问题…
这种一套IR三种表现形式的设计非常实用,一些新的语言实现项目受其影响也采用了类似的设计。