服务器和普通电脑在硬件配置上的区别是什么?

服务器和普通电脑在硬件配置上的区别是什么?,第1张

服务器和普通电脑在硬件配置上的区别是什么

首先从主板开始说 主板是分层的 服务器的主板用的多层的 质量要好很多不容易老化 cpu方面首先服务器的cpu是不要求超频的 因为服务器要求最高的就是要稳定 超频会导致内部数据与外部数据不统一 服务器不像普通电脑作为终端 所以必须要求数据统一 服务器的cpu一般用志强系列的 服务器的主板支持多cpu分担 相对于周边的接口也比较多 比如说硬盘线口 pci--e插口

服务器的硬件配置和普通电脑有什么区别

CPU:Pc的CPU应用环境一般是解决单个任务,而服务器面向的应用则是数十甚至数百用户同时发出请求时,系统能从容地处理这些任务,所以系统内部的多线程运算能力和交换速度就会起到至关重要的作用。
内存:服务器使用的内存要求很严格,必须是具有ECC功能的DRAM、SDRAM或DDRRAM。普通PC由于数据流量小,运算时间短,所以对系统的ECC功能并不十分要求。
硬盘:一般采用SCSI高速硬盘,高档服务器上的硬盘还具备热插拔功能,以便在线更换。

专用的服务器和普通电脑区别是什么

一、高扩展性
可扩展性是指服务器的配置(内存、硬盘、处理器等)可以在原有基础上很方便地根据需要增加。
为了实现扩展性,服务器的机箱一般都比普通的机箱大一倍以上。设计大机箱的原因有两个:一是机箱内部通风良好;二是机箱设有七八个硬盘托架,可以放置更多硬盘。
服务器的电源输出功率比普通PC大得多,甚至有冗余电源(即两个电源)。机箱电源的D型电源接口有十几个之多,普通PC的机箱只有五六个。
服务器的内存在可以根据需要扩展,一般可以扩展到几GB
二、高可靠性
因为服务器在网络中是连续不断地工作的,因此,服务器的可靠性要求是非常高的,目前,提高可靠性的普通做法是部件的冗条配置。服务器可采用ECC内存、RAID技术、热插拨技术、冗余电源、冗余风扇等做法使服务器具备(支持热插拨功能)容错能力和安全保护能力,从而提高可靠性
硬件的冗余设备支持热插拨功能,如冗余电源风扇等,可以在单个部件夹效的情况下自动切换到备用的设备上,保证系统运行的连续性。RAID技术可保证硬盘在出现问题时在线切换,从而保证了数据的完整性。
三、高处理能力
服务器可能需要同响应数十、数百、数千台客户机的请求,因此,服务器的速度应该比普通的PC快。
决定CPU性能的因素有很多,CPU只是其中一个因素,其它,如硬盘的速度、内存的大小、网卡的数据吞吐能力等,都是制约服务器性能的重要因素。
四、高I/O性能
SCSI技术、RAID技术、高速智能网卡、较大的内存扩充能力都是提高IA架构服务器的I/O能力的有效途径。
五、高无故障运行时间
一般来说,工作服务器的要求是工作时间内(每天8小时,每周5天)没有故障;部门级服务器的要求是每天24小时,每周5天内没有故障;企业服务器要求全年365天,每天24小时都没有故障,服务器随时可用,简称为7x24。
六、高强管理性
IA架构服务器主板上集成了各种传感器,用于检测服务器上的各种硬件设备。配合相应软件,可以远程监测服务器。
七、运行服务器 *** 作系统
服务器是硬件与软件相结合的系统虽然在一台普通PC上安装网络 *** 作系统,也可以称之为服务器,但这台服务器不具备真正服务器的特性。
八、提供网络服务
已经具备了相应硬件平台和 *** 作系统的服务器还不能发挥它的作用。如果要发挥它的作用,必须在网络服务器上安装网络服务软件。

服务器和普通电脑的区别

你可以这样理解
服务器就是计算机群组
服务器相当于N多台电脑

服务器 专门提供网络服务的,如 或者 ftp 等等

普通电脑 一般是 Desk 桌面型的,工作电脑

服务器和普通PC上的区别

