小编pre*_*ion的帖子

如果无序超标量处理器的每个周期的取指令数是恒定的?

我想知道无序超标量处理器(假设是Intel i7处理器)的每个周期的取指令数是否恒定,或者它可能会根据高速缓存未命中率或分支未命中预测的数量而改变.给出代码/程序?

如果不是常数,如何解释其背后的原因呢?据我所知,在现代多核处理器中,解码器单元总是尝试解决依赖关系并尝试使用独立指令填充管道气泡.那么,对于任何给定的工作负载,获取指令的数量不应总是相同(大约)?

cpu pipeline multicore computer-architecture instructions

2
推荐指数
1
解决办法
271
查看次数

为什么这段代码没有互斥量?

我试图了解锁如何在多线程中工作.当我执行以下代码而没有锁定时,即使将变量sum声明为全局变量并且多个线程正在更新它,它也能正常工作.任何人都可以解释为什么这里的线程在没有锁的共享变量上工作得很好?

这是代码:

    #include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

#define NTHREADS      100
#define ARRAYSIZE   1000000
#define ITERATIONS   ARRAYSIZE / NTHREADS

double  sum=0.0, a[ARRAYSIZE];
pthread_mutex_t sum_mutex;


void *do_work(void *tid) 
{
  int i, start, *mytid, end;
  double mysum=0.0;

  /* Initialize my part of the global array and keep local sum */
  mytid = (int *) tid;
  start = (*mytid * ITERATIONS);
  end = start + ITERATIONS;
  printf ("Thread %d doing iterations %d to %d\n",*mytid,start,end-1); 
  for (i=start; i < end ; i++) {
    a[i] …
Run Code Online (Sandbox Code Playgroud)

c multithreading locking pthreads

1
推荐指数
1
解决办法
120
查看次数