课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于软件开发程序员来说,除了需要掌握不同的编程开发知识以外,对于计算机硬件也应该有一个基本的了解,而今天我们就给大家简单分析一下,计算机cpu读写基础知识。
理解CPU是如何读写数据的前提,是要理解CPU的架构,CPU内部的多个Cache+外部的内存和磁盘都就构成了金字塔的存储器结构,在这个金字塔中,越往下,存储器的容量就越大,但访问速度就会小。
CPU读写数据的时候,并不是按一个一个字节为单位来进行读写,而是以CPULine大小为单位,CPULine大小一般是64个字节,也就意味着CPU读写数据的时候,每一次都是以64字节大小为一块进行操作。
因此,如果我们操作的数据是数组,那么访问数组元素的时候,按内存分布的地址顺序进行访问,这样能充分利用到Cache,程序的性能得到提升。但如果操作的数据不是数组,而是普通的变量,并在多核CPU的情况下,我们还需要避免CacheLine伪共享的问题。
所谓的CacheLine伪共享问题就是,多个线程同时读写同一个CacheLine的不同变量时,而导致CPUCache失效的现象。那么对于多个线程共享的热点数据,即经常会修改的数据,应该避免这些数据刚好在同一个CacheLine中,避免的方式一般有CacheLine大小字节对齐,以及字节填充等方法。
系统中需要运行的多线程数一般都会大于CPU核心,这样就会导致线程排队等待CPU,这可能会产生一定的延时,如果我们的任务对延时容忍度很低,则可以通过一些人为手段干预Linux的默认调度策略和优先级。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。