服务器与PC的区别应该从硬件和软件两方面来看,根据应用的不同两者的差别很大,打个比方,PC就是那什么都会的门诊医生,但是医术不是那么精湛,而服务器就应该是某个方面的专家了,处理能力越出
众,它“专”的就越厉害。我先从硬件上,根据各个组件说说他们的不同:
1CPU 服务器CPU的指令一般是采用的RISC(精简指令集)。根据研究,在大多数的应用中,CPU仅仅使用了很少的几种命令,于是研究人员就根据这种情况设计了该指令集,运用集中的各种命令组合来实现各种需求。这种设计的好处就是针对性更强,可以根据不同的需求进行专门的优化,处理效更高。相对应的则是CISC(复杂指令集),他的特点就是尽量把各种常用的功能集成到一块,例如我们常常听到的MMX,SSE,SSE+,3D!NOW!等等都是这种类型的。另外,服务器的CPU设计一般都要考虑它的多路功能,说白了就是好几个甚至上千上万个CPU一起工作的问题,而PC则简单多了,这种多路功能用上实在浪费,而它的价钱也的确是上面兄弟说的,不是谁都能受的了的。(补充:服务器的寻址能力很早前就是64位了;APPEL采用的指令集也是RISC,他是个另类,不过现在已经投靠INTEL了)2内存。内存在服务器上的原则也上越快越大越好,不过它对纠错和稳定提出了更高的要求,比如ECC("错误检查和纠正"好象没人这么叫的)。我们现在使用的PC上很少有人能够用到1G的内存(玩游戏的不算),而在服务器上,这G级的内存有时也会显着捉襟见肘,记得去年国家发布银河最新超级计算机时,他的内存更是达到了1个T;相比内存的速度,人们在应用的时候更优先考虑内存的稳定和纠错能力,只有在保证了这两条,才能再考虑别的东西。
3硬盘。硬盘性能无论是在PC上还是服务器上,性能的提升一直很缓慢,个人认为,依靠机械的发展,硬盘的发展是不可能出现质的飞跃。由于使用服务器的一般都是企业单位,里面都是保存了大量珍贵数据,这对硬盘就提出了安全稳定的要求,硬盘上出现的相关技术也基本上围绕这两个要求转。比如:数据冗余备份,热插拔等。另外,服务器硬盘必须能做到247不间断工作的要求。
4主板这个我了解的比较少,很少看到服务器有主板的说法,不过我觉得应该提提服务器的总线设计——多路,就是多个CPU如何能够协调工作。有兴趣建议你看看 *** 作系统方面的书,看老外写的,很好!
5显卡除了图形和3D设计(那个人家好象都叫工作站,哪位达人知道请告诉我对不对),服务器上的显卡基本上就是你只要能接上显示器能显示就行!
接下来我说说软件,软件就主要指 *** 作系统,比如我们熟悉的NT,2000 SERVER,2003 SERVER,LINUX,SOLRAIS和UNIX等等,都是专门针对服务器设计的,比如:负载均衡,多路CPU的支持。

服务器与普通电脑之间的区别是什么

1 稳定性:服务器要求7x24(x365)不间断运行,PC只需要5x8;
2 性能:服务器需要及时响应众多客户端的请求,并提供相应服务,PC一般只由少数人 *** 作;
尤其是网络性能,对PC来讲如果不联网,没有网卡,PC仍是PC,而对服务器来讲没有网卡就不是服务器了,因为,服务器的定义就是在网络中给其它计算机提供服务的计算机系统。
3 扩展性:PC一般不需要很多外插卡,对扩展性要求不高,而服务器一般需要考虑增加网卡、RAID卡、HBA卡等;另外,扩展性还包括,内存、硬盘等存储位、电源,甚至是CPU的扩展,这些更是服务器的特性;
4 网络中的角色:用户直接 *** 作PC进行,发出服务请求,是客户端;服务器工作在后台,只和发出服务请求的客户机进行通信,是服务提供者;
5 多机协同:服务器可由多台构成一个集群,共同提供服务,PC往往独立工作;
6 图形显示、键盘和鼠标的要求:普通台式机和显示器、键鼠等都是一对一的,而且,一般对显卡性能有要求,服务器不直接和用户交互对显卡性能基本无要求,一般键盘鼠标显示器是多台共用的。
希望能帮到你

