![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机硬件管理
文章平均质量分 61
Farmwang
博采众长,兼收并蓄!
展开
-
CPU Cache
转载 2018-12-02 10:25:09 · 430 阅读 · 0 评论 -
段式管理的几个相关寄存器
/* author: mik * project: pm_simulation (一个保护模式行为模拟器) * * sregister.h 这个文件描述段管理的几个相关寄存器的结构 */ #ifndef __SREGISTER__#define __SREGISTER__ /* 选择子共16位长 */typedef struct selector转载 2016-07-24 21:02:38 · 619 阅读 · 0 评论 -
中断和异常
中断和异常中断和异常概述中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换.1. 中断(Interrupt)中断包括硬件中断和软中断.转载 2016-07-24 21:01:10 · 5215 阅读 · 0 评论 -
TSS的定义
/* author: mik * project: pm_simulation (一个保护模式行为模拟器) * * tss.h 这个文件描述TSS块 */ #ifndef __TSS__#define __TSS__ /* 定义 TSS */typedef struct TASK_STATE_SEG { unsigned link转载 2016-07-24 20:55:44 · 794 阅读 · 0 评论 -
堆栈的切换
当目标代码执行完毕,需要返回控制权给原代码时,将产生返回控制权行为。返回控制权行为,比转移控制权行为简单得多。因为,一切条件已经在交出控制权之前准备完毕,返回时仅需出栈就行了。 1、 near call的返回近调用情况下,段不改变,即 CS 不改变,权限级别不改变。从栈中pop返回地址到EIP寄存器时,需进行 limit 的检查。 2、 直接控制权转移的返回(far cal转载 2016-07-24 20:53:17 · 1297 阅读 · 0 评论 -
进入保护模式
以下图2, 图4和图5截自Intel手册全局描述符表全局描述符表中存放着段描述符, 每个段描述符8个字节.为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限), 其值等转载 2016-07-24 20:48:52 · 1340 阅读 · 0 评论 -
存储器的保护
我们都已经知道, 在保护模式下, 代码段是不可写入的. 所谓不可写入, 并非是说改变了内存的物理性质, 使得内存写不进去, 而是说, 通过该段的描述符来访问这个区域时, 处理器不允许向里面写入数据或者更改数据. 但是, 很多时候又需要修改代码段, 如调试时加入断点指令int3. 不管怎么样, 如果需要访问代码段内的数据, 只能重新为该段安装一个新的描述符, 并将其定义为可读可写的数据段. 这样,转载 2016-07-24 20:47:27 · 755 阅读 · 0 评论 -
任务和特权级保护
任务和特权级保护目录(?)[+]本文为 第14章笔记任务的隔离和特权级保护任务, 任务的LDT和TSS程序是记录在载体上的指令和数据, 总是为了完成某个特定的工作, 其正在执行中的一个副本, 叫做任务(Task). 这句话的意思是说, 如果一个程序有多个副本正在内存中运行, 那么, 它对应着多个任务, 每一个副本都是一个任务. 为了有效的在任务之间实转载 2016-07-24 20:46:15 · 775 阅读 · 0 评论 -
x64内核内存空间结构
x64内核内存空间结构0x00 前言本文主要是讨论Windows 7 x64下的内核虚拟地址空间的结构,可以利用WiinDBG调试的扩展命令"!CMKD.kvas"来显示x64下的内核虚拟地址空间的整体布局。了解内核的地址布局在某些情况下是很有的,比如说在研究New Blue Pill的源码和虚拟化的时候。0x01 基本结构X64的CPU的地址为64位,但实际上只支持48位的虚转载 2016-07-24 20:32:23 · 2451 阅读 · 0 评论 -
深入理解Windows X64调试
匠心深入理解Windows X64调试随着64位操作系统的普及,都开始大力进军x64,X64下的调试机制也发生了改变,与x86相比,添加了许多自己的新特性,之前学习了Windows x64的调试机制,这里本着“拿来主义”的原则与大家分享。本文属于译文,英文原文链接:http://www.codemachine.com/article_x64deepdive.html翻译转载 2016-07-24 20:30:51 · 2882 阅读 · 0 评论 -
匠心 x64 结构体系下的内存寻址
欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4735027.html在阅读NewBluePill源码的时候,看内存的那一块简直头疼,全是x64下的寻址,之前根本就没有接触过x64的内存寻址上的内容,看的晕头转向,决定先把x64下的寻址给弄明白了再回过头来看NewBluePill的源码,然后在网上一顿找,居然没有找到关于x64寻址的博客或转载 2016-07-24 20:27:38 · 2181 阅读 · 1 评论 -
理解“统一编址与独立编址”,“I/O端口与I/O内
从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示器…… 对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄转载 2015-11-28 22:04:27 · 3353 阅读 · 0 评论 -
cpu控制器
CPU控制器 控制器是整个CPU的指挥控制中心,由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)和操作控制器0C(OperationController)三个部件组成,对协调整个电脑有序工作极为重要。指令寄存器 指令寄存器:用以保存当前执行或即将执行的指令的一种寄存器。指令内包含有确定操作类型的操作码和指出操作数来源转载 2015-11-28 20:31:37 · 9254 阅读 · 0 评论 -
IO之流程与buffer概览
转载 2017-03-16 19:05:19 · 328 阅读 · 0 评论 -
多级Cache原理
多级Cache技术,利用使用一个大的二级Cache来处理一级Cache的缺失,从而降低缺失代价。二级Cache已经逐渐普及,这是因为设计者发现由于硅的局限性以及高时钟平率的要求,一级Cache的容量已经无法更大了。二级Cache的容量通常是一级容量的10倍甚至更多,因而能处理很多一级cache 缺失引起的访问。二级Cache访问通常小于10个处理器周期。主存访问时间通常大于原创 2017-05-05 16:31:31 · 13127 阅读 · 3 评论 -
Cache大小的考量
1:L1 Level Cache 不能太大的原因是: (1):Cache越大,寻址所需的门电路就会越大,结果是大的Cache比小的稍慢 (2):Cache 容量也受到芯片和电路板面积的限制2:L1 Cache 容量大的优点, Cache容量 大,使得整个系统的平均存取时间接近于单个Cache的存取时间’原创 2017-05-06 18:57:01 · 4882 阅读 · 0 评论 -
计算机的存储器层次结构以及一二三级缓存的区别
hibernate一级缓存和二级缓存的区别:主要的不同是它们的作用范围不同。一级缓存是session级别的。也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了。而二级缓存是sessionFactory级别的。其缓存对同一个sessionFactory生产出来的session都有效,二级缓存我们通常使用其他的一些开源组件,比如hibernat...转载 2018-12-02 09:42:43 · 3371 阅读 · 0 评论 -
计算机缓存架构
从CPU到 大约需要的 CPU 周期 大约需要的时间 主存 约60-80纳秒 QPI 总线传输 (between sockets, not drawn) 约20ns L3 cache 约40-45 cycles 约15ns L2 cache 约10 cycles, 约3ns L1 cache 约3-4 c...转载 2018-12-02 09:39:00 · 504 阅读 · 0 评论 -
Cache一致性协议之MESI
处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议,奔腾处理器有使用它,很多其他的处理器都是使用它的变种。单核Cache中每个Cache line有2个标志:dirty和valid标志,它们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效,数据是否被修改),而在多核处理器中,多个核会共享一些数据,MESI协议就包含了描述共享...转载 2018-10-25 11:11:28 · 1510 阅读 · 0 评论 -
什么是缓存一致性问题?如何解决?
当程序在运行过程中,会将运算需要的数据从主存复制一份到cup的高速缓存当中,那么cpu进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束后,再将高速缓存中的数据刷新到主存当中。举个简单的例子,比如下面这段代码:i=i+11当线程执行这个语句时,会先从缓存当中读取i的值,然后复制一份到高速缓存当中,然后CPU执行命令对i进行加1操作,然后将数据写入高速缓存。最后将高速...转载 2018-10-25 10:22:25 · 1118 阅读 · 0 评论 -
CPU cache结构和缓存一致性(MESI协议)
一、cache cpu cache已经发展到了三级缓存结构,基本上现在买的个人电脑都是L3结构。1. cache的意义 为什么需要CPU cache?因为CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题(结构:cpu -> cache -> memory)。...转载 2018-10-25 10:07:29 · 2364 阅读 · 1 评论 -
同网段和不同网段设备通信原理详解
在当今的以太网络通信中,在IP数据包中有两个必不可少的地址,那就是IP地址和网卡地址(即MAC地址),在数据包中,无论是IP地址还是MAC地址,都有源地址和目标地址,因为通信是双方的,所以就必须同时拥有双方的地址!在同一IP网络中通信,将会发生以下事件:主机A与主机B通信,这时主机A肯定首先要封装这些需要发给主机B的数据包,那么对于主机A来说,自己的IP地址和MAC自己肯定能够轻易得到,对于主...转载 2018-10-07 22:20:59 · 1190 阅读 · 0 评论 -
提高程序性能、何为缓存——从存储器结构说起
中对程序局部性有了一个简单的介绍。基本上已经知道了如何编写有良好局部性的代码。但是为什么有良好局部性的代码就能有良好的运行效率,这个问题将在这篇博文中给出解答。至于存储器内部的组织实现,将在下篇文章中叙述。存储器层次结构我们知道,计算机里的存储器有:硬盘、主存、高速缓存(其中又有一级高速缓存、二级高速缓存等等)、在往上就是寄存器。存储器在计算机内部的组织方式如下图所示:相信上图...转载 2018-10-07 19:46:18 · 174 阅读 · 0 评论 -
计算机组成原理--main memory 到 cache 映射机制
基本介绍为了平衡高速的CPU与较慢的主存之间的差异,我们引入到了cache作为中间媒介,cache的主要作用说来可以理解成将主存中很有可能被CPU使用的小部分数据调入cache中,由于cache是很快的,则可以对系统的系统有较大提升。相关详细情况可以参见计算机组成原理–cache概念及其作用。这篇博客的主要任务是探讨Main memory到cache的多种映射机制,并讨论其优势与劣势,知道...转载 2018-10-07 19:37:35 · 1567 阅读 · 0 评论 -
Memory Hierarchy-计算机各级存储器速度对比
这篇文章是抄自亚嵌的教材,觉得不错,分享一下。由于硬件技术的限制,我们可以制造出容量很小但很快的存储器,也可以制造出容量很大但很慢的存储器,但不可能两边的好处都占着,不可能制造出访问速度又快容量又大的存储器。因此,现代计算机都把存储器分成若干级,称为Memory Hierarchy,按照离CPU由近到远的顺序依次是CPU寄存器、Cache、内存、硬盘,越靠近CPU的存储器容量越小但访问速度越快...转载 2018-10-07 19:25:54 · 7841 阅读 · 0 评论 -
说说计算机中的异常
开篇异常这个名词应该大家都不陌生,很多人都听说过。系统调用知道吧?其实系统调用也是一种异常。但是具体的什么是异常呢?他在计算机中有什么作用?他是如何工作,如何被我们利用的?我想很多人都还不都是很清楚。、了解异常有诸多好处,可以让你更好的理解操作系统和应用程序的交互,更好的理解并发等。所以今天就简单的来说一下异常。 注:本博文图片来源《Computer system-A Progra...转载 2018-10-07 19:10:10 · 855 阅读 · 0 评论 -
cpu如何知道内存中一条指令的大小从而使cs:ip寄存器更改自己的值
cpu里面有个译码器,可以确定当前CS:ip指向机器码对应要执行的指令,包括指令的长度等等信息,cpu的指令是经过编码的,所以中间有个译码的过程可以参考计算机体系结构里面关于cpu指令设计相关的知识。CPU内有一个编译器,从IP指向的第一个字节开始,先查找操作码,一个字节不够,再加上下一个字节,直到找到符合的操作码,然后按操作码对操作数的要求凑够操作数,这就是一条指令。 现在INTEL转载 2017-07-12 09:24:02 · 1923 阅读 · 1 评论 -
Cache行大小的考量
当数据块由小变大时,命中率可能是因为局部性原理的原因而增加,随着块大小的增加,更多有用的数据被装入到Cache中,但是随着块变的相当大时,并且使用新取信息的概率变得小于重用已被替换掉的信息概率时,命中率开始下降1:Cache块太大,就意味着减少装入Cache的块数,过少的cache 块数量导致装入的数据很快被替换出去2:块变大时,每个附加字段就会离所需子更远,因此被使用的可能性原创 2017-05-06 19:09:44 · 6034 阅读 · 0 评论 -
为什么寄存器比内存快
计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。原因一:距离不同距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远转载 2015-11-28 20:00:29 · 437 阅读 · 0 评论 -
tr 寄存器
任务寄存器tr保存 16 位的段选择子、32 位基地址、16 位段界限和当前任务的 TSS属性。它引用 GDT 中的 TSS 描述符。基地址指明 TSS 的第一个字节(字节 0)的线性地址,段界限确定 TSS 的字节个数。TR寄存器包含了当前正在CPU运行的进程的TSSD(任务段描述符)选择符。也包含了两个隐藏的非编程域:TSSD的base 和limit域。通过这种方式处理器就能直接对TSS寻址,转载 2015-11-28 22:56:03 · 1800 阅读 · 0 评论 -
选AMD K8的CPU,你注意内存的搭配了吗?
AMD K8 之前的系统总线介绍,请参考:《PC架构系列:CPU/RAM/IO总线的发展历史!》 对于AMD发布的K8处理器,有一个最大的改变,就是CPU的核心中集成了内存控制器 (Memory-Controller)。这就意味着CPU可以直接访问内存(RAM),而不用像之前那样需要通过系统总线连接到北桥芯片了,或者说北桥芯片中已经可以不再需要内存控制器的功能了。那么,随着“经典”转载 2015-11-23 23:39:07 · 595 阅读 · 0 评论 -
cpu指令如何读写硬盘
在《cpu解读一》中,我们提到cpu的主要作用之一就是控制设备之间的数据交互。这其中自然也包括了硬盘。系统的所有数据基本都在硬盘中,所以知道怎么读写硬盘,对程序来说非常重要,所以我们先来探索下传说中的pio模式。cpu要想直接访问设备里的数据,必须对设备存储空间进行编址。而硬盘数据数据太大,直接编址数据线成本太高,于是设计上在这类设备和总线之间加了一个控制器。这个控制器里有少量寄存器可以被转载 2015-11-23 19:42:04 · 9803 阅读 · 0 评论 -
指令译码与控制解读
随着我们的解读,计算机的结构已经越来越清晰,我们知道将计算机指令组合在一起成为程序来控制硬件工作,这样巧妙的通过编写不同的软件来控制相同的硬件以完成不同的任务,以增强系统灵活性。我们也知道计算机指令无非也就是传传数据,作作运算。但是我们仍不知道对于每一条指令的执行,计算机是如何控制的。cpu内部控制和pc体系机构一样,cpu内部也是一个有机整体,分成很多部件来一起完成cpu的功能。与外转载 2015-11-24 00:09:55 · 5307 阅读 · 1 评论 -
DMA控制器的引入
话说cpu的主要工作是读取程序指令流来执行,指令主要包括两部分,一部分是运算,自己搞定,一部分是控制数据在设备之间的传输,这是通过与设备的设备管理器或者设备适配器交互来搞定的。无非也就是读写设备控制器的寄存器。甚至于这种读写设备控制器的寄存器,也没有亲历亲为,只是把地址或者加上数据传到总线上,中间经过了一些列路由才到了设备控制器那里。这进一步减轻了cpu的复杂度。这样看来,cpu的工作并不转载 2015-11-23 21:58:12 · 884 阅读 · 0 评论 -
CPU/RAM/IO总线的发展历史!
1. 从 IBM PC XT 架构开始...一开始PC的设计中,CPU/RAM/IO都是被一条总线(BUS)连接起来,所有的部件都必须在同步的模式下面工作,由CPU来决定的其他设备工作在什么频率(Frequency)上。这样就带来一个"互锁" (locked to each other )效应,即大家都被限定在一个被所有设备所能承受的通用时钟频率(Clock Frequency)上面,系统转载 2015-11-23 21:54:52 · 1027 阅读 · 0 评论 -
初识体系结构
通过前面的解读,我们对计算机的体系结构有了一定的了解,特别是通过对硬盘读写的跟踪,我们知道了计算机里除了cpu外,还有一些设备控制器,和一系列设备,其中cpu指令控制设备控制器,设备控制器再控制设备完成具体的工作。cpu寻址原理现在,我们可以再往细里推进。我们现在更加认识到,cpu的核心功能是控制软件的自动执行以及完成计算指令,计算机指令中除了计算指令外,最重要的即使寻址指令了,也就是原创 2015-11-23 21:53:25 · 444 阅读 · 0 评论 -
硬盘内部硬件结构和工作原理详解
一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标、型号、序列号、生产日期、容量、参数和主从设置方法等。这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义。硬盘主要由盘体、控制电路板和接口部件等组成,如图1-1所示。盘体是一个密封的腔体。硬盘的内部结构通常是指盘体的内部结构;控制电路板上主要有硬盘BIOS、硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示;硬盘接口包转载 2015-11-22 11:58:34 · 3469 阅读 · 0 评论 -
int 0x13 中断理解
BIOS中断INT 0x13中,ah=0x02,即为读磁盘扇区到内存,利用这二号服务即可读入setup模块。调用此功能将从磁盘上把一个或更多的扇区内容读进存贮器。因为这是一个低级功能,在一个操作中读取的全部扇区必须在同一条磁道上(磁头号和磁道号相同)。BIOS不能自动地从一条磁道末尾切换到另一条磁道开始,因此用户必须把跨多条磁道的读操作分为若干条单磁道读操作。入口参数:原创 2015-11-21 13:57:16 · 11455 阅读 · 1 评论 -
CPU DISK RAM
当你看图时,请牢记一个至关重要的事实:CPU一点也不知道它连接了什么东西。CPU仅仅通过一组针脚与外界交互,它并不关心外界到底有什么。可能是一个电脑主板,但也可能是烤面包机,网络路由器,植入脑内的设备,或CPU测试工作台。CPU主要通过3种方式与外界交互:内存地址空间,I/O地址空间,还有中断。(二)编址方式1)外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“转载 2015-11-21 13:45:41 · 545 阅读 · 0 评论 -
实模式和保护模式
实模式和保护模式收藏人:李欣2009-10-13 | 阅:2533 转:21 | 来源 | 分享转载 2015-01-14 19:44:01 · 600 阅读 · 0 评论