标签: cpu

什么是关于逻辑设计的优秀/好书?

我想要一些好书,涵盖逻辑设计,制作计算机电路.似乎有很多关于逻辑设计的昂贵书籍,但目前还不清楚哪些是好的.

hardware cpu logic

8
推荐指数
0
解决办法
9553
查看次数

如何将我的结构变量放入CPU缓存中以消除主存储器页面访问时间?选项

很明显,没有明确的方法或某些系统调用可以帮助程序员将变量放入CPU缓存中.

但我认为某种编程风格或设计良好的算法可以增加变量可以缓存到CPU缓存中的可能性.

这是我的例子:

我想在一个数组的末尾添加一个8字节结构,该数组由在全局主存储器区域中声明的相同类型的结构组成.

这个过程不断重复进行400万次操作.此过程需要6秒,每次操作需要1.5 us.我认为这个结果表明两个内存区域还没有被缓存.

我从缓存无关的算法中得到了一些线索,所以我尝试了几种方法来增强它.到现在为止,还没有增强.

我认为一些聪明的代码可以减少经过的时间,最多可以减少10到100倍.请告诉我方式.

-------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

附加(2011-04-01)

达蒙〜谢谢你的评论!

阅读完评论后,我再次分析了我的代码,发现了一些我错过的内容.我附加的以下代码是我原始代码的缩写版本.

为了准确测量每个操作的执行时间(在原始代码中,有几种不同类型的操作),我使用clock_gettime()函数插入了时间测量代码.我想如果我测量每个操作的执行时间并累积它们,可以避免主循环的额外成本.

在原始代码中,时间测量代码被宏功能隐藏,所以我完全忘了它.

这段代码的运行时间差不多是6秒.但是如果我摆脱主循环中的时间测量功能,它将变为0.1秒.

由于该clock_gettime()函数支持非常高的精度(高达1纳秒),在独立线程的基础上执行,并且它需要非常大的结构,我认为该函数导致缓存输出连续插入的主存储区域执行.

再次感谢您的评论.为了进一步增强,任何建议对我优化代码都非常有帮助.

我认为分层定义的结构变量可能会导致不必要的时间成本,但首先我想知道它会有多少,然后再将其更改为更多C风格的代码.


typedef struct t_ptr {
    uint32 isleaf :1, isNextLeaf :1, ptr :30;
    t_ptr(void) {
        isleaf = false;
        isNextLeaf = false;
        ptr = NIL;
    }
} PTR;

typedef struct t_key {
    uint32 op :1, key :31;
    t_key(void) {
        op = OP_INS;
        key = 0;
    }
} KEY;

typedef struct t_key_pair {
    KEY key;
    PTR ptr;
    t_key_pair() {
    } …
Run Code Online (Sandbox Code Playgroud)

memory cpu performance caching

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

8086/8088中有多少个寄存器?

我参加了计算机体系结构课程,我理解处理器有32个寄存器,每个32位.现在我正在学习计算机体系结构课程,其中我读到8086只有8个寄存器.但是我读过的本书和这个网站显示了很多寄存器.我对8086和8088的寄存器感到困惑.请帮帮我.谢谢

注意:

我很好地理解了不同处理器中不同的寄存器大小.我只是对寄存器的数量感到困惑.谢谢

cpu x86 cpu-registers microprocessors

8
推荐指数
2
解决办法
5万
查看次数

从Java中限制CPU

我在这个(和其他)论坛上看到了许多相同标题的问题,但它们似乎都没有解决我的问题.就是这样:我有一个JVM,可以在托管它的机器上占用所有CPU.我想限制它,但是我不能依赖Java 外部的任何限制工具/技术,因为我不能假设这个Vm将在哪里运行.因此,例如,我无法使用处理器关联,因为如果VM在Mac上运行,则操作系统不会使进程关联可用.

我需要是指示是否存在手段的Java,以确保线程不取足CPU.

我想直截了当地指出,我不能使用基于交替进程执行和暂停的技术,如某些论坛所建议的那样,因为线程需要不断生成值.

理想情况下,我想要一些意思,例如,设置一些VM或线程优先级,或以某种方式限制CPU消耗的百分比.

任何帮助将非常感激.

java cpu multithreading jvm throttling

8
推荐指数
2
解决办法
2843
查看次数

使用过多CPU查找进程的命令

我可以使用什么命令来查找使用大量CPU的进程?我可以不安装新的东西吗?

linux shell cpu operating-system

8
推荐指数
2
解决办法
4万
查看次数

Z80'Game Boy'的CPU是8位还是16位?

我正在阅读有关创建Game Boy模拟器的教程,我知道Game Boy使用的是8位CPU,但我无法理解为什么Gameboy使用两种类型的数据:字节(8位)和字(16位) ).

如果CPU的容量为8位,为什么可以使用16位?

cpu 16-bit 8-bit gameboy

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

“CPU 执行无限跳转”是什么意思?

我正在阅读:https : //www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf 我在第 8 页阅读了以下内容:

e9 fd ff 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

*

00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa

最初的三个字节,十六进制为 0xe9、0xfd 和 0xff,实际上是 CPU 制造商定义的机器代码指令,用于执行无限跳转。

他们所说的“执行无休止的跳跃”是什么意思?

cpu boot machine-code sector

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

您的 CPU 不支持 VT-x

我已经创建了 AVD,但是当我尝试运行 android 程序时,它显示一个错误

您的 CPU 不支持 VT-x

我在 BIOS 中启用了虚拟化技术,但是当我尝试运行我的 android 程序时仍然出现这个错误。

cpu android android-virtual-device android-emulator

8
推荐指数
3
解决办法
4万
查看次数

多核 CPU 中断

多核处理器如何处理中断。我知道单核处理器如何处理中断。我也知道不同类型的中断。我想知道多核处理器如何处理硬件、程序、cpu时序和输入/输出中断

cpu multiprocessing

8
推荐指数
2
解决办法
3452
查看次数

multiprocessing.cpu_count 和 os.cpu_count 的区别

osmultiprocessing模块定义一个cpu_count函数。

os.cpu_count 记录如下:

返回系统中的 CPU 数量。如果未确定,则返回 None。

andmultiprocessing.cpu_count的文档说:

返回系统中的 CPU 数量。可能会引发 NotImplementedError。另见 os.cpu_count()

在我的机器上,它们都返回相同的结果:

>>> import os
>>> import multiprocessing as mp
>>> os.cpu_count()
8
>>> mp.cpu_count()
8
Run Code Online (Sandbox Code Playgroud)

我原以为这multiprocessing.cpu_count只是对 的引用os.cpu_count,但事实并非如此:

>>> os.cpu_count is mp.cpu_count
False
Run Code Online (Sandbox Code Playgroud)

那么它们之间有什么区别呢?我能保证他们总是返回相同的结果吗?此外,如果我想指定要为其创建的多个进程multiprocessing.Pool,我应该使用osormultiprocessing的函数吗?

python cpu multiprocessing python-os

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