我们平常所听说的服务器,有的是从软件服务的角度说的,有的是指的真正的硬件服务器。比如我们说配置一个 Web 服务器,就是指在 *** 作系统里实现网站信息发布和交互的一个服务,只要机器能跑 *** 作系统,这个服务器就能在这台机器上实现。有时在要求不高的情况下,我们也确实是用普通 PC 来做硬件服务器用的。有人可能要说了,我们既然能用普通 PC 来做硬件服务器用,那为什么还要花那么多钱买硬件服务器呢? 其实,在硬件服务器和普通 PC 之间存在着很大的不同!任何产品的功能、性能差异,都是为了满足用户的需求而产生的。 硬件服务器的没工作环境需要它长时间、高速、可靠的运行,不能轻易断电、关机、停止服务,即使发生故障,也必须能很快恢复。所以服务器在设计时,必须考虑整个硬件架构的高效、稳定性,比如总线的速度,能安装多个 CPU,能安装大容量的内存,支持 SCSI 高速硬盘及 Raid,支持阵列卡,支持光网卡,能支持多个 USB 设备。有的服务器设计有双电源,能防止电源损坏引起的当机。 服务器的维护和我们普通的 PC 也不相同。服务器的生产厂家都是国际上大的计算机厂家,他们对服务器都做了个性化设计,比如服务器的硬件状态指示灯,只要观察一下灯光的颜色就能判断故障的部位。比如 BIOS,里面的程序功能要比 PC 完善的多,可以保存硬件的活动日志,以利于诊断故障、消除故障隐患。有的厂家的服务器在拆机维修时,根本不需要螺丝刀,所有配件都是用塑料卡件固定的。 稍微好点的服务器一般都需要配接外部的存储设备,比如盘阵和 SAN 等,服务器都有管理外部存储的能力,以保证数据安全和可靠、稳定的协同工作。 为了提高服务器的可用性和可靠性,服务器还需要支持集群技术,就是多台机器协同工作,提供负载均衡,只要其中有一台服务器正常,服务就不会停止! 服务器的功能还有很多!这些都是它比普通 PC 好的地方,好的东西它的设计和生产就需要消耗技术和生产成本,价格自然就高。 再说到前面的软件服务器和硬件服务器 2 个概念,自然用真正的硬件服务器来提供我们的软件服务才是最合适的,才能真正发挥服务的最大性能。哈哈~~ 以后买服务器不要可惜小钱了吧? 专业做效果图的简称图型工作站。“图形工作站”是一种专业从事图形、图像(静态)、图像(动态)与视频工作的高档次专用电脑的总称。从工作站的用途来看,无论是三维动画、数据可视化处理乃至cad/cam和eda,都要求系统具有很强的图形处理能力,从这个意义上来说,可以认为大部分工作站都用作图形工作站。当然图型工作站需要性能比较强悍的电脑来完成任务。显卡、CPU和内存一样都不能差。至于你说的高配这个东西真给不出具体的参数,要看你来完成那些工作的。可以流畅快地完成你的专业制作我觉得就可以了,没有盲目追求高配置的必要。

VPS服务器和普通电脑有什么区别?

1、VPS主机是介于虚拟主机和独立服务器之间的折中方案。
2、 VPS服务器还是和其他用户分享服务器资源,比如CPU和内存,但文件系统是完全分开的。也就是说从文件系统角度看,VPS用户完全独立,看不到这台机器的其他用户。对VPS用户来说,其功能和使用方法与真正的整体租用是完全一样的。
3、 同时,CPU、内存和其他服务器资源的划分方法与虚拟主机不同,各个VPS主机用户有自己固定的CPU、内存和其他资源,互不干扰。也就是说,VPS上的任何一个用户只能使用划分给自己的那部分资源,而不会用完整台服务器的资源,也就不会影响其他用户。
4、vps是属于服务器,而普通电脑则是针对个人用户。

同配置的服务器和普通电脑哪个性能更好

首先 服务器 的主要作用是处理数据, 它不需要渲染
所以 一般服务器 都是 多核 低频 CPU,很多的CPU 组成一个服务器。
家用普通电脑 要兼顾 影音娱乐, 需要渲染 高频的CPU。
还要用显卡来加速 渲染。
所以 你说的性能 主要是干嘛。

