我的C++程序应该支持IA64还是只支持x64?

7

我的程序应该支持IA64,还是只支持x64?

我自己也很难找到IA64的电脑。那么IA64已经死了吗?

微软似乎对IA64有广泛的支持,但我花了很长时间才找到一台IA64电脑,最终只能在eBay上购买。

6个回答

8
你们开发什么样的软件?如果不是数据中心类型的应用程序或高端的数字计算应用程序,如果有人要求ia64版本,我会感到惊讶。即使是这种情况,我认为这将是一种情况,如果你必须问是否应该支持它,那么你可能不需要支持。

以下是我能想到的可能会妨碍ia64端口的几个问题:

  • 您所依赖的任何第三方工具或库都需要支持它
  • 在x86和x64上很少被注意到的未对齐访问将在ia64上引起头痛

当然,我不在Gartner、IDC或任何进行市场分析的机构工作,因此你应该对我所说的话持怀疑态度。

有没有客户或潜在客户询问过?


1
那不应该是我确实为Gartner或IDC工作,所以你应该持怀疑态度吗? - Martin Beckett

2
如果你有IA64的访问权限,那么将你的代码运行在它上面绝对是值得的。将你的代码移植到另一个CPU架构将会揭示出各种隐藏的问题。
你可能会遇到字符串溢出1个字节的问题,在Linux/Windows/x86上没有显示,但由于不同的堆栈布局或结构对齐而导致程序崩溃。你可能会认为 ~1UL == 0xFFFFFFFF。
我保持我的C++代码的IA64干净,但我已经有了几台机器,因为我是一个粉丝。

1

理论上,假设您坚持良好的C++编程实践,您不应该关心您要写入的是x64、IA64甚至SPARC或PowerPC等任何内容。只需确保您的代码是64位干净的(例如不假定整数和指针具有相同的大小),您就可以放心了。

但是...

总会有一些古怪的边角条件,这些条件由于不寻常的硬件问题、不符合规范的编译器或语言中的“实现定义”尖锐角落而引起。(C和C++都包含许多这样的“实现定义”事项!)

所以...

您需要在目标平台上进行测试。这可能会非常昂贵,但有些地方会让您以费用为代价在给定的硬件平台上测试应用程序。如果您在跨平台工作方面做了很多工作,最便宜的方法可能是在公司内部购买硬件,但小型商店和罕见的平台通常最好在租用的数据中心硬件上进行测试。


1

只有您有资格判断预期销售额是否足以支付开发和支持成本。


0

除非客户明确要求,否则我不会费心支持IA64。否则,这只是另一个需要测试的平台。英特尔还生产基于IA64的处理器吗?


1
是的,IA64平台仍然活跃并不断发展。这是一个优秀的处理器设计。可惜我们被所有这些传统代码所束缚。 :( - Brian Knoblauch
是的,IA64平台仍然存在。我会称其为一种大胆但失败的设计。编写有效的编译器对它来说非常困难,因为它在编译时利用指令级并行性而不是运行时。而且这些处理器比Opteron昂贵得多,却没有明显的收益。 - Dan Lenski

-1

如果你正在使用C++编写代码,这真的很重要吗?我的意思是,你没有说出什么让你的程序“需要知道”它运行的机器的底层架构。从C++本身来看,你应该相当好地保护了自己免受两者之间的任何差异的影响。当然,在一个奇特的平台上进行测试可能会很困难,但是你必须在所有你“支持”的平台上亲自测试吗?


1
我会说是的,你不能销售一个未经过测试的产品。 - quinmars
1
除了开发成本之外,还有更大的成本需要考虑。支持和质量保证是其中最重要的两个方面。 - Brian R. Bondy
1
当然,如果你必须花钱购买支持服务,你需要赚取足够的额外收入来弥补这些费用。 - David Thornley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接