免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2840 | 回复: 2
打印 上一主题 下一主题

从Alpha Server + Tru64移植到UltraSPARC Server + Solaris [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-08 10:54 |只看该作者 |倒序浏览
从Alpha Server + Tru64移植到UltraSPARC Server + Solaris\r\n\r\nAdam Zhang\r\nTechnical Consultant, MDE\r\nSun Microsystems, Inc\r\n \r\n\r\n\r\n\r\n介绍\r\n\r\n            随着SUN公司Solaris操作系统的开放,从操作系统的免费下载,到源代码的开放,有众多的软件提供商开始考虑将应用移植到Solaris上。本文在这里讨论一下将Alpha Server,Tru64平台上的应用移植到SUN公司UltraSPARC芯片,Solaris平台上的一些知识,可能出现的问题,以及SUN提供的相关移植工具。\r\n\r\n \r\n\r\n从Alpha到UltraSPARC\r\n\r\n如果要将原来基于Alpha的应用移植到UltraSPARC,性能是必须要考虑的问题:基于现有的硬件,需要怎样配置的服务器,UltraSPARC芯片需要多少颗,芯片频率是多少?一个常规的认识是当Alpha芯片的频率小于731赫兹的时候, 1.2GHZ UltraSPARC III相当于1.4倍的Alpha;当Alpha芯片的频率是1GHZ或者是1.2GHZ,这种芯片就可相当于同频率的UltraSPARC III芯片。大家也可以参考下面这张从Alpha Server到Sun Fire Server的映射表格,非常具体。\r\n\r\nHP AlphaServer                                                      Sun Fire Server\r\n \r\n入门级 Servers: 1 – 4 CPU                                       入门级Servers: 1 -4 CPU\r\n \r\n1 CPU:                                                                 1 CPU:\r\n\r\n. Digital Server 3300; 400MHz; 2GB max                    . Sun Fire V100/V120; 650MHz\r\n\r\n. AlphaServer 800/1000; 500MHz; 2GB max               . Sun Fire V100/V120; 650MHz\r\n\r\n. AlphaServer DS10; 600MHz; 1GB max                     . Sun Fire V100/V120; 650MHz\r\n\r\n2 CPU:                                                                 2 CPU:\r\n\r\n. Digital Server 5305; 533MHz; 2GB max                    . Sun Fire V60x/V65x; 3GHz Intel -or- V210; 1GHz\r\n\r\n. AlphaServer 1200; 533MHz; 4GB max                     . Sun Fire V60x/V65x; 3GHz Intel -or- V210; 1GHz\r\n\r\n. AlphaServer DS20; 667/833MHz; 4GB max              . Sun Fire V280R; 1.2GHz -or- V250; 1GHz\r\n\r\n. AlphaServer DS25; 1GHz; 16GB max                      . Sun Fire V280R; 1.2GHz\r\n\r\n4 CPU:                                                                4 CPU:\r\n\r\n. AlphaServer ES40; 500/667/833MHz; 32GB max      . Sun Fire V440; 1GHz -or- V480; 1.2GHz\r\n\r\n. AlphaServer ES45; 1GHz; 32GB max                       . Sun Fire V440; 1GHz -or- V480; 1.2GHz\r\n\r\n. AlphaServer ES47; 1GHz; 32GB max                       . Sun Fire V440; 1GHz -or- V480; 1.2GHz\r\n\r\n. AlphaServer 4000/4100; 466/533/600MHz; 8GB mx . Sun Fire V440; 1GHz -or- V480; 1.2GHz\r\n\r\n\r\nMid Range Servers: 8 to 14 CPU                               Mid Range Servers: 8 to 14 CPU\r\n \r\n8 CPU:                                                                  8 CPU:\r\n\r\n. AlphaServer GS60; 700MHz;                                   . Sun Fire V880; 1.2GHz\r\n\r\n. AlphaServer GS80; 731MHz/1.2GHz; 16GB max         . Sun Fire V880; 1.2GHz\r\n\r\n. AlphaServer ES80; 1GHz; 64GB max                        . Sun Fire V880; 1.2GHz -or- V1280; 900MHz\r\n\r\n. AlphaServer 8200; 6CPU 625MHz;                           . Sun Fire V880; 1.2GHz\r\n\r\n14 CPU:                                                                14 CPU:\r\n\r\n. AlphaServer GS140; 700MHz;                                 . Sun Fire V1280; 900MHz -or- 4800; 1.2GHz\r\n\r\n. AlphaServer 8400; 625MHz                                    . Sun Fire V1280; 900MHz -or- 4800; 1.2GHz\r\n\r\n高端Servers: 16 to 64+ CPU                                     高端Servers: 16 to 64+ CPU\r\n \r\n16 CPU:                                                                 14 / 24 CPU:\r\n\r\n. AlphaServer GS160; 731MHz                                   . Sun Fire 4800; 1.2Ghz\r\n\r\n. AlphaServer GS160; 1.2GHz                                    . Sun Fire 6800; 1.2GHz\r\n\r\n32 CPU:                                                                 14 / 24 / 52 CPU:\r\n\r\n. AlphaServer GS320; 731MHz                                   . Sun Fire 4800; 1.2Ghz\r\n\r\n. AlphaServer GS320; 1.2GHz                                    . Sun Fire 6800; 1.2GHz -or- Sun Fire 12K; 1.2GHz\r\n\r\n. AlphaServer GS1280; 1.15Ghz                                 . Sun Fire 12K; 1.2GHz\r\n\r\n64 CPU+:                                                               64 CPU+:\r\n\r\n. AlphaServer GS1280; 1.15Ghz                                 . Sun Fire 15K; 1.2GHz\r\n\r\n\r\n\r\n\r\n另外这种硬件移植也带来了一个我们不能忽视的问题:little-endian和big-endian。\r\n\r\n            在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分。比如一个16进制数字0x12345678, 在内存存放的方式如下:\r\n\r\n \r\n\r\n            \r\n\r\n值            0111,1000          0101,0110           0011,0100           0001,0010\r\n \r\n地址         100                      101                      102                       103\r\n \r\n\r\n \r\n\r\n            另一种称为big-endian,正好相反,存放在内存中最低位的数值是来自数据的最左边边部分。比如一个16进制数字0x12345678, 在内存存放的方式如下:\r\n\r\n            \r\n\r\n值            0001,0010          0011,0100            0101,0110            0111,1000\r\n \r\n地址         100                     101                         102                        103\r\n \r\n\r\n \r\n\r\n \r\n\r\n            Alpha是使用little-endian, 而SPARC架构是采用big-endian。因此现有代码中如果没有很好的封装这种数据存储顺序的差异,移植的时候就要特别小心。除了注意那些直接通过指针操作内存的动作,一些直接依赖内存数据布局的代码也要留意,比如:\r\n\r\nstruct date\r\n\r\n{\r\n\r\nchar yr;\r\n\r\nchar mon;\r\n\r\nchar day;\r\n\r\nchar x; // struct var size is 4\r\n\r\n} planned_date, end_date;\r\n\r\n \r\n\r\nif ( (*(long * )&end_date) >\r\n\r\n(*(long *)&planned_date))\r\n\r\n{\r\n\r\n     printf(\"Sorry, You missed the deadline \\n\");\r\n\r\n}\r\n\r\n由于这段程序直接使用内存数据来进行比较,在Alpha的平台下运行没有问题,但如果直接移植到UltraSPARC的机器上就会得到错误的结果。\r\n\r\n如果要与其他机器交互,也要特别当心这个问题,比如某些文件需要在不同平台处理,或者通过Socket通信。这方面我们可以借助ntohl(), ntohs(), htonl(), and htons()函数进行格式转换。\r\n\r\n \r\n\r\n \r\n\r\nOS操作系统\r\n\r\n            Tru64\r\n\r\n            Tru64s是第一个支持64位计算的商业UNIX, 它主要基于卡内基梅隆大学的March V2.5 Kernel, 还有来自于BSD 4.3, 4.4 和UNIX System V的模块。\r\n\r\n            Solaris\r\n\r\n            Solaris同样也是基于BSD和AT&T的UNIX System V。最重要的是两者都是符合POSIX标准的,所以如果使用应用是基于这种标准的技术,移植工作不会很复杂。如果使用Tru64特有的库或者架构,则需要采用Solaris相对应的库或者结构。\r\n\r\n            Solaris最新的版本Solaris10不仅提供最新的特性:高效的TCP/IP实现,具有DTrace动态侦测 ;而且完全免费的。下载地址为http://www.sun.com/software/solaris/get.jsp。当然你必须要有SUN的online账号,如果没有的话,可以免费注册。\r\n\r\n            Patch包可以到http://sunsolve.sun.com/pub-cgi/ ... atches/patch-access免费下载,整个Patch包大概有90M。\r\n\r\n \r\n\r\nCompiler编译器\r\n\r\n            建议使用Sun Studio 11, 它具有最新的特性:对64位计算和多线程的更好地支持,提供更为有效的开发和调试环境。这个版本也是免费的。下载和安装详见http://javashoplm.sun.com/ECom/d ... p;TransactionId=try。\r\n\r\n            虽然GNU的GCC也是免费而且应用广泛,但是Sun Stuidio对UltraSPARC芯片的支持程度更好,而且还带有IDE环境,给开发和调试带来很大的方便。\r\n\r\n \r\n\r\n移植工具\r\n\r\n            针对从Tru64到Solaris,SUN公司提供了一个migration tool for C/C++。免费下载,地址为:http://javashoplm.sun.com/ECom/d ... p;TransactionId=try\r\n\r\n这个工具通过扫描代码源文件找出有问题的文件,代码位置及其解决方法。\r\n\r\n由于这个工具是java写的,所以需要JVM。建议使用最新的JVM。因为扫描处理源文件,还是很耗时的。由于 1.4版的JVM在性能上得到很大的提升,所以建议使用这个版本或者更高。

论坛徽章:
0
2 [报告]
发表于 2005-12-21 16:08 |只看该作者
查了好长时间终于看懂,不用写的这么复杂把

论坛徽章:
0
3 [报告]
发表于 2005-12-21 18:45 |只看该作者
收了   以后再看\r\n\r\n\r\n\r\n有没有    DEC   Alpha  Server  + vms    移植到  UltraSPARC Server + Solaris的东东 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP