西西河

主题:【原创】揭开64位的面纱,让你一次看个够!(Rated R) -- Highway

共:💬12 🌺20 新:
全看树展主题 · 分页
家园 【原创】揭开64位的面纱,让你一次看个够!(Rated R)

64位不是什么新技术。很多年以前,Unix的高档服务器上已经开始采用64位技术了。比如当时大名鼎鼎的Digital Alpha CPU上运行的Digital Unix。但是那时候我们还在386的世界里徜徉,64位还是遥不可及的东西,没人在乎它。64位开始进入大家的视野也就是近一两年的事情。64位的硬件平台价格不断地下跌,已经降到了1000美元以下(比如我现在使用的这台Compaq笔记本就是64位的AMD CPU,价格只要1000多一些),可以进入寻常百姓家了。在软件方面,微软的64位Windows XP已经推出了。一时间好多朋友开始问这样的问题:“我需要转移到64位平台上吗?” (实际上,64位的Linux已经存在了很长时间了,但对于绝大多数用户来说,Windows的64为版本推出才算是用户级64位的开始)

“64位到底是啥玩意儿?32位怎么了,干吗要蹦出来个64位?我升级上去有什么好处?” 我想这是大家对于64位技术的几个最寻常的问题,在这里,我且试着给大家回答一下。大家要使觉得有那么一丁点儿帮助,那就狠狠地夸我几句,我顶得住!!!

走在计算机应用前列的人们脑袋已经撞倒了32位技术的天花板上。32位已经不能满足他们的需要了。所以从32位到64位是计算机成长的一个自然过程,就像当年我们从8位上升的16位,又16位上升到32位那样。并且我可以肯定的说,64位也不会是终点站,128位的出现也只是一个时间的问题。

那么32位的局限到底在什么地方呢?

最主要的一个就是内存空间的限制。32位技术的可访问的内存空间上限是4GB。看起来很多,是吗?但仔细一看,问题就来了。这4GB空间Windows自己要用一半,剩下的一半留给用户的应用。那样也就是2GB了。对于数据库来说,2GB实在是不“宽裕”。就拿我们小小的西西河来说,数据库肯定也不止2GB了。内存小,数据多,那么大部分数据就只好在硬盘上呆着。需要的时候进到内存里,完事了还得赶快出来,因为别人还等着呢。硬盘是个很慢的东西,比起内存来可能要慢几个数量级。如果数据不停的进出硬盘,那么应用的性能就无可避免的要慢下在。这在很多场合是不可以接受的。(Windows Advance server可以将OS的内存占用减少到1GB,应用可以使用3GB的空间,假如应用编程的时候使用了这个Feature。不过这个Trick很多人不知道)

在64位技术中,可访问的内存将不再会是一个问题了。2的64次方是一个大的我不会数的数字。举个例子吧,如果将IP从现在的32位上升到64位,那么这个地球上每一平方厘米将能分摊到上千个IP。所以使用了64位技术,内存问题你就不用担心了。当然我说的这是个理论数字。现在的硬件制造水平还无法将那么多内存放到计算机主板上,每个CPU配4-8GB内存可能是今后几年内的标准设计。

我看过一个微软的演示。两套同样的服务器,一个运行32位OS + 32位数据库,另一个运行64位OS + 64位数据库,64位技术带来的性能提升给我的印象非常深刻。盖茨还说,在他们的内部测试中,64位的Terminal Service比原来的32位性能提高了2.7倍。他们都有些吃惊。对于一个12秒的电影动画渲染,64位技术将时间缩短了近2/3。以前使用32位技术,这么短一个动画片断要3天时间才能完成!!!

所以64位技术首先受益的是这些Memory Hungary应用。对于普通用户,除了要编辑高清晰的DVD,HDTV节目,4GB的内存暂时还不是一个问题。所以那种巨大的性能提升我们不会有什么切身体会。

除了内存外,64位就没有别的好处了?

当然不是这样啦。内存问题只是一个最明显的问题。对于一般程序,64位OS + 64位应用,15%左右的性能提高应该是可以期待的。

已经试验过64位Windows XP的朋友肯定会跳出来说“Highway你丫少胡说,我在64位上就没体验到任何“快感”...”

哈哈,你先别急,事情是这个样子滴。

为了简单起见,我们且以AMD的64位CPU为例展开我们的讨论,Shall we?

AMD的64位CPU是一种很有意思的东西。它可以很好的运行现有的32位程序,同时也可以运行64位程序。从技术上来说,它有三种运行模式:

点看全图

外链图片需谨慎,可能会被源头改

1)“老古董”模式(Legacy mode)。现在最常见的32位操作系统+32位应用程序就是在这种模式下运行的。

2)长模式兼容亚模式(Long mode - Compatibility mode),比如64位操作系统上的32位应用程序就是在这种模式下运行的。

