• 纳兰容若
    2022-04-20
    老师您好 我看达夫设备的功能是针对字节的拷贝,达夫设备的效率和标准库中的memcpy哪个效率更高一些呢 多谢老师指教

    作者回复: 在大多数情况下,请优先使用标准库中提供的方法,这里也就是 memcpy。达夫设备只是提出了使用循环展开进行优化的一种方式,而这种方式也仅适用于当时它出现的那个特殊场景中,也就是“将 16 位的无符号整数从一个数组中复制到 MMIO 寄存器”。而标准库中的方法在考虑常见性能优化策略的同时,还可能还会使用一些独立于架构的不同优化方式。除此之外,从兼容性、易用性、可读性上也更具优势。

    
    1
  • 八怪
    2022-03-22
    老师 __builtin_expect 能有效减少分支预测带来的性能损失吗?

    作者回复: 如果合理使用的话(场景合适),理论上是可以的,Linux 内核里也有在用这些扩展函数。但实际使用时还是建议配合 profiler 检验一下优化效果。

    
    
  • fee1in
    2022-01-28
    而当五个阶段全部执行完毕后,CPU 会更新指令指针(PC),将其指向下一个需要执行的指令 应该是在IF结束后,更新PC把 不然跳转指令就会出问题

    作者回复: 这里针对五级 RISC 流水线来说,实际上 PC 的值一般是在 IF 阶段就可以计算(预测)好的,然后在 WB 之后才会实际更新到 PC 寄存器中。

    
    
  • 术子米德
    2022-01-26
    🤔☕️🤔☕️🤔 优化,仅知道方法,非常容易出现伪优化 优化,确定度量方法,才能控制住优化真正效果 度量一段实现代码执行所需的耗时,即总指令数,以及每个时钟周期执行的指令数,即IPC=Instructions-Per-Cycle,这两个指标抓住,大部分情况下打开编译器优化,就达到技巧所谓的优化效果 如果要有更多的优化,都是要选择新的算法或者结合业务和运行环境的各种适配性调优,语言层面的技巧开不出更多的花🌹
    共 3 条评论
    10
  • liu_liu
    2022-01-26
    看了达夫设备的代码,原来 switch case 语句还可以这样用,涨见识了。
    
    1