进程的内存映射似乎被分段为段(堆栈,堆,bss,数据和文本),
我一直在阅读内存障碍:软件黑客的硬件视图,这是Paul E. McKenney的一篇非常受欢迎的文章.
本文强调的一点是,像Alpha这样非常微弱有序的处理器可以重新排序依赖负载,这似乎是分区缓存的副作用
论文摘录:
1 struct el *insert(long key, long data)
2 {
3 struct el *p;
4 p = kmalloc(sizeof(*p), GPF_ATOMIC);
5 spin_lock(&mutex);
6 p->next = head.next;
7 p->key = key;
8 p->data = data;
9 smp_wmb();
10 head.next = p;
11 spin_unlock(&mutex);
12 }
13
14 struct el *search(long key)
15 {
16 struct el *p;
17 p = head.next;
18 while (p != &head) {
19 /* BUG ON ALPHA!!! */
20 if (p->key …Run Code Online (Sandbox Code Playgroud) synchronization locking cpu-architecture lock-free memory-barriers
我想确认以下时序图是否适用于MIPS 5阶段管道(*=停顿):
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
LW R1, 0(R4) | IF | ID | EX | M | W | | | | | | | | | | | |
LW R2, 400(R4) | | IF | ID | EX | M | W | | | | | | …Run Code Online (Sandbox Code Playgroud)