Skip to main content

Command Palette

Search for a command to run...

计算机底层原理 - 1

Updated
1 min read
计算机底层原理 - 1
T

A simple developer.

  1. CPU、内存
  • CPU:用于计算的硬件
  • 内存:用于存储

一个程序的执行过程: 程序代码在内存中跑,cpU向内存要一条条待执行指令(即代码编译后的底层计算指令),到cpu中进行计算,计算完毕后结果在存放到内存,以待后续使用,依此执行所有指令

  • cpu在自己的缓存或寄存器等事物中取出数据计算,速度非常快,是到内存中取数据的100倍。
    • 如何提高这个速度? —— 使用缓存技术(目前使用最多为三级缓存L1,L2,L3)
    • 依次从 L1 -> L2 -> L3 -> 内存 查找数据,返回数据时则依次 内存 -> L3 -> L2 -> L1 留下数据备份(缓存)
    • 空间局部性原理:取数据时,将待取数据附近的数据一同取了,减少频繁的向内存取数据操作(这里绝大多数采用 64字节 作为附近数据同一取出,这个概念叫 缓存行)

image.png

image.png

  • 缓存一致性协议(硬件协议):

当多线程编程时,两个计算读取了同一行数据,并做修改后,通知另一线程更新数据就极为重要了,这里同步数据的协议即为 缓存一致性协议,目前Inter、AMD使用MESI最为广泛。

image.png

让两个不同线程修改数据,尽量在不同一行缓存行,如此减少缓存一致性原则带来的数据同步消耗

image.png

More from this blog

Git 无法正常访问问题解决 —— DNS无法解析git地址

在国内网络经常会无法访问github,一般呈现错误为: github.com 打不开 git 操作 clone/push/pull/fetch 超时等 这普遍由于国内DNS解析github相关域名的问题,国内DNS解析污染会导致,无法解析github相关域名,使得我们无法获悉正确ip而无法访问。 偏方一剂:修改Host,固定绑定 domain - ip 查询相关域名的解析 IPAddress github.com github.global.ssl.fastly.net asse...

Sep 22, 20221 min read

Vue SSR实战小练

思想 开发环境: 在webpack dev与pro的前端打包构建基础上, 添加webpack server compiler的服务,其为单独创建的node服务,用于渲染html代码并返回给客户端。(其他JS...则仍旧交由webpack dev server来构建) 所以在获取html后要再自行将dev客户端渲染的js加入到html中 在生产环境则不需如此: 由dev与server打包好的文件,将其组合 客户端则访问node服务来获取文件 基本用法 安装:npm install v...

Sep 5, 20229 min read

Jsonp 跨域解决方案解析

由来背景 As we all know,浏览器同源策略会将非同源请求(跨域)抛弃,而许多时候我们可能并未将前端资源与服务端服务放在一个服务器,此时就需要一个跨域的手段了。 基于此,针对同源策略,衍生了一种跨域的方法Jsonp。 Jsonp简单讲,即利用了script标签不受浏览器同源策略影响的特性,从而利用script想服务端跨域请求的方式。 原理解析 图下图所示 封装一个Jsonp函数,Promise化 // jsonp.ts type JsonpOptions<T extends Reco...

Sep 2, 20222 min read
Jsonp 跨域解决方案解析

唯在一心

15 posts

A simple developer.