【问题标题】:Should my C++ program support IA64 or only x64?我的 C++ 程序应该支持 IA64 还是只支持 x64?
【发布时间】:2010-09-18 06:21:56
【问题描述】:

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

我自己无法轻松找到 IA64 计算机。 IA64 死了吗?

MS 似乎对 IA64 有广泛的支持,但我花了很长时间才找到一个 IA64,最后我不得不在 eBay 上得到它。

【问题讨论】:

    标签: c++ c 64-bit itanium


    【解决方案1】:

    您是唯一有资格判断预期销售额是否能够支付开发和支持成本的人。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我会说是的,您不能销售未经测试的产品。
      • 还有比开发更大的成本。支持和质量保证是主要的。
      • 当然,如果您必须花钱支持,您确实希望赚到足够的额外资金来弥补这一点。
      【解决方案3】:

      你们开发什么样的软件?如果它不是数据中心类型的应用程序或高端数字运算应用程序,如果对 ia64 版本有任何需求,我会感到惊讶。即便如此,我认为如果你不得不问是否应该支持它,你可能不需要。

      我想到的几件事可能会妨碍 ia64 端口:

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

      当然,我不为 Gartner 或 IDC 或任何进行市场分析的人工作,所以你应该带着怀疑的态度接受我在这里所说的话。

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

      【讨论】:

      • 我不应该为 Gatner 或 IDC 工作 DO 所以你应该持怀疑态度吗?
      【解决方案4】:

      除非客户特别要求,否则我不会为 IA64 支持而烦恼。否则,它只是另一个测试平台。英特尔是否仍然生产任何基于 IA64 的处理器?

      【讨论】:

      • 是的,IA64 平台仍然存在并且还在增长。这是一个出色的处理器设计。太糟糕了,我们被所有这些遗留代码阻碍了。 :(
      • 是的,IA64 平台还活着。我会称之为大胆但失败的设计。为它编写有效的编译器非常困难,因为它在编译时而不是运行时利用指令级并行性。而且处理器比 Opteron 贵得多,而且没有明显的收益。
      【解决方案5】:

      理论上,假设您坚持良好的 C++ 编程实践,您不应该关心您正在写入的是 x64、IA64 还是 SPARC 或 PowerPC 或其他什么。只要确保你的代码是 64 位干净的(就像不假设整数和指针大小相同),你会没事的。

      除了...

      总是存在由异常硬件问题、不符合标准的编译器或您的语言中的“实现定义的”尖角引起的奇怪边缘情况。 (C 和 C++ 都包含很多“实现定义”的东西!)

      所以...

      您需要在目标上进行测试。这可能会变得非常昂贵,但是有些地方可以让您付费在给定的硬件平台上测试应用程序。如果您在跨平台的东西上做了很多工作,那么在内部购买硬件可能最便宜,但小商店和稀有平台通常最好在租用的数据中心硬件上进行测试。

      【讨论】:

        【解决方案6】:

        如果您可以访问 IA64,那么让您的代码在其上运行绝对值得。将你的代码移植到另一个 CPU 架构会暴露出各种隐藏的问题。

        您可能有一个字符串溢出 1,它不会在 Linux/Windows/x86 上显示出来,但由于堆栈布局或结构对齐方式不同而导致程序崩溃。您可能会假设 ~1UL == 0xFFFFFFFF。

        我保持我的 C++ 代码 IA64 干净,但我已经有几台机器,因为我是粉丝。

        【讨论】:

          猜你喜欢
          • 2020-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 2017-03-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多