• Re: IA64 Linux kernel 的 spin unlock 中为什么没有使用 st.re

    这个有出处吗?

    【 在 pxa255 的大作中提到: 】

    : volatile修饰的读写compiler会使用ld.acq/st.rel。

    2015-07-24
  • Re: IA64 Linux kernel 的 spin unlock 中为什么没有使用 st.re

    BTW, spin lock 的时候确实使用了 acquire load:

    [code]

    static __always_inline void __ticket_spin_lock(arch_spinlock_t *lock)

    {

    int    *p = (int *)&lock->lock, ticket, serve;

    ticket = ia64_fetchadd(1, p, acq);

    ....

    [/code]

    2015-07-23
  • IA64 Linux kernel 的 spin unlock 中为什么没有使用 st.rel 指

    IA64 Linux kernel 的 spin unlock 函数代码如下 (arch/ia64/include/asm/spinlock.h):

    [code]

    static __always_inline void __ticket_spin_unlock(arch_spinlock_t *lock)

    {

    unsigned short    *p = (unsigned short *)&lock->lock + 1, tmp;

    asm volatile ("ld2.bias %0=[%1]" : "=r"(tmp) : "r"(p));

    ACCESS_ONCE(*p) = (tmp + 2) & ~1;

    }

    [/code]

    其中 ACCESS_ONCE 的定义为 (include/linux/compiler.h):

    [code]

    #define __ACCESS_ONCE(x) ({ \

    __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \

    (volatile typeof(x) *)&(x); })

    #define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))

    [/code] (昨天贴成了WRITE_ONCE的定义,现在改过来了)

    可以看出来,unlock 的时候没有使用 st.rel 指令。按照我的理解,IA64 实现的 release consistency model,应该在 unlock 的时候使用 release store。但是现在 linux kernel 却没有使用,哪位大侠能解释一下原因吗?

    2015-07-23
  • Re: 全新龙芯架构完全曝光 追赶Intel Ivy Bridge

    A57的spec分值哪里有公布吗?

    2015-05-27
  • Re: 龙芯GS464E 处理器核架构设计pdf

    什么测试程序?

    A72的跑分数据哪里来的?

    【 在 Xaoyao 的大作中提到: 】

    : 但各方面的分数应该超过了ARM最新的Cortex A72

    2015-05-07
  • Re: ISA Wars

    - Transactional Memory Extension

    - SIMD Extension

    2015-05-07
  • Re: ISA Wars

    说的很到位,对于通用应用来说,现在的主流指令集本质上都很相似了,不能说明指令集对处理器性能影响不大。指令集是软件表达计算任务的一种方式,指令集的好坏决定了软件能表达什么信息,硬件可以利用的信息有多少。

    举几个例子:

    - 原子操作指令,特定应用场景下,不同的原子操作指令集对性能还是有明显影响的;

    - 预取指令,这个不用说了吧,有和没有差别还是挺大的

    - 分支预测 hint 指令,可能现在用处不大了,但是区分 ret 和 jmp 还是很有必要的

    - ...

    【 在 Draziwest 的大作中提到: 】

    : ISA的影响是有的。但RISC vs. CISC这种级别的比较仅仅是在某些场景下的互有胜负

    : 谈不上根本差异。

    : 针对特定应用场景定制的ISA和通用ISA可以有数量级的差异,那是另一回事了。

    : ...................

    2015-05-07
  • Re: 挂在mutex上的线程是死等还是被动唤醒

    如果是 pthread_mutex,OS不会调度。

    什么意思?

    【 在 water4 的大作中提到: 】

    : 等待锁住的mutex的线程在锁被打开之前不会被系统调度运行吧。

    : 多核多线程会频繁刷新CPUcache导致性能下降,这个应该怎么避免

    2015-04-15
  • Re: 说下我的苦恼,高手给我看看

    同一屏的话 H/L/M 三个命令很常用,结合 {/} 速度应该不慢

    2014-01-06
  • Re: 招聘CPU模拟器开发应用人员

    二进制翻译100MIPS,普通功能模拟器10MIPS,性能模拟器100KIPS。如果设计空间不大的话,FPGA原型可以考虑。

    2014-01-06
  • Re: 招聘CPU模拟器开发应用人员

    指令集模拟器没意义,时钟周期精确模拟器速度太慢,混合模型精确度不好控制。应用性能瓶颈分析的工作还是通过分析应用行为,在真实硬件上利用performance counter靠谱一些。

    2014-01-06
  • Re: 大家遇到emacs 和 ibus 不兼容的问题没

    自己遇到过一次,通过 uninstall defoma 解决了,debian 系统。同事遇到过一次,通过修改 xorg.conf 添加 X11 fonts path 解决了,rhel 5。

    两次都是与字体有关,总结出的解决该问题的流程,好事者可以试试『要求自己编译,有C语言基础,可以进行简单调试』:

    - 查看 XmbLookupString 是否被调用;结果是调用了 XLookupString,未调用 XmbLookupString,原因是 FRAME_XIC (f) 为 NULL;

    - 查看 make_frame() -> x_window() -> create_frame_xic() 函数中为何没有创建 xic;结果是 XCreateIC() 调用返回 Resource Temporarily Unavailable 错误;根据上下文,最终尝试出是 xfs (x fontset) 参数为空;

    - 查看 xic_create_xfontset() 函数为何创建 xfs 失败;结果是 XCreateFontSet() 函数调用失败,打开了调试信息输出选项,发现有若干 charset 的字体找不到,折腾 N 久,安装若干字体重启 X Server N 次无果,最后查看 Xorg.log 发现其中有找不到字体的提示,与 defoma 相关;

    - 卸载 defoma,问题解决!

    2013-12-18
  • Re: 如何将文件中的所有数值都除以某一个数

    [em68][em68][em68] 厉害!Perl 果然很强大!

    【 在 rezilla 的大作中提到: 】

    : perl不怎么熟练,献丑了 版主看见别笑话我

    : $ cat b.txt

    : (123, 434)

    : ...................

    2013-06-19
  • Re: 如何将文件中的所有数值都除以某一个数

    有一点需要说明,文件中不光有 (x, y) 元组,还有其它很多无关内容。

    sed 的问题是 s/pattern/.../ 中的 ... 不能做算术运算;

    awk 的问题是 gensub/pattern/.../ 中的 ... 不能是表达式;

    这么一个简单的需求,本以为 sed/awk 可以轻松搞定,看来还是有难度啊,可能 perl 会有一个 elegant 的解决方案。

    2013-06-19
  • Re: 如何将文件中的所有数值都除以某一个数

    最开始尝试的就是 awk,最初的想法是用一个 gensub 命令实现:

    awk '{print gensub("\(([0-9.]*), ([0-9.]*)\)", “(" "\\1"/0.7 "\\2"/0.7 ")", "g")}'

    但是发现 "\\1"/0.7 这种形式不行,直接输出 0,而不是 \\1 除以 0.7 的结果,

    试过 strtonum("\\1")/0.7,也不行,可能 gensub 的第二个参数不能是一个表达式,

    只能是一个字符串。

    milksea 能不能指点一下。如果能用 awk 实现的话,处理大文件确实方便很多。

    【 在 milksea 的大作中提到: 】

    : 感觉 awk 合适

    2013-06-19
  • Re: 如何将文件中的所有数值都除以某一个数

    [em66] 正是我想要的,谢谢!

    如果用 Perl 实现的话,应该怎么做,能否在几条语句内完成?

    【 在 rezilla 的大作中提到: 】

    : :%s#(\([0-9.]*\), \([0-9.]*\))#\= '(' . printf("%f", submatch(1) / 0.7) . ', ' .

    : printf("%f", submatch(2) / 0.7) . ')'#g

    : 不知道是否你想要的?其中

    : ...................

    2013-06-19
  • 如何将文件中的所有数值都除以某一个数

    如何实现这样的需求,将文件中的所有形如 (x, y) 的串替换成 (x', y'),其中:

    1. x, y 都是 NNNN.NNNN 或 NNNN 的数值;

    2. x' = x/0.7, y' = y/0.7;

    3. 一行中可能有多个 (x, y) 组,个数不确定,每行的格式不一致;

    vim, sed, awk 都有什么好的解决方法?因为文件很大,最好是可以用 sed/awk 实现。

    初步的想法是用 s 命令,比如 s_(\([0-9.]*\), \([0-9.]*\))_(\1/0.7, \2/0.7)_g,但是不行,\1/0.7 没有被计算成数值,而是被当作字符串直接插入进去了。

    2013-06-19
  • Re: 为什么代码减少 程序却变慢了

    慢了多少?

    2012-09-29
  • Re: 没有右ctrl,用emacs痛苦死

    做个键映射应该可以解决吧

    2012-08-27
  • Re: 国内有做编译器相关的公司么?

    1/2 完全没有看懂,能否详细解释一下,为何静态编译无能为力的问题到了动态编译就大发神威了?

    【 在 MaLing 的大作中提到: 】

    : 哦,

    : 想了一下BT能够解决的问题:

    : 1)解决 register rename, 所以第二次以后运行的代码不需要register rename.

    : ...................

    2012-07-10