主板:分为家用和军用(服务器)家用主板电压较小主板面积较小只有硬盘接口和内存条接口以及CPU接口其他另算而军用主板特别的大用处理频率可以达到100ghz接口繁多光CPU接口就有几个或者几十个甚至几百个。
内存条:家用最高才16g开个双通道32g为目前最好的一个内存条频率才1666MB而服务器则有1024g一条的可以插十条不止使用频率特别高。再就是服务器不接显示器

接口类型,是根据内存条金手指上导电触片的数量来划分的。金手指上的导电触片,也习惯称为针脚数(Pin)。因为不同的内存采用的接口类型各不相同,而每种接口类型所采用的针脚数各不相同。下面就让我带你去看看关于内存条的基础知识吧,希望能帮助到大家!

内存知识 详解:接口类型

1、金手指

金手指(connecting finger)是内存条上与内存插槽之间的连接部件,所有的信号都是通过金手指进行传送的。金手指由众多金的导电触片组成,因其表面镀金而且导电触片排列如手指状,所以称为“金手指”。金手指实际上是在覆铜板上通过特殊工艺再覆上一层金,因为金的抗氧化性极强,而且传导性也很强。不过,因为金昂贵的价格,目前较多的内存都采用镀锡来代替。从上个世纪 90 年代开始,锡材料就开始普及,目前主板、内存和显卡等设备的“金手指”,几乎都是采用的锡材料,只有部分高性能服务器/工作站的配件接触点,才会继续采用镀金的做法,价格自然不菲。

内存的金手指

内存处理单元的所有数据流、电子流,正是通过金手指与内存插槽的接触与 PC 系统进行交换,是内存的输出输入端口。因此,其制作工艺,对于内存连接显得相当重要。

2、内存插槽

最初的计算机系统,通过单独的芯片安装内存,那时内存芯片都采用 DIP(Dual ln-line Package,双列直插式封装)封装,DIP 芯片是通过安装在插在总线插槽里的内存卡与系统连接,此时还没有正式的内存插槽。DIP 芯片有个最大的问题,就在于安装起来很麻烦,而且随着时间的增加,由于系统温度的反复变化,它会逐渐从插槽里偏移出来。随着每日频繁的计算机启动和关闭,芯片不断被加热和冷却,慢慢地芯片会偏离出插槽。最终导致接触不好,产生内存错误。

内存插槽

早期还有另外一种 方法 ,是把内存芯片直接焊接在主板或扩展卡里,这样有效避免了 DIP 芯片偏离的问题,但无法再对内存容量进行扩展,而且如果一个芯片发生损坏,整个系统都将不能使用,只能重新焊接一个芯片或更换包含坏芯片的主板。此种方法付出的代价较大,也极为不便。

对于内存存储器,大多数现代的系统,都已采用单列直插内存模块(Single Inline Memory Module,SIMM)或双列直插内存模块(Dual Inline Memory Module,DIMM)来替代单个内存芯片。这些小板卡插入到主板或内存卡上的特殊连接器里。

3、内存模块

1) SIMM

SIMM(Single Inline Memory Module,单列直插内存模块)。内存条通过金手指与主板连接,内存条正反两面都带有金手指。金手指可以在两面提供不同的信号,也可以提供相同的信号。SIMM 就是一种两侧金手指都提供相同信号的内存结构,它多用于早期的 FPM 和 EDD DRAM,最初一次只能传输 8bif 数据,后来逐渐发展出 16bit、32bit 的 SIMM 模组。其中,8bit 和 16bit SIMM 使用 30pin 接口,32bit 的则使用72pin 接口。在内存发展进入 SDRAM 时代后,SIMM 逐渐被 DIMM 技术取代。

2) DIMM

DIMM(Dual Inline Memory Module,双列直插内存模块)。与 SIMM 相当类似,不同的只是 DIMM 的金手指两端,不像 SIMM 那样是互通的,它们各自独立传输信号。因此,可以满足更多数据信号的传送需要。同样采用 DIMM,SDRAM 的接口与 DDR 内存的接口也略有不同,SDRAMDIMM 为 168Pin DIMM 结构,金手指每面为 84Pin,金手指上有两个卡口,用来避免插入插槽时,错误将内存反向插入而导致烧毁;

