assembly TMS320C66x上UNPKBU4指令正确运行的检测算法

6yoyoihd  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(184)

TMS320C66x微处理器中UNPKBU4指令正确运行的测试算法。
我希望有人在这里指给我正确的方向,因为我有点卡住了,我需要一些指导,如果可能的话,如果它是一个课程或步骤,采取任何我有大约一个月的时间这样做,提前感谢
我在网上搜索了一下,发现汇编语言是我需要的语言,我相信除此之外我不能肯定

tzdcorbm

tzdcorbm1#

我过去为各种指令集构建了测试框架,例如x87,MMX,3dNow!和SSE。
这样做的方法是以C或C++编写的仿真代码的形式构建黄金参考,然后生成测试向量以比较来自黄金参考的响应与这些输入的硬件。
根据TMS320C66x DSP CPU and Instruction Set Reference GuideUNPKBU4指令使用零扩展将四个压缩字节直接扩展为四个压缩的16位半字,它在3.415节中详细展示了如何工作。您可以创建一个函数uint64_t unpckbu4_ref (uint32_t x);作为基于该规范的引用。注意使用固定宽度的整数类型。
您应该能够通过TMS320C6000 Optimizing Compiler v8.2.x User's Guide的表8-4中列出的_unpkbu4()内部代码访问硬件指令。检查生成的机器代码,以确保它实际调用了UNPKBU4指令。或者,* 可能 * 有通过内联汇编访问指令的方法,或者通过链接到使用该指令的汇编代码编写的单独编译的 Package 器函数。我写“可能”是因为我没有使用过这个特定的平台,但是这些替代方案通常在 * 大多数 * 计算平台上可用。
剩下的就是生成测试向量,用于从硬件指令和黄金参考模型中引出响应(伪随机数生成器)。这本身适合于快速“冒烟”测试,该测试确定功能没有被完全破坏。对于具有32位输入的单输入操作,例如UNPKBU4,正确的操作可以通过 * 详尽的测试 * 来证明,即应用所有可能的232个输入,我强烈推荐这样做。它只需要几分钟。
对于具有更多输入位的操作,穷举测试是不可行的,重要的是检查角/边缘情况。例如,对于UNPKBU4指令,每个字节应取0x000xff的最小值和最大值,并确保扩展是零扩展而不是符号扩展,每个字节也应该取0x7f0x80的值。
对于初始测试运行,您将跟踪任何不匹配,以根据指令规范解决它们。您将纠正黄金参考和/或测试框架,或者在仍在开发中的情况下纠正硬件,例如创建新的CPU实现时,或者在必要时澄清规范本身。此后,您应该能够为新一代处理器继承黄金参考代码。

相关问题