CPU架构及指令集之研究

简介:




这几天一直在搞BLCR,自然对内核接触的也比较多。不仅在OS版本上的不同,如Ubuntu、Fedora、Suse,还有芯片结构,指令集的不同,从AMD到Intel,从32位到64位。这种水平和垂直方向的跨度,也让我有了更全面的认识。研究内核,自然会涉及不同的架构,不同的指令集。通过两篇文章,简单但又综合性的介绍一下相关概念。(资料来源:Google,百度)

第一部分:x86与i386、i486、i586、i686

  1. x86

x86,或80×86是Intel首先开发制造的一种微处理器体系结构的泛称,包括8086、80186、80286、80386以及80486等。 因此其架构被称为“x86”。由于数字并不能作为注册商标,现在Intel把x86-32称为IA-32,即Intel Architecture, 32-bit。

x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。Intel以外最成功的制造商为AMD,其Athlon系列处理器的市场仅次于Pentium。

8086是16位处理器,直到1985年32位的80386的开发,这个架构都维持是16位。接着一系列的处理器表示了32位架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64(有时也被称作x86-64,x64或EM64T),推出了 Opteron处理器家族,开创了x86的64位时代。

值得注意的是Intel早在1990年代就与惠普合作提出了一种用在安腾(Itanium)系列处理器中的独立的64位架构,这种架构被称为IA-64IA-64是一种崭新的系统,和x86架构完全没有相似性,不应该把它与AMD64或x86-64弄混。关于x86-64,IA-64,AMD64等,将在下一篇文章中介绍。

x86是一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X与处理器没有任何关 系,它是一个对所有*86系统的简单的通配符定义,例如:i386, 586,奔腾(Pentium)。

由于早期Intel的CPU编号都是用如8086,80286来编号,这整个系列的CPU都是指令兼容的,所以都用x86来标识所使用的指令集合。如今的奔腾、P2、P4、赛扬系列都是支持x86指令系统的,所以都属于x86家族。目前,也并不都是使用x86系列CPU,部分服务器和苹果 (Macintosh)机中还使用美国DIGITAL(数字)公司的Alpha 61164和PowerPC 604e系列CPU。

i386、i586、i686

Intel 80×86简称为ix86,比如i386、i586、i686等等,指的是适用于Intel i386、i586、i686兼容指令集的微处理器。

一般而言,所有x86处理器都能执行386的指令集,80486处理器当然需要486的优化。Pentium就是586,PentiumPro (P6)之后的统称为686,包含了PentiumPro,PentiumⅡ,PentiumⅢ和P4。
换言之,i386适用于intel和AMD所有32位的CPU,以及采用x86架构的32位CPU。i686只是i386的一个子集,支持的CPU从Pentium 2(686)开始,之前的型号不支持。顺便说一下,x86_64适用于Intel的Core 2 Duo, Centrino Core 2 Duo,Xeon,AMD Athlon64/x2,Sempron64/x2,,Duron64等采用x86架构的64位CPU。

一般来说,等级愈高的机器可接受较低等级的rpm文件。可以通过/proc/cpuinfo这个文档查询CPU等级。

x86体系结构虽然指令都一样,但是不同时代的具体实现,在编译优化上还是有自己的特点,而且后一代往往会多出一些指令,所以编译rpm时,可以针对不同的体系结构作不同的编译选项优化

以上只是对相关概念的简单说明,还有其他更深入的知识,这里就不一一列出。下一篇主要介绍一下64位结构上的x86-64和IA-64。

 

第二部分:x86,x86-64,IA-64

x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。(详见上篇)

x86-64:又简称为x64,最初开发为1999年AMD,也叫做AMD64x64,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被Intel所采用。

IA-64:其实IA-64的历史早于x86-64x,最初由Intel和惠普联合推出。由于IA-64不与32位兼容,所以没有受到重视。直到Intel采用了AMD的x86-64架构,才正式的批量生产。而后为了日益扩张的计算需求,Intel重新将IA-64拿出来,发布了安腾系列服务器CPU。

虽然x86-64和IA-64处理器都能够运行64位操作系统和应用程序,但是区别在于:

  • x86-64架构基于x86,是为了让x86架构CPU兼容64位计算而产生的技术。X86-64架构的设计是采用直接简单的方法将目前的x86指令集扩展。这个方法与当初的由16位扩展至32位的情形很相似。优点在于用户可以自行选择x86平台或x64平台,兼容性高。
  • IA-64则是原生的纯64位计算处理器,并且与x86指令不兼容。如果想要执行x86指令需要硬件虚拟化支持,而且效率不高。优点在于 IA-64架构体系将拥有64位内存寻址能力,能够支持更大的内存寻址空间。并且由于架构的改变,性能比起x86-64的64位兼容模式更高更强

所以,IA-64操作系统也是比较少见的,由于只能在Intel安腾系列处理器及AMD部分服务器处理器运行,所以主流市场并不常见。而且,这些IA-64架构处理器也不能够使用x64操作系统。而x86-64处理器则可以自由选择x86或是x64操作系统。

 

Itanium(官方中文名称为安腾),是 Intel Itanium 架构(通常称之为IA-64)的 64位处理器。Intel 推出了两个 Itanium 的家族:其一是 Itanium,另一个是 Itanium 2。在 2007年 11月1日,Itanium 2 的家族又再一次称为Itanium。该处理器的市场定位是在于企业服务器高效能运算系统。该架构由 HP 创始,后来则是 HP 与 Intel 共同开发。