DDR DIMM则采用 184Pin DIMM 结构,金手指每面有 92Pin,金手指上只有一个卡口。卡口数量的不同,是二者最为明显的区别。DDR2 DIMM 为240pinDIMM 结构,金手指每面有 120Pin,与 DDR DIMM 一样金手指一样,也只有一个卡口,但是卡口的位置与 DDR DIMM 稍微有一些不同。因此,DDR 内存是插不进 DDR2 DIMM 的,同理 DDR2 内存也是插不进 DDR DIMM 的。因此,在一些同时具有 DDR DIMM 和 DDR2 DIMM 的主板上,不会出现将内存插错插槽的问题。

不同针脚 DIMM 接口对比。为了满足 笔记本 电脑对内存尺寸的要求,SO-DIMM(Small Outline DIMM Module)也开发了出来,它的尺寸比标准的 DIMM 要小很多,而且引脚数也不相同。同样 SO-DIMM 也根据 SDRAM 和 DDR 内存规格不同而不同。SDRAM 的 SO-DIMM 只有 144pin引脚,而DDR 的 SO-DIMM 拥有 200pin 引脚。此外,笔记本内存还有 MicroDIMM 和 Mini Registered DIMM 两种接口。MicroDIMM 接口的DDR 为 172pin,DDR2 为 214pin;Mini Registered DIMM 接口为 244pin,主要用于 DDR2 内存。

3) RIMM

RIMM(Rambus Inline Memory Module)是 Rambus 公司生产的 RDRAM 内存所采用的接口类型。RIMM 内存与 DIMM 的外型尺寸差不多,金手指同样也是双面的。RIMM 有也 184 Pin 的针脚,在金手指的中间部分有两个靠的很近的卡口。RIMM 非 ECC 版有 16 位数据宽度,ECC 版则都是 18 位宽。由于 RDRAM 内存较高的价格,此类内存在 DIY 市场很少见到,RIMM 接口也就难得一见了。

基础知识(入门篇)

关于01

我们初学编程时,只知道编写代码,运行程序,却不知道程序是在什么的基础上运行的。只知道声明变量,给变量赋值,数据存储在变量中,却不知道变量是以什么形式存在。

《内存》可以参考《计算机组成原理》和《微机原理》书籍,而作为信息学奥赛的同学们,只需了解《内存》的一些基础知识即可,不必深究。

关于《计算机组成原理》,可参考 文章 :

计算机组成原理(入门篇)

目录02

1、内存的内部结构

2、数据是如何存储在内存中

3、数据在内存中的表现形式

4、存储单元的大小

5、如何从内存中寻找指定的数据(内存地址)

概要03

本篇主要讲解有关《内存》的基础知识,有助于自己在编程上的进一步提升。

为什么学习《内存》的知识可以提升自己对编程进一步的认识呢

其实,我们学习信奥(C/C++)时,一般只是学习C/C++的相关语法。当我们练习多了,可以熟练地运用各种语法。我们也知道如何将1+1赋给一个int类型变量,也知道不能把整数1赋给string类型变量(对象)。但是1+1赋值 *** 作在内存中是如何实现的呢为什么浮点型存在误差为什么int类型与string类型不能直接赋值 *** 作

我们只知道编写的程序在内存中运行,却不知道数据在内存中是如何存储的。就好比只看到书籍的封面,但不知道书中的内容。

要求04

在学习《内存》之前,我们只需掌握C/C++一些基础知识,可以独立解决一些简单的问题即可。

内存的内部结构

对于信息学奥赛的同学们来说,《内存》这一概念比较抽象。不过,经过阅读文章《计算机组成原理(入门篇)》后,相信同学们对内存的概念清晰了不少,至少知道内存是用来存储程序运行的相关数据。

常用数据一般存储在硬盘中,如果对这些数据进行处理(例如使用Word写一篇文章),并不是CPU直接对硬盘的文件进行 *** 作,而是从硬盘相对应的位置把该文件的数据读取到内存中,CPU再对内存中的数据进行处理。简单地说,《内存》是CPU与硬盘进行沟通的“桥梁”。当然,并不一定是硬盘,平时存储数据的设备还有U盘等,统称为外存。

《内存》内部由数以亿计的纳米级电子元件构成。

如上图,内存条由存储芯片、金手指、电路组成。

存储芯片:黑色的方块。每个方块由很多的晶体管组成,可以理解为数据就存储在晶体管中。