3)长模式64位正宗模式(Long mode - 64 bit mode), 64位操作系统上的64位应用就是这种模式。

大家知道,AMD的64位CPU是按64位设计的,32位只是一个权宜之计。当操作系统和应用程序都是64位的时候,CPU的全部能力才得到发挥。比如有8个通用寄存器(Register)就是只有在64位模式下才可以使用的,诸如此类的设计还有不少。

点看全图

外链图片需谨慎,可能会被源头改

如果现在你就升级到64位Windows,由于大多数应用还是32位的,你实际上只是从“老古董”模式换到了长模式兼容亚模式,你的确得不到什么“快感”。由于在64位Windows上运行32位应用程序要透过一个叫做WoW64的东西,所以有的时候你的程序性能反而会下降一点点。

点看全图

外链图片需谨慎,可能会被源头改

在其后相当长一段时间内,已有的32位应用不可能都过渡到64位上去,这就注定了我们将面临的是一个64/32位混合的世界。还记得当年我们国家从计划经济转型到市场经济的那段日子吗?那时候我们的体制是“双轨制”。同样,在这个从32位到64位转化的过程中,Windows将实行“双轨制”。而这“双轨制”不可避免的将给我们带来一些问题。

这个“双轨制”中,有三个主要成员,64位操作系统,64位应用程序和32位应用程序。他们之间的关系比较微妙,为了形象起见,你可以这么想---64位操作系统是你老哥,64位应用和32位应用分别是大奶和二奶。你的任务就是让大奶和二奶都满意。要注意大奶和二奶是水火不相容的,并且她们俩都认为她们完全占有你,你是完全属于她们的。你们玩得转吗?

你不能把二奶的Bra放到大奶的衣橱了,如果那样,你肯定死定了。同样,32位应用的东西也一定不能写道64位的地盘里去。比如说,安装了64位Windows以后,你安装以前的某一个32位应用。安装程序没有任何改动,还是按以前的老规矩把Shared Library(比如一些DLL, OCX等等)安装到%windir%\system32目录下,把应用部分拷贝到%ProgramFiles%\XXXX\目录下。但问题是现在行情变了,%windir%\system32和%ProgramFiles%已经成了64位应用的基地,32位的东西COPY过去那一定会闹出人命来。怎么办呢?

Windows不容易,使出了“乾坤大挪移”的神功在二位之间周旋。当32位应用按老规矩安装的时候,它一方面笑脸相迎,“没问题honey,你只管来好了”。而另一方面,它悄悄的将文件安排在了外宅。二奶压根没有觉察出来,高高兴兴的安顿了下来。可你仔细一看,她的东西被分别请到了%ProgramFiles(86)%和%windir%\SysWow64路径下。通过这样的“欺骗”手段,Windows使得32位和64位应用不直接碰撞,发生冲突。并且由于他骗术高超,两位奶都没有意识到被骗,以前的安装程序以及程序本身不需要任何改动就可以运行无误!

但问题是,有的时候“乾坤大挪移”没办法使,Windows只好硬着头皮硬接了。比如说卧室的床单本来是花格的。结果大奶来了死见不喜欢,非要给换成素色的。过两天二奶来了,把那素色的床单一把撤下,又换上了她喜欢的。那么床单到底是什么样子的呢?那要看最后一次是那位奶来过的。这种情况和Windows注册库情况完全一致,叫做“Last Writer Wins”。当你安装好Windows后,by default,Doc文件由64位的WordPad来打开。当你安装了32位的Office以后,注册库被改写了,Doc文件一律由32位WinWord来打开。几天后,你可能又安装了64位的Office,到那时候,情况就又变了。64位的Office成了缺省设置。事实上,Windows维护了32位和64位两个View,他暗中想办法使他们consistent!

大奶和二奶本质上是有你没我,有我没你的。让她们同在一个房间里是可怕的想法。肯定是你扯我头发,我拽你的领子,搞得一塌糊涂。所以如果你是程序员,你一定不要想的将32位的DLL载入到64位的进程中,或是将64位CODE放进32位进程里去。

大奶和二奶虽然是水火不相容的,但是她们之间还是可以“通气”的。Windows中的InterProcess Communication还是可以在32位和64位程序之间传递信息的。具体情况呢,你们肯定不想知道,有些专业了。

* Handles to named objects such as mutexes, semaphores, and file handles can all be shared.
* Handles to windows (HWND) can be shared.
* RPC.
* COM LocalServers.
* Shared memory can be used if the contents of the shared memory are not pointer-dependent.
* The CreateProcess and ShellExecute functions can launch 32-bit and 64-bit processes from either 32-bit or 64-bit processes.
* The CreateRemoteThread function is special-cased for specific functions, allowing 64-bit debuggers to break into 32-bit processes.

