计算机组成

CPU及内存

下图为两颗CPU,每颗CPU为2核

CPU重要组成

  1. PC(程序计数器):存放下一条指令所在单元的地址
  2. Registers(寄存器):存数据
  3. ALU(算术逻辑单元):进行运算

内存(内存储器)

  1. 暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据
  2. 程序的运行都在内存中进行

CPU从内存中取数据

运算单元ALU从寄存器中取数据和从内存中取数据的速度比是1:100,取数据寄存器比内存大概快100倍

三级缓存

  • 1级2级缓存在同一内核中共享,3级缓存在同一CPU中共享
  • 取数据:依次查找数据:寄存器-->L1-->L2-->L3-->内存
  • 写数据:依次写入数据:内存-->L3-->L2-->L1-->寄存器(修改数据时如同一个数据在多个核心内有缓存,全部都要修改)

缓存行

  • 缓存管理数据的基本单位
  • 缓存某一个数据时把相邻数据一起缓存
  • 大小:64bytes(Long 8个字节可存8个)

存在问题:(数据x、y在同一缓存行,A核使用X,B核使用Y,A核修改X就要去B核同步X值,B核修改Y就要去A核同步Y值)  优化方案1:对需要频繁操作的数据,相邻地方补充空数据,使缓存行不能存其他数据

示例1

示例2(环形缓冲区)

优化方案2:jvm提供的注解

CPU、内存、三级缓存(学习笔记)相关推荐

  1. Java虚拟机(JVM)与Java内存模型(JMM)学习笔记

    Java虚拟机[JVM]与Java内存模型[JMM]学习笔记 Java虚拟机(JVM) 三种JVM JVM 位置 JVM的主要组成部分及其作用 类加载器 双亲委派机制 沙箱安全机制 Java本地接口( ...

  2. 《深入理解LINUX内存管理》学习笔记(一)

    引子 为什么要写这个笔记: 1,这本书的中文版翻译了太垃圾,没法阅读.阅读英文原版,可以很好的理解作者的思路.作此笔记备忘 2,一直以来学习LINUX kernel的知识缺乏系统化,借对这本书的学习, ...

  3. 内存管理基础学习笔记 - 5.2 页面回收 - kswapd

    目录 1. 前言 2. kswapd_init 3.kswapd |- -balance_pgdat |- - -pgdat_balanced |- - -kswapd_shrink_node |- ...

  4. 内存管理基础学习笔记 - 2. 内核地址空间 - SLAB

    目录 1. 前言 2. slab总体说明 3. kmem_cache_create |- -__kmem_cache_create |- - -setup_cpu_cache 4. kmem_cach ...

  5. 内存管理基础学习笔记 - 3.2 进程地址空间 - brk系统调用

    目录 1. 前言 2. SYSCALL_DEFINE1(brk, unsigned long, brk) |- -__do_munmap |- -do_brk_flags |- - -get_unma ...

  6. 内存管理基础学习笔记 - 3.1 进程地址空间 - VMA线性区

    目录 1. 前言 2. 进程地址空间 3. 用户空间与内核空间的隔离 4. 进程地址空间主要数据结构 struct mm_struct struct vm_area_struct 5. vma的标志属 ...

  7. RT-Thread 静态内存管理(学习笔记)

    本文参考自[野火EmbedFire]<RT-Thread内核实现与应用开发实战--基于STM32>,仅作为个人学习笔记.更详细的内容和步骤请查看原文(可到野火资料下载中心下载) 文章目录 ...

  8. RT-Thread 动态内存管理(学习笔记)

    本文参考自[野火EmbedFire]<RT-Thread内核实现与应用开发实战--基于STM32>,仅作为个人学习笔记.更详细的内容和步骤请查看原文(可到野火资料下载中心下载) 文章目录 ...

  9. mybatis缓存学习笔记

    mybatis有两级缓存机制,一级缓存默认开启,可以在手动关闭:二级缓存默认关闭,可以手动开启.一级缓存为线程内缓存,二级缓存为线程间缓存. 一提缓存,必是查询.缓存的作用就是查询快.写操作只能使得缓 ...

  10. memcache/redis 缓存学习笔记

    0.redis和memcache的区别 a.redis可以存储除了string之外的对象,如list,hash等 b.服务器宕机以后,redis会把内存的数据持久化到磁盘上,而memcache则不会 ...

最新文章

  1. 把2018年所有踩过的坑都记在这里。
  2. MATLAB 添加自定义的模块到simulink库浏览器
  3. oracle 日志的容量,oracle 11g 更改日志组大小
  4. 我常用的电脑操作快捷键
  5. java并发编程一:基础知识
  6. 动态内存分配导致内存泄漏之处
  7. 【C++ grammar】nullptr and Dynamic Memory Allocation (空指针和动态内存分配)
  8. 攻破Win7~Win10 PatchGuard(KPP DSE)【支持Win10 TH1/TH2/RS1/RS2】【WIN64内核越狱】
  9. Oracle安全漏洞2016.10报告
  10. 敏捷开发般若敏捷系列之四:如何推广敏捷(上)(无我,无人,无众生)
  11. 碎片知识总结_刷题篇
  12. 【相机标定系列】相机成像的理想模型原理,相机矩阵分解
  13. 七张王牌助你做人做事顺遂成功
  14. 计算机毕业设计之校园二手交易平台
  15. Mac墨刀怎么导出HTML,mockingbot墨刀中文使用说明.pdf
  16. 关于职业规划的座谈会
  17. JSP常用内置对象方法
  18. 计算机共享的无线手机连上但上不去网的解决方法
  19. python源代码文件后缀,python源文件后缀是什么-Python教程
  20. 高仿淘宝分页:jQuery分页插件kkpager-Array-专题视频课程

热门文章

  1. 802.1x身份验证
  2. 第20讲:Mybatis 中 XML 文件是如何解析的?
  3. 声速的测量的实验原理和应用_示波器的原理和使用、声速测量实验报告
  4. 数据可视化:数据可视化的意义
  5. Fire Workflow 1.0正式版终于发布了
  6. 神经网络预测彩票数据
  7. 科技公司融资潮后怎么走?Snap公司40亿美元投石问路
  8. python模拟器 截图_在Linux中20个命令行终端模拟器截图对比
  9. 使用Eclipse开发PHP项目
  10. html中购物车图标,纯CSS3实现单元素购物车图标