金手指:底部的金色金属片。内存条插在主板的内存条插槽中,实际上与插槽接触的部位就是金手指。如此一来,CPU就可以通过主板与内存进行通信。

电路:绿色面板。面板中有许多细微的线路和电阻等电子元件,用于数据的传输。

数据是如何存储在内存中

家里控制电灯的开关,电脑的开关。存储芯片中的晶体管也是如此。程序运行的数据存储在晶体管中。

如上图,每个方格代表一个晶体管。

如下图,每个晶体管都有独立的开关,通电时开,断电时关。此处用白色表示开,黑色表示关。

一个数值并不是只存储在一个晶体管中,是多个晶体管。而多个晶体管构成一个存储单元。

存储单元的大小

存储单元有大小,而一个存储单元的大小是8位(bit)。

内存中常用的存储单位是:位(bit)、字节(Byte)。

1字节=8位

那么一个存储单元也是1字节。

关于《存储单位》的相关知识,会以一篇独立的文章详细讲解。

数据在内存中的表现形式

数据在内存中是以二进制的形式存储。

十进制是由0~9组成,而二进制是由0和1组成。

如上图,这是一个存储单元(8bit),有8个格子,一个格子表示1bit。而每一个格子的值要么0,要么为1。其中,白色表示开,黑色表示关,一般用1和0分别表示开和关。那么用二进制表示是01101001,转换为十进制的值是105,所以该存储单元存储的值就是105。

关于《进制》的相关知识,会以一篇独立的文章详细讲解。

此处只讲解数字数据,其他数据的表现形式很复杂。

如何从内存中寻找指定的数据(内存地址)

先举个例子:

如上图,有几栋楼房,我们都知道,每一栋楼都有一个具体的地址,而一栋楼的每家每户都有各自的房号,从而组成一个完整的地址。而我们的个人居民身份z就有一个详细地址。

居民身份z除了有地址外,还有身份z号码,每一个号码都是唯一。

如何从内存中寻找指定的数据

内存中的存储单元就像人一样,都有着独一无二的“身份z号码”,就是地址。比如警察叔叔根据身份z号码就能查到对应的个人信息。

再举个例子:

如上图,这是一个书柜,又分成若干个小柜子,现对每个小柜子进行分类放置书籍并设置标签。我们要寻找某一本书时,根据标签就可以轻松找到。程序运行时也是一样,知道要在什么地址进行数据的读写 *** 作。

其他疑问

为什么要分十进制而二进制

简单说,十进制是给人用的,而二进制是给机器用的。

数据有数字、字母、符号、声音、图像等等。数据是以二进制的形式存储在内存中。

内存数据输出到 显示器 时,为什么可以显示我们人类能看懂的信息

内存中的数据是经过转换处理后,我们才能看懂。我们所看到的数据(例如一篇文章、一张照片、一部),它们的本质还是二进制。

你不知道的内存知识

一、CPU与内存

先铺垫几个概念,以免后面混乱:

Socket或Processor: 指一个物理CPU芯片,盒装还是散装的。上面有很多针脚,直接安装在主板上。

Core : 指在Processor里封装一个CPU核心,每个Core都是完全独立的计算单元,我们平时说的4核心CPU,指的就是Processor里面封装了4个Core。

HT超线程:目前Intel与AMD的Processor大多支持在一个Core里并行执行两个线程,此时从 *** 作系统 看就相当于两个逻辑CPU(Logical Processor)。大多数情况下,我们程序里提到的CPU概念就是指的这个Logical Processor。

咱们先来看几个问题:

1、CPU可以直接 *** 作内存吗

可能一大部分老铁肯定会说:肯定的啊,不能 *** 作内存怎么读取数据呢。

其实如果我们用这聪明的大脑想一想,咱们的台式主机大家肯定都玩过。上面CPU和内存条是两个完全独立的硬件啊,而且CPU也没有任何直接插槽用于挂载内存条的。

也就是说,CPU和内存条是物理隔离的,CPU并不能直接的访问内存条,而是需要借助主板上的其他硬件间接的来实现访问。

2、CPU的运算速度和内存条的访问速度差距有多大

呵呵呵,这么说吧,就是一个鸿沟啊,CPU的运算速度与内存访问速度之间的差距是100倍。