“Wow,Windows真牛掰啊”,看到这里不少男士们一定会发出由衷地感叹。“能把大奶二奶一起搞定,且相安无事,简直是不可思议啊!”。于是乎, 准备马上安装Windows 64位操作系统,想从中得到一点“启发"。

不过我可得警告诸位,Windows在大奶和二奶间玩瞒天过海,即使出了差子,穿了帮,最坏不过是Process Crash,Registration Corrupt。而你老兄在生活中要是一个不小心玩出了火,那乐子可大了。到时候出了人命可别怪我言之不预啊!

So, do you still want to upgrade?

元宝推荐:四月一日,

本帖一共被 1 帖 引用 (帖内工具实现)
家园 Wow, 老轧也勤奋啊
家园 老轧好文!有一处不明,

为什么4GB的内存windows要用去2GB呢?是不是windows本身会用去系统内存的一半?

家园 关于64位,问个问题

几年前,电脑可能都米升到32位。任天堂就推出了64位游戏机nintendou64,可是该游戏机失败的一塌糊涂。64位要真这么好,N64为什么会失败?

家园 Windows内存有Kernel Space和User Space之分。

Kernel space只能操作系统用,User space是留给用户应用的。这是Windows管理内存的方法。Unix, Linux也有同样的概念。但是不是50-50的分割我就不是很确定了。

点看全图

外链图片需谨慎,可能会被源头改

家园 任天堂64位游戏机失败是它的问题,64位只是一种技术,

用的好坏就看各个公司的道行了。

Nintendou 64是64位游戏机吗?64为在很多地方说法很含混,有强烈的误导作用。比如Intel的CPU从Pentium Pro起Memory bus就是64位了,但那是64位CPU吗?Apple的G5 CPU内部Bus有的是128位的,但你千万不要被那些宣传所迷惑,Apple到现在也不是Pure 64位。

Nintendou 64好像只是图形部分是64位的。它的CPU部分并不出色。我不记得业界有什么人讨论它的CPU设计有什么出色的地方。不象现在的XBox 360和PS 3的CPU,技术上有非常革新的地方。

 Released in 1996, the Nintendo 64 was the first system with 64-bit graphics and built-in four player gaming potential.

即使Nintendou是Pure 64位,我认为那也只不是个噱头。游戏机4GB内存从来就不是一个问题。

技术和市场成功是两回事。技术最多是成功的必要条件,绝对不可能是充要条件。技术上不俗而经营惨淡的例子多了去了。比如当年64位的先锋Digital就落得被Compaq收购的地步,Unix的头牌Sun如今股票也可怜的只有3快多钱。

要讨论Nintendou 64为什么失败,我们应该到经济管理版面去,你说是不是?

家园 问个问题

请教楼主是否参加了amd最近的tech

听说他们在卖amd64 3200+,只要250刀连华硕主板和xp 64。

价格是没得说了,连俺这样坚信便宜就是好的人也可以接受。俺的问题是这块cpu是什么核心的?网上只说是939,90纳米。这有2款啊,winchester和新出的vince都是这个指标。

最近俺一个朋友弄了块vince核心的3000+,按照pconline的做法竟然将1.8的频率超到了2.7。tnnd,俺都不知道这个速度的cpu该怎么标,5000+?6000+?

而且工作稳定。据说图像制作和3d效果超快超强。搞得俺心向往之。谁来给俺解惑啊。

家园 AMD tech轮不上我去,没人给报销啊。建议你下载一个

CPU-Z program。它可以告诉你你的CPU的全部秘密。比如下面这个就是最新AMD FX-57 CPU的大写真。

点看全图

家园 老轧妙文(rate PG13就足够了)!花一吨!
家园 涉嫌到大奶二奶的问题,所以只好R级了。
家园 【订正一下】今天给一个网友解释64位128位的时候,犯了个错误.

64位的寻址能力是2^64, 是4GB*4GB,如果用现在的内存技术,比如说一条内存1GB,每条内存重约1两,那么64位可以访问的内存约10000吨,我误说成了1吨。

点看全图

外链图片需谨慎,可能会被源头改

如果这个地球上60亿人口,每人发给两台电脑,且每台电脑配备1GB内存,那么64位技术都可以将这些计算机的内存访问到,并且还有25%的富裕 -- 这就是64位的理论address space.

家园 x86-64 寻址只能到44位也就是16TB

扩展到 64bit 之后, 寻址的代价问题就不可忽略了, 因此AMD64实际上不是一个完全的64位CPU。 有效寻址空间只能达到44bit 即16TB。不过也足够大了

[URL=Wikipedia]http://en.wikipedia.org/wiki/AMD64#Virtual_address_space_details[/URL]

http://en.wikipedia.org/wiki/AMD64#Virtual_address_space_details

全看树展主题 · 分页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河