计算机的硬件速度总结
CPU-3GHZ
每秒执行 3*10^9次/s,也就是1ns执行3次,时钟周期约0.3ns
光速是 3*10^8m/s=0.3m/ns 0.3ns光行走0.1m=10cm
L1 cache 32k 3 cycles 1ns
L2 cache 6M 14 cycles 4.7ns
L3 cache: 25 cycles
memory 100 cycles
正常情况下,当CPU操作一块内存区域时,其中的信息要么已经保存在L1/L2 cache,
要么就需要将之从系统主存中调入cache,然后再处理
cpu从cache取数据最小单位cache line 64bytes和DDR3 4一次访问数据大小一致
memory从ssd拿数据最小单位通常是4k bytes
北桥芯片 bindwidth 10Gb/s
DDR3主存 1333Mhz ,250个时钟周期 83ns
pci express x16 8Gb/s
CPU缓存基本由SRAM不需要刷新时间所以凸显其数据传输速度很快
DRAM只含一个晶体管和一个电容器,集成度非常高,靠电容器来储存信息,
所以需要不断刷新补充电容器的电荷
南桥芯片 bindwidth 1Gb/s
pci express x1 500Mb/s
wired ethernet 1G 100Mb/s
wireless 802.11b 1Mb/s
wireless 802.11g 2.5Mb/s
internet latency 80ms
SATA 300Mb/s
7200 RPM 16M Cache 60Mb/s
USB 1.0 1Mb/s
USB 2.0 30MB/s
网卡
10G网卡接口每秒需要处理接近15M个packet,15M packets * 8 bit * 84 byte
1个packet处理时间需要在70ns之内
TLB
每个进程需要解决虚拟地址到物理地址的映射问题
4k为一个页表,页表项4bytes表示,4G内存需要2^20个页表项,约4M内存
多级页表查询会比较慢,一级页表可以直接获得物理内存地址。
二级页表先确定一级再确定二级然后获得物理地址,二级页表2^10+2^10个页表项,约8k内存
64位系统更大内存,支持成千上万个进程,需要方案折中
4级页表2^9 个PGD + 2^9 个PUD + 2^9 个PMD + 2^9 个PTE = 2048个页表项
可以支持2^36个页表等于256T内存,一个页表8bytes,需要16K内存,5次内存IO访问一个物理内存
TLB访问速度非常快,和寄存器相当,比L1访问还快。类似cache,全相连,直接匹配,组相连
1.CPU产生一个虚拟地址
2.MMU从TLB中获取页表,翻译成物理地址
3.MMU把物理地址发送给L1/L2/L3/内存
4.L1/L2/L3/内存将地址对应数据返回给CPU
perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses -p $PID
硬盘
硬盘驱动器(HDD)
在旋转盘片上以磁性方式存储数据,寻道找到磁盘上数据存储
成本低
而固态驱动器(SSD)
在半导体电路上以电子方式存储数据,通过电学信号的传输完成对闪存芯片。
主控缓存和闪存组成,由于不存在机械结构;
受到读写次数的限制,固态硬盘的使用寿命比较短
比机械硬盘更容易受到外界的干扰,而且数据损坏是难以修复的
固态硬盘读取数据的时间一般都在0.1ms以下,而机械硬盘读取数据的时间一般在10ms
Numbers Everyone Should Know
L1 cache reference 读取CPU的一级缓存 0.5 ns
Branch mispredict(转移、分支预测) 5 ns
L2 cache reference 读取CPU的二级缓存 7 ns
Mutex lock/unlock 互斥锁\解锁 100 ns
Main memory reference 读取内存数据 100 ns
Compress 1K bytes with Zippy 1k字节压缩 10,000 ns
Send 2K bytes over 1 Gbps network 在1Gbps的网络上发送2k字节 20,000 ns
Read 1 MB sequentially from memory 从内存顺序读取1MB 250,000 ns
Round trip within same datacenter 从一个数据中心往返一次,ping一下 500,000 ns
Disk seek 磁盘搜索 10,000,000 ns
Read 1 MB sequentially from network 从网络上顺序读取1兆的数据 10,000,000 ns
Read 1 MB sequentially from disk 从磁盘里面读出1MB 30,000,000 ns
Send packet CA->Netherlands->CA 一个包的一次远程访问 150,000,000 ns
DPDK
https://www.slideshare.net/garyachy/dpdk-44585840