而由于CPU与内存之间的速度差存在N个数量级的巨大鸿沟,于是CPU最亲密的小伙伴Cache 闪亮登场了。与DRAM 家族的内存(Memory)不同,Cache来自SRAM家族。

而DRAM与SRAM的最简单区别就是后者特别快,容量特别小,电路结构非常复杂,造价特别高。

而Cache与主内存之间的巨大性能差距主要还是工作原理与结构不同:

DRAM存储一位数据只需要一个电容加一个晶体管,SRAM则需要6个晶体管。

由于DRAM的数据其实是被保存在电容里的,所以每次读写过程中的充放电环节也导致了DRAM读写数据有一个延时的问题,这个延时通常为十几到几十ns。

内存可以被看作一个二维数组,每个存储单元都有其行地址和列地址。

由于SRAM的容量很小,所以存储单元的地址(行与列)比较短,可以被一次性传输到SRAM中。DRAM则需要分别传送行与列的地址。

SRAM的频率基本与CPU的频率保持一致,而DRAM的频率直到DDR4以后才开始接近CPU的频率。

3、Cache 是怎么使用的

其实Cache 是被集成到CPU内部的一个存储单元(平时也被我们称为高速缓存),由于其造价昂贵,并且存储容量远远不能满足CPU大量、高速存取的需求。

所以出于对成本的控制,在现实中往往采用金字塔形的多级Cache体系来实现最佳缓存效果。

于是出现了,一级Cache(L1 Cache)、二级Cache(L2 Cache)及三级Cache(L3 Cache)。每一级都牺牲了部分性能指标来换取更大的容量,目的也是存储更多的 热点 数据。

以Intel家族Intel SandyBridge架构的CPU为例:

L1 Cache容量为64KB,访问速度为1ns左右

L2Cache容量扩大4倍,达到256KB,访问速度则降低到3ns左右

L3 Cache的容量则扩大512倍,达到32MB,访问速度也下降到12ns左右(也比访问主存的105ns(40ns+65ns)快一个数量级)

L3 Cache是被一个Socket上的所有CPU Core共享的,其实最早的L3 Cache被应用在AMD发布的K6-III处理器上,当时的L3 Cache受限于制造工艺,并没有被集成到CPU内部,而是被集成在主板上,如图:

从上图我们也能看出来,CPU如果要访问内存中的数据,则需要经过L1、L2、L3三道关卡,就是这三个Cache中都没有需要的数据,才会从主内存中直接进行读取。

最后我们来看下Intel Sandy Bridge CPU的架构图:

二、多核CPU与内存共享的问题

问题:Cache一致性问题

多核CPU共享内存的问题也被称为Cache一致性问题。

其实就是多个CPU核心看到的Cache数据应该是一致的,在某个数据被某个CPU写入自己的Cache(L1 Cache)以后,其他CPU都应该能看到相同的Cache数据。

如果在自己的Cache中有旧数据,则抛弃旧数据。

考虑到每个CPU都有自己内部独占的Cache,所以这个问题与分布式Cache保持同步的问题是同一类问题

目前业界公认的解决一致性问题的最佳方案就是Intel 的MESI协议了,大多数SMP架构都采用了这一方案。

解决方案:MESI

不知道大家还记得Cache Line 吗,就是我们常说的高速缓存中缓存条目里面的那个缓存行。

其实仔细想想,在进行I/O *** 作从来不以字节为单位,而是以块为单位,有两个原因:

I/O *** 作比较慢,所以读一个字节与读连续N个字节的花费时间基本相同

数据访问一般都具有空间连续的特征

所以CPU针对Memory的读写也采用了类似于I/O块的方式

实际上,CPU Cache(高速缓存)里最小的存储单元就是Cache line(缓存行),Intel CPU 的一个Cache Line存储64个字节。

每一级Cache都被划分为很多组Cache Line,典型的情况就是4条Cache Line为一组。

当Cache从Memory中加载数据时,一次加载一条Cache Line的数据

如图我们可以看到,每个Cache Line 头部都有两个Bit来标识自身状态,总共四种:

M(Modified):修改状态,在其他CPU上没有数据的副本,并且在本CPU上被修改过,与存储器中的数据不一致,最终必然会引发系统总线的写指令,将Cache Line中的数据写回Memory中。

E(E__clusive):独占状态,表示当前Cache Line中的数据与Memory中的数据一致,此外,在其他CPU上没有数据的副本。