Itanium的微架构是彻底的不同于其他 Intel 处理器采用的 x86(包含x86-64)架构。这个架构是建基于显性的指令并发,由编译器来决定哪些指令并发处理。这种方式允许处理器在每个周期最多可以运行 6 个指令。与超标量架构的不同点,Itanium在并发处理中并没有复杂的线路来判断指令依赖性,所以编译器必须要在编译的时候就已经处理妥当。

在一系列的拖延开发进度后,第一款 Itanium 于 2001年推出,性能更强的 Itanium 处理器在之后则是有周期性的持续推出。采用 Itanium 处理器的制造商之中,以 HP 的制造量最多。在 2007年,Itanium 在企业界系统采用的架构之中是位于第四名,而前三名则是x86-64IBM POWER 与 SPARC。Intel 推出最新的 Itanium 处理器为 Montvale 核心,于 2007年 11月推出。

 

IBM POWERRISC处理器架构的一种,由IBM设计,全称为“Performance Optimization With Enhanced RISC”,《IBM Connect电子报》2007年8月号译为“增强RISC性能优化”。POWER系列微处理器在不少IBM服务器超级电脑小型电脑工作站中,广泛作为主CPU使用。而PowerPC架构也是源自POWER架构,并应用在苹果电脑麦金塔电脑及部份IBM的工作站,以及各式各样的嵌入式系统上。此外,IBM透过Power.org网站,向其他开发者及制造商推广POWER架构及其他衍生产品。

POWER同样也是一系列实施了同样架构指令集的微处理器的名字。POWER系列微处理器用于IBM的服务器、微电脑、工作站、超级电脑的主处理器。POWER3以及随后的POWER系列微处理器均全部实施了64-bit PowerPC架构。从POWER3开始及其之后的POWER处器都不再具备与支援更早之前的旧POWER的指令集架构(Instruction Set Architecture,ISA),包括PowerPC指令集架构或任何POWER2所追加延伸的指令,如lfq或stfq等,都不再具备与支援。

 

SPARC,全称为“可扩充处理器架构”(Scalable Processor ARChitecture),是RISC微处理器架构之一。它最早于1985年太阳微系统所设计,也是SPARC国际公司的注册商标之一。这家公司于1989年成立,其目的是向外界推广SPARC,以及为该架构进行符合性测试。此外该公司为了扩阔SPARC设计的生态系统,SPARC国际也把标准开放,并授权予多间生产商采用,包括德州仪器、Cypress半导体、富士通等。由于SPARC架构也对外完全开放,因此也出现了完全开放源代码LEON处理器,这款处理器以VHDL语言写成,并采用LGPL授权。

SPARC架构原设计给工作站使用,及后应用在升阳、富士通等制造的大型SMP服务器上。而升阳开发的Solaris操作系统也是为SPARC设计的系统之一,除Solaris外,NeXTSTEPLinuxFreeBSDOpenBSDNetBSD系统也提供SPARC版本。

现时最新版本的SPARC为第8及第9版,在2005年12月,升阳方面宣布其UltraSPARC T1处理器将采用开放源代码方式。2006年4月12日太阳微系统宣布完整的UltraSPARC T2处理器已经进行试产















本文转自cnn23711151CTO博客,原文链接: http://blog.51cto.com/cnn237111/527310,如需转载请自行联系原作者






相关文章
|
30天前
|
存储 人工智能 并行计算
计算机架构:漫游CPU的奥秘世界(二)
计算机架构:漫游CPU的奥秘世界
49 0
|
30天前
|
存储 人工智能 缓存
计算机架构:漫游CPU的奥秘世界(一)
计算机架构:漫游CPU的奥秘世界
60 0
|
2月前
|
存储 缓存 Linux
CPU高速缓存架构
CPU高速缓存架构
|
3月前
|
存储 Java 程序员
cpu与指令集
cpu与指令集
28 0
|
3月前
|
缓存 机器人 芯片
CPU_X86架构和ARM架构入门篇
CPU_X86架构和ARM架构入门篇
82 0
|
4月前
|
XML Java API
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
39 0
|
4月前
|
存储 编译器 数据处理
CPU架构和指令集
不同的CPU架构通常使用不同的指令集。每种CPU架构都有其自己的一组特定的机器指令,这些指令用于执行计算机程序。不同的CPU架构之间的指令集是不兼容的,这意味着编写的程序通常需要根据目标CPU的架构进行编译或汇编,以确保它们能够在该CPU上正确运行。 一些常见的CPU架构包括:
|
5月前
|
NoSQL Shell Linux
跨cpu架构部署容器技术点:怎么将容器启动时的1号进程挂载到systemctl
--privileged=true:是Docker中的一个参数,用于授予容器的特权权限。当一个容器被设置为特权容器时,它将拥有与主机操作系统相同的权限,可以执行一些高级操作,如访问主机设备、加载内核模块等。
44 0
|
11天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
18 0
|
10天前
|
Kubernetes 安全 Java
构建高效微服务架构:从理论到实践
【4月更文挑战第9天】 在当今快速迭代与竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性及容错性,成为众多企业转型的首选。本文将深入探讨如何从零开始构建一个高效的微服务系统,覆盖从概念理解、设计原则、技术选型到部署维护的各个阶段。通过实际案例分析与最佳实践分享,旨在为后端工程师提供一套全面的微服务构建指南,帮助读者在面对复杂系统设计时能够做出明智的决策,并提升系统的可靠性与维护效率。