㈠ 腾讯称霸,都"牺牲"了哪些创始人
腾讯称霸“牺牲”了这些创始人:
1、张志东CTO(首席技术官):
张志东是腾讯主要创办人之一,自1999年起受雇于腾讯。于1993年取得深圳大学理学士学位,主修计算机及应用,并于1996年取得华南理工大学计算机应用及系统架构硕士学位。在电信及互联网行业拥有逾八年经验。
(1)存储技术中天扩展阅读:
腾讯公司的运营:
腾讯成立于1998年11月,是目前中国领先的互联网增值服务提供商之一。成立10多年以来,腾讯一直秉承“一切以用户价值为依归”的经营理念,为亿级海量用户提供稳定优质的各类服务,始终处于稳健发展的状态。
通过互联网服务提升人类生活品质是腾讯的使命。腾讯把“连接一切”作为战略目标,提供社交平台与数字内容两项核心服务。通过即时通信工具QQ、移动社交和通信服务微信和WeChat、门户网站腾讯网(QQ.com)、腾讯游戏、社交网络平台QQ空间等中国领先的网络平台,满足互联网用户沟通、资讯、娱乐和金融等方面的需求。腾讯的发展深刻地影响和改变了数以亿计网民的沟通方式和生活习惯,并为中国互联网行业开创了更加广阔的应用前景。
面向未来,坚持自主创新,树立民族品牌是腾讯的长远发展规划。腾讯50%以上员工为研发人员,拥有完善的自主研发体系,在存储技术、数据挖掘、多媒体、中文处理、分布式网络、无线技术六大方向都拥有了相当数量的专利,在全球互联网企业中专利申请和授权总量均位居前列。
成为最受尊敬的互联网企业是腾讯的远景目标。腾讯一直积极参与公益事业、努力承担企业社会责任、推动网络文明。2006年,腾讯成立了中国互联网首家慈善公益基金会——腾讯慈善公益基金会,并建立了腾讯公益网。秉承“致力公益慈善事业,关爱青少年成长,倡导企业公民责任,推动社会和谐进步”的宗旨,腾讯的每一项产品与业务都拥抱公益,开放互联,并倡导所有企业一起行动,通过互联网领域的技术、传播优势,缔造“人人可公益,民众齐参与”的互联网公益新生态。
㈡ 中天数据恢复怎么样
中天数据恢复怎么样?在很多客户错误的观念中,认为删除了手机的数据后,只需要花钱购买一些所谓的手机恢复APP软件就能恢复自己删除的内容,实际上这种操作只会进一步破坏原本还有希望恢复的数据。因为用户的权限仅仅只能访问一个挂载点,相对手机字库来说只是冰山一角。而且手机的文件系统是EXT文件系统,如图一显示的“EXT4”,EXT文件系统的删除原理详情见下图:
综上所述,建议您手机误删除后,为了尽可能的找回数据,请找专业的中天手机数据恢复中心。
㈢ 计算机的中央处理器CPU,包含控制器和存储器两部分
中央处理器CPU包括运算逻辑部件、寄存器部件和控制部件等。
逻辑部件:英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。
寄存器:寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。
控制部件:英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。
其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。
微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。
简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。
㈣ 中天科技招收二本学生吗
经济条件允许的情况下,可以购买。
免疫细胞储存就是将我们身体健康时的免疫细胞在严格操作流程下长期储存,以供需要时使用。储存的免疫细胞也可使用,来提高机体免疫力。这是充分利用现有免疫细胞资源的有效方法。
随着时间的推移,人体免疫力时时在衰退,患病的风险时时在增长。今天体_的免疫细胞肯定比明天的年轻。免疫细胞越年轻,其免疫活性越好。免疫细胞存储关键在于是否用得是自体的、健康的免疫细胞。癌症患者体内无法取得健康的免疫细胞。
㈤ 在sql Sever中建立修改表的存储过程时的错误
SQL Server是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言。T-SQL是结构化查询语言SQL的一种,支持ANSI SQL-92标准。
SQL Server 采用二级安全验证、登录验证及数据库用户帐号和角色的许可验证。SQL Server 支持两种身份验证模式:Windows NT身份验证和SQL Server 身份验证。7.0版支持多种类型的角色,"角色"概念的引入方便了权限的管理,也使权限的分配更加灵活。
SQL Server为公共的管理功能提供了预定义的服务器和数据库角色,可以很容易为某一特定用户授予一组选择好的许可权限。 SQL Server可以在不同的操作平台上运行,支持多种不同类型的网络协议如TCP/IP、IPX/SPX、Apple Talk等。SQL Server在服务器端的软件运行平台是Windows NT、Windows9x,在客户端可以是Windows3.x、Windows NT、Windows9x,也可以采用其它厂商开发的系统如Unix、Apple Macintosh等。
微软的SQL Server是一项完美的客户/服务器系统。SQL Server需要安装在Windows NT的平台上,而Windows NT可以支持Intel 386,Power PC,MIPS,Alpha PC和RISC等平台,它使SQL Server具备足够的威力和功能。
这里所有的文章所采用的数据库应用程序都是基于SQL Server之上的,采用ODBC及标准的SQL查询,可以非常简单的移植到任何一个支持ODBC的数据库之上,如:Oracle,Informix,Db2和Access,在阅读有关ASP数据库编程技术之前,要确认你至少熟悉一种数据库管理系统,并可以使用标准的SQL查询语言操作数据库。
SQL Server提供服务器端的软件,这部分需要安装在NT Server上,SQL Server的用户端则可以安装在许多用户端PC系统中,Windows可以让用户端进行数据库的建立,维护及存取等操作,SQL Server可以最多定义32767个数据库,每个数据库中,可以定义20亿个表格,每个表格可以有250个字段,每个表格的数据个数并没有限制,每一个表格可以定义250个索引,其中有一个可以是Clustered索引。
SQL Server所使用的数据库查询语言称为Transact-SQL,它是SQL Server的核心,Transact-SQL强化了原有的SQL关键字以进行数据的存取,储存及处理等功能,Transact-SQL扩充了流程控制指定,可以使你方便的编写功能强大的存储过程,他们存放在服务器端,并预先编译过,执行速度非常块,触发是一种特殊的存储过程,用来确保SQL Server数据库引用的完整性,你可以建立插入,删除和更新触发以控制相关的表格中对数据列的插入,删除和更新,你还可以使用规则(Rule),缺省(default)以及限制(Constraints),来协助将新的数值套用到表格中去!
SQL SERVER的特点与评价
上手容易
话分两头,如果您的企业至今还未购置数据库,其中一个主要的原因可能就是认为它不好上手,那么,从SQLServer开始吧。毕竟,大多数的中小企业日常的数据应用是建立在Windows平台上的。由于SQLServer与Windows界面风格完全一致,且有许多"向导(Wizard)"帮助,因此易于安装和学习,有关SQLServer的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。
从另一个角度来讲,学习SQLServer是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQLServer的基础,再去学习和使用它们就容易多了。IT行业的实践经验充分证明了这一点。
兼容性良好
由于今天Windows操作系统占领着主导地的位,选择SQLServer一定会在兼容性方面取得一些优势。另外,SQLServer2000除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML数据,可以将搜索结果以XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET战略中发挥着重要的作用。
电子商务
在使用由MicrosoftSQLServer2000关系数据库引擎的情况下,XML数据可在关系表中进行存储,而查询则能以XML格式将有关结果返回。此外,XML支持还简化了后端系统集成,并实现了跨防火墙的无缝数据传输。你还可以使用HypertextTransferProtocol(超文本传输协议,HTTP)来访问SQLServer2000,以实现面向SQLServer2000数据库的安全Web连接和无须额外编程的联机分析处理(OLAP)多维数据集。
数据仓库
MicrosoftSQLServer2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大
限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。
增强的在线商务
MicrosoftSQLServer2000简化了管理、优化工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸缩性方面的改进包括对多达32颗CPU和64GBRAM的支持。通过自动优化和改进后的管理特性--诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。
利于构筑"敏捷性商务"
所谓"敏捷性商务"就是能够打破内部和外部的商业界限,对迅速改变的环境做出快速反应。。微软已经与关键的合作伙伴建立起了战略关系,创造出了能够与许多供应商的产品实现整合的解决方案,因而企业用户并不需要做出"要么完全接受,要么全部不要"的承诺。在部署解决方案的过程中,企业用户不一定要拆除原有的设备从头。敏捷商务让企业用户能够充分利用现有的系统,自主决定所需的硬件和软件解决方案以及由谁来提供,伸缩自如、游刃有余。
-------------------------------------
现在的数据库:oracle 如日中天
sybase 情况不妙
sqlserver 马马忽忽
㈥ 查找CPU的发展过程
由无知到精通!详解CPU里遇到的“黑话”
●CPU常规知识汇总
CPU又叫中央处理器,是英文单词Central Processing Unit的缩写,负责对信息和数据进行运算和处理,并实现本身运行过程的自动化。在早期的计算机当中,CPU被分成了运算器和控制器两个部分,后来由于电路集成度的提高,在微处理器问世时,就将它们都集成在一个芯片中了。需要智能控制、大量信息处理的地方就会用到CPU。
CPU有通用CPU和嵌入式CPU,通用和嵌入式的分别,主要是根据应用模式的不同而划分的。通用CPU芯片的功能一般比较强,能运行复杂的操作系统和大型应用软件。嵌入式CPU在功能和性能上有很大的变化范围。随着集成度的提高,在嵌入式应用中,人们倾向于把CPU、存储器和一些外围电路集成到一个芯片上,构成所谓的系统芯片(简称为SOC),而把SOC上的那个CPU成为CPU芯核。
■CPU的流派
现在,指令系统的优化设计有两个截然相反的方向。一个是增强指令的功能,设置一些功能复杂的指令,把一些原来有软件实现的常用功能改用硬件的指令系统来实现,这种计算机成为复杂指令系统计算机。早期Intel的X86指令体系就是一种CISC指令结构。
RISC是Reced Instruction Set Computer的缩写中文翻译成精简指令系统计算机,是八十年代发展起来的,尽量简化指令功能,只保留那些功能简单,能在一个节拍内执行完成的指令,较复杂的功能用一段子程序来实现,这种计算机系统成为精简指令系统计算机。目前采用RISC体系结构的处理器的芯片厂商有SUN、SGI、IBM的Power PC系列、DEC公司的Alpha系列、Motorola公司的龙珠和Power PC等等。
■MIPS体系
MIPS是世界上很流行的一种RISC处理器。MIPS的意思是"无内部互锁流水级的微处理器"(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。他最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品以为很多打计算机公司采用构成各种工作站和计算机系统。
■指令系统
要讲CPU,就必须先讲一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性。比如我们现在所用的CPU都是采用x86指令集的,他们都是同一类型的CPU,不管是PIII、Athlon或Joshua。我们也知道,世界上还有比PIII和Athlon快得多的CPU,比如Alpha,但它们不是用x86指令集,不能使用数量庞大的基于x86指令集的程序,如Windows98。之所以说指令系统是一个CPU的根本属性,是因为指令系统决定了一个CPU能够运行什么样的程序。
所有采用高级语言编出的程序,都需要翻译(编译或解释)成为机器语言后才能运行,这些机器语言中所包含的就是一条条的指令。
1、指令的格式
一条指令一般包括两个部分:操作码和地址码。操作码其实就是指令序列号,用来告诉CPU需要执行的是那一条指令。地址码则复杂一些,主要包括源操作数地址、目的地址和下一条指令的地址。在某些指令中,地址码可以部分或全部省略,比如一条空指令就只有操作码而没有地址码。
举个例子吧,某个指令系统的指令长度为32位,操作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个“”的指令时,先取出它的前8位操作码,即00000010,分析得出这是一个减法操作,有3个地址,分别是两个源操作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到ALU中进行减法运算,然后把结果送到00000110处。
这只是一个相当简单化的例子,实际情况要复杂的多。
2、指令的分类与寻址方式
一般说来,现在的指令系统有以下几种类型的指令:
(1) 算术逻辑运算指令
算术逻辑运算指令包括加减乘除等算术运算指令,以及与或非异或等逻辑运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令等。
(2) 浮点运算指令
用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以CPU中一般还会有专门负责浮点运算的浮点运算单元。现在的浮点指令中一般还加入了向量指令,用于直接对矩阵进行运算,对于现在的多媒体和3D处理很有用。
(3) 位操作指令
学过C的人应该都知道C语言中有一组位操作语句,相对应的,指令系统中也有一组位操作指令,如左移一位右移一位等。对于计算机内部以二进制不码表示的数据来说,这种操作是非常简单快捷的。
(4) 其他指令
上面三种都是运算型指令,除此之外还有许多非运算的其他指令。这些指令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比较特殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。
对于指令中的地址码,也会有许多不同的寻址(编址)方式,主要有直接寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统会有几十种甚至更多的寻址方式。
3、 CISC与RISC
CISC,Complex Instruction Set Computer,复杂指令系统计算机。RISC,Reced Instruction Set Computer,精简指令系统计算机。虽然这两个名词是针对计算机的,但下文我们仍然只对指令集进行研究。
(1) CISC的产生、发展和现状
一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全靠软件编译时通过简单指令的组合来实现。举个最简单的例子,一个a乘以b的操作就可以转换为a个b相加来做,这样就用不着乘法指令了。当然,最早的指令系统就已经有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法组合来得快得多。
由于那时的计算机部件相当昂贵,而且速度很慢,为了提高速度,越来越多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统的指令数是受指令操作码的位数所限制的,如果操作码为8位,那么指令数最多为256条(2的8次方)。
那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了一种方案:操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把操作码扩展到这些位置。
举个简单的例子,如果一个指令系统的操作码为2位,那么可以有00、01、10、11四条不同的指令。现在把11作为保留,把操作码扩展到4位,那么就可以有00、01、10、1100、1101、1110、1111七条指令。其中1100、1101、1110、1111这四条指令的地址码必须少两位。
然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,发明了各种各样的寻址方式,如基址寻址、相对寻址等,用以最大限度的压缩地址码长度,为操作码留出空间。
就这样,慢慢地,CISC指令系统就形成了,大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点:因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用x86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的唯一理由就是为了兼容大量的x86平台上的软件。
(2) RISC的产生、发展和现状
1975年,IBM的设计师John Cocke研究了当时的IBM370CISC系统,发现其中占总指令数仅20%的简单指令却在程序调用中占了80%,而占指令数80%的复杂指令却只有20%的机会用到。由此,他提出了RISC的概念。
事实证明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春笋般大量出现,占据了大量的市场。到了90年代,x86的CPU如pentium和k5也开始使用先进的RISC核心。
RISC的最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。由于下文所讲的CPU核心大部分是讲RISC核心,所以这里就不多介绍了,对于RISC核心的设计下面会详细谈到。
RISC目前正如日中天,Intel的Itanium也将最终抛弃x86而转向RISC结构
■CPU内核结构
好吧,下面来看看CPU。CPU内核主要分为两部分:运算器和控制器。
一 运算器
1、算术逻辑运算单元ALU(Arithmetic and Logic Unit)
ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。
通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。
2、浮点运算单元FPU(Floating Point Unit)
FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。
3、通用寄存器组
通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。
在通用寄存器的设计上,RISC与CISC有着很大的不同。CISC的寄存器通常很少,主要是受了当时硬件成本所限。比如x86指令集只有8个通用寄存器。所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
对于x86指令集只支持8个通用寄存器的缺点,Intel和AMD的最新CPU都采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。不过,相对于RISC来说,这种技术的寄存器操作要多出一个时钟周期,用来对寄存器进行重命名。
4、专用寄存器
专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。
二 控制器
运算器只能完成运算,而控制器用于控制着整个CPU的工作。
1、指令控制器
指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。
2、时序控制器
时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。
3、总线控制器
总线控制器主要用于控制CPU的内外部总线,包括地址总线、数据总线、控制总线等等。
4、中断控制器
中断控制器用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。
三 CPU核心的设计
CPU的性能是由什么决定的呢?单纯的一个ALU速度在一个CPU中并不起决定性作用,因为ALU的速度都差不多。而一个CPU的性能表现的决定性因素就在于CPU内核的设计。
1、超标量(Superscalar)
既然无法大幅提高ALU的速度,有什么替代的方法呢?并行处理的方法又一次产生了强大的作用。所谓的超标量CPU,就是只集成了多个ALU、多个FPU、多个译码器和多条流水线的CPU,以并行处理的方式来提高性能。
超标量技术应该是很容易理解的,不过有一点需要注意,就是不要去管“超标量”之前的那个数字,比如“9路超标量”,不同的厂商对于这个数字有着不同的定义,更多的这只是一种商业上的宣传手段。
2、流水线(Pipeline)
流水线是现代RISC核心的一个重要设计,它极大地提高了性能。
对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算(ALU),写结果。其中前三步一般由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令顺序执行,那么先是指令控制器工作,完成第一条指令的前三步,然后运算器工作,完成后两步,在指令控制器工作,完成第二条指令的前三步,在是运算器,完成第二条指令的后两部……很明显,当指令控制器工作是运算器基本上在休息,而当运算器在工作时指令控制器却在休息,造成了相当大的资源浪费。解决方法很容易想到,当指令控制器完成了第一条指令的前三步后,直接开始第二条指令的操作,运算单元也是。这样就形成了流水线系统,这是一条2级流水线。
如果是一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第一条指令的取址工作后直接开始第二条指令的取址,这时第一条指令在进行译码,然后第三条指令取址,第二条指令译码,第一条指令取操作数……这样就是一个5级流水线。很显然,5级流水线的平均理论速度是不用流水线的4倍。
流水线系统最大限度地利用了CPU资源,使每个部件在每个时钟周期都工作,大大提高了效率。但是,流水线有两个非常大的问题:相关和转移。
在一个流水线系统中,如果第二条指令需要用到第一条指令的结果,这种情况叫做相关。以上面哪个5级流水线为例,当第二条指令需要取操作数时,第一条指令的运算还没有完成,如果这时第二条指令就去取操作数,就会得到错误的结果。所以,这时整条流水线不得不停顿下来,等待第一条指令的完成。这是很讨厌的问题,特别是对于比较长的流水线,比如20级,这种停顿通常要损失十几个时钟周期。目前解决这个问题的方法是乱序执行。乱序执行的原理是在两条相关指令中插入不相关的指令,使整条流水线顺畅。比如上面的例子中,开始执行第一条指令后直接开始执行第三条指令(假设第三条指令不相关),然后才开始执行第二条指令,这样当第二条指令需要取操作数时第一条指令刚好完成,而且第三条指令也快要完成了,整条流水线不会停顿。当然,流水线的阻塞现象还是不能完全避免的,尤其是当相关指令非常多的时候。
另一个大问题是条件转移。在上面的例子中,如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令?这时就必须等第一条指令的判断结果出来才能执行第二条指令。条件转移所造成的流水线停顿甚至比相关还要严重的多。所以,现在采用分支预测技术来处理转移问题。虽然我们的程序中充满着分支,而且哪一条分支都是有可能的,但大多数情况下总是选择某一分支。比如一个循环的末尾是一个分支,除了最后一次我们需要跳出循环外,其他的时候我们总是选择继续循环这条分支。根据这些原理,分支预测技术可以在没有得到结果之前预测下一条指令是什么,并执行它。现在的分支预测技术能够达到90%以上的正确率,但是,一旦预测错误,CPU仍然不得不清理整条流水线并回到分支点。这将损失大量的时钟周期。所以,进一步提高分支预测的准确率也是正在研究的一个课题。
越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。
■CPU的外核
1、解码器(Decode Unit)
这是x86CPU才有的东西,它的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。好在这些复杂指令很少会用到。
Athlon也好,PIII也好,老式的CISC的x86指令集严重制约了他们的性能表现。
2、一级缓存和二级缓存(Cache)
以及缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核,而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。
出自 http://it.crfly.com/simple/index.php?t53673_3.html