S(Shared):共享状态,表示Cache Line中的数据与Memory中的数据一致,而且当前CPU至少在其他某个CPU中有副本。

I(Invalid):无效状态,在当前Cache Line中没有有效数据或者该Cache Line数据已经失效,不能再用;当Cache要加载新数据时,优先选择此状态的Cache Line,此外,Cache Line的初始状态也是I状态

在对Cache(高速缓存)的读写 *** 作引发了Cache Line(缓存行)的状态变化,因而可以将其理解为一种状态机模型。

但MESI的复杂和独特之处在于状态有两种视角:

一种是当前读写 *** 作(Local Read/Write)所在CPU看到的自身的Cache Line状态及其他CPU上对应的Cache Line状态

另一种是一个CPU上的Cache Line状态的变迁会导致其他CPU上对应的Cache Line状态变迁。

如下所示为MESI协议的状态转换图:

具体MESI的实现过程可以看我另一篇文章:看懂这篇,才能说了解并发底层技术

深入理解不一致性内存

MESI协议解决了多核CPU下的Cache一致性问题,因而成为SMP架构的唯一选择,而SMP架构近几年迅速在PC领域(__86)发展。

SMP架构是一种平行的架构,所有CPU Core都被连接到一个内存总线上,它们平等访问内存,同时整个内存是统一结构、统一寻址的。

如下所示给出了SMP架构的示意图:

随着CPU核心数量的不断增加,SMP架构也暴露出天生的短板,其根本瓶颈是共享内存总线的带宽无法满足CPU数量的增加,同时,在一条“马路”上通行的“车”多了,难免会陷入“拥堵模式”。

不知道你是否听说过总线风暴,可以看下:总线风暴

在这种情况下,分布式解决方案应运而生,系统的内存与CPU进行分割并捆绑在一起,形成多个独立的子系统,这些子系统之间高速互联,这就是NUMA(None Uniform Memory Architecture)架构,如下图所示。

可以看出,NUMA架构中的内存被分割为独立的几块,被不同CPU私有化了。

因此在CPU访问自家内存的时候会非常快,在访问其他CPU控制的内存数据时,则需要通过内部互联通道访问。

NUMA架构的优点就是其伸缩性,就算扩展到几百个CPU也不会导致性严重的下降。

NUMA技术的特点

在NUMA架构中引入了一个重要的新名词——Node

一个Node由一个或者多个Socket Socket组成,即物理上的一个或多个CPU芯片组成一个逻辑上的Node

我们来看一个Dell PowerEdge系列服务器的NUMA的架构图:

从上图可以看出其特点:

4个处理器形成4个独立的NUMA Node由于每个Node都为8 Core,支持双线程

每个Node里的Logic CPU数量都为16个,占每个Node分配系统总内存的1/4

每个Node之间都通过Intel QPI(QuickPath Interconnect)技术形成了点到点的全互联处理器系统

NUMA这种基于点到点的全互联处理器系统与传统的基于共享总线的处理器系统的SMP还是有巨大差异的。

在这种情况下无法通过嗅探总线的方式来实现Cache一致性,因此为了实现NUMA架构下的Cache一致性,Intel引入了MESI协议的一个扩展协议——MESIF

针对NUMA的支持

NUMA架构打破了传统的“全局内存”概念,目前还没有任意一种编程语言从内存模型上支持它,当前也很难开发适应NUMA的软件。

Java在支持NUMA的系统里,可以开启基于NUMA的内存分配方案,使得当前线程所需的内存从对应的Node上分配,从而大大加快对象的创建过程

在大数据领域,NUMA系统正发挥着越来越强大的作用,SAP的高端大数据系统HANA被SGI在其UV NUMA Systems上实现了良好的水平扩展

在云计算与虚拟化方面,OpenStack与VMware已经支持基于NUMA技术的虚机分配能力,使得不同的虚机运行在不同的Core上,同时虚机的内存不会跨越多个NUMA Node

当然,如果你的内存插槽只有两条,那颜色就是一样的,如果是四条,你会发现有两种颜色,颜色相同的就是双通道构成的两个插槽,如果你有两根容量相同的最好是一个牌子的内存条,就可以插入颜色相同的插槽构成双通道,如果你只有一根内存条,那就随便插什么颜色的插槽了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13403216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存