- 博客(54)
- 收藏
- 关注
原创 一文搞懂IO Space与MMIO Space
MMIO 空间利用内存访问指令进行操作,访问速度和内存访问速度相近,通常比 IO 空间的访问速度快。但由于和内存共享地址空间,可能会出现地址冲突的问题,需要进行更复杂的地址管理。由于和内存共用地址空间,因此 MMIO 空间的地址范围较大,地址译码相对复杂。在传统计算机体系里,它有自己独立的地址线和控制线,和内存地址空间是分开的。也就是给每个设备分配特定的内存地址,CPU 对这些地址进行读写操作时,实际是在和对应的设备进行通信。由于有独立的地址空间和专门的输入 / 输出指令,IO 空间的访问速度相对较慢。
2025-04-17 11:04:36
279
原创 APIC 是什么?深度解析高级可编程中断控制器
APIC 的演进见证了计算机系统从单核到多核、从单一设备到复杂生态的发展历程。理解 APIC 的设计思想与实现细节,不仅能帮助开发者优化系统性能,还能为未来硬件架构创新提供灵感。在多核并行计算成为主流的今天,APIC 依然是构建高效、稳定计算平台的基石。
2025-03-11 14:52:03
871
原创 CPU、GPU、NPU:计算机三大核心处理器的功能与未来趋势
CPU、GPU 和 NPU 的发展体现了计算机硬件从 “通用化” 到 “专业化” 的演进。随着 AI、元宇宙等技术的兴起,三者的分工将更加明确:CPU 依然是系统的 “大脑”,GPU 是并行计算的 “肌肉”,NPU 则是 AI 时代的 “神经中枢”。未来,它们的协同将持续推动计算性能的突破,重塑人类与数字世界的交互方式。
2025-03-10 14:41:16
1056
原创 计算机中的UEFI
UEFI 是英特尔等公司为了取代传统的 BIOS(基本输入输出系统)而开发的一种技术标准,它定义了操作系统与硬件之间的接口规范,提供了更先进的启动管理、硬件初始化和系统服务等功能,能够在计算机启动过程中为操作系统和硬件之间建立起一个更高效、更灵活的桥梁。然后,UEFI 会根据用户设置的启动顺序,从硬盘、光盘、U 盘等启动设备中寻找可启动的操作系统,并加载操作系统的启动加载程序。此外,UEFI 还支持快速启动功能,可以在不关闭系统的情况下快速进入睡眠或休眠状态,并在需要时迅速唤醒,提高了系统的响应速度。
2025-03-04 17:08:44
376
原创 计算机架构简介
RISC-V 是基于精简指令集计算(RISC)原理建立的开放标准指令集架构(ISA),2010 年诞生于加州大学伯克利分校。其指令集简单且高度可定制,任何人都可免费使用、修改和扩展。
2025-03-04 15:14:35
503
原创 CISC架构
例如,英特尔的 x86 架构就是典型的 CISC 架构,它拥有丰富的指令,包括各种算术运算、逻辑运算、数据处理、控制转移等指令,还包含一些专门用于处理复杂数据类型和特定任务的指令,如字符串处理指令、多媒体处理指令等。例如,一条简单的加法指令和一条复杂的字符串处理指令,它们的指令长度和格式会有很大不同。:由于 CISC 指令集功能强大,一条指令可以完成较多的工作,所以在编写程序时,程序员可以使用更高级的语言特性,编译器的任务相对简单,不需要对指令进行过多的优化和组合,就能生成具有一定效率的代码。
2025-03-04 15:05:30
464
原创 RISC架构
在 RISC 架构中,只保留了一些最基本、最常用的指令,这些指令通常具有简单的格式和固定的长度,能够在一个时钟周期内完成执行。比如,大多数 RISC 指令的长度可能固定为 32 位,指令中的操作码、寄存器编号等字段的位置和长度都是固定的,这使得处理器的指令译码电路可以设计得更加简单高效。它将指令执行过程分为多个阶段,如取指、译码、执行、访存、写回等,每个阶段由专门的硬件模块负责,不同指令的不同阶段可以在同一时间并行进行,从而提高了整个系统的指令吞吐率。:在云计算领域,RISC 架构的处理器也逐渐崭露头角。
2025-03-04 15:02:25
496
原创 计算机中的架构
指令集架构是计算机硬件与软件之间的接口,规定了计算机能够执行的指令集合、指令格式、操作数类型、寄存器组织、寻址方式以及存储结构等。它是程序员或编译器编写程序时所面对的抽象机器,决定了计算机的基本功能和性能特征。
2025-03-04 14:59:26
418
原创 数字电路中的交通指挥官:多路复用器(MUX)深度解析
从经典CMOS到量子电路,MUX作为信息路由的基础单元,其设计哲学深刻影响着计算系统的演进。随着存算一体、光子计算等新范式的出现,MUX正在衍生出光波导选择器、自旋器件阵列等新形态,持续推动着计算技术的边界拓展。理解这个基础元件,就是把握数字世界信息流动的命脉。
2025-02-26 16:30:40
1611
原创 CPU架构进化论:Core与Uncore的分工艺术
多核架构通过MESI协议维护缓存一致性,当8个核心同时访问共享的LLC(末级缓存)时,环形总线上的每个节点都配备缓存代理,确保数据在环形拓扑中高效传递。当计算指令在核心的流水线中奔涌时,Uncore如同隐形的数据洪流引导者,用精密的时序控制和智能的路由策略,让每个电子都找到最高效的路径。在Intel Sapphire Rapids中,Uncore内置的DLB(动态负载均衡器)能实时分析数据流模式,动态调整缓存分配策略,将AI工作负载的吞吐量提升40%。CPU架构的演进史就是Core与Uncore的融合史。
2025-02-26 15:38:34
1027
原创 混合架构CPU的能效核心与性能核心:设计哲学与技术实现
混合架构CPU通过差异化设计打破了“性能与能效不可兼得”的传统范式。随着Intel的Alder Lake、ARM的v9架构等产品的普及,这一技术正在重塑从数据中心到边缘设备的算力格局。未来,混合架构或将成为通用处理器的标准设计,推动计算设备向“全场景智能”持续进化。
2025-02-25 16:19:47
1242
原创 固态硬盘接口类型及其技术特点分析
固态硬盘接口的演进体现了存储技术对速度、体积和可靠性的持续追求。日常使用:SATA或M.2(SATA协议)性价比高;高性能需求:M.2(PCIe/NVMe)或PCIe直连;企业级应用:U.2或定制化方案(如HBF)。未来,随着PCIe 6.0和更高层数NAND技术的落地,接口性能与存储密度的边界将进一步突破。
2025-02-25 14:28:51
826
原创 eDP、DP与HDMI——现代显示接口的核心解析
eDP、DP和HDMI各有千秋:eDP以嵌入式设备的低功耗见长,DP凭借开放生态和高带宽成为专业领域首选,而HDMI则依靠庞大的消费电子生态稳居家庭市场。未来,随着Type-C接口的普及和超高清内容的爆发,三者的技术边界可能进一步融合,但各自的核心优势仍将长期共存。对于用户而言,选择接口需基于设备需求——游戏玩家青睐HDMI的VRR,设计师依赖DP的多屏扩展,而轻薄本则离不开eDP的紧凑设计。
2025-02-24 17:17:05
2625
原创 内存中的串行存在检测器(SPD):系统稳定的幕后功臣
SPD作为内存模块的“身份证”和“说明书”,通过标准化接口与自动化配置,极大简化了系统对内存的管理。随着DDR5和CXL技术的发展,SPD的扩展性与灵活性将进一步提升,成为高性能计算与异构系统中不可或缺的组件。未来,SPD或将在内存健康监控、动态调频等领域发挥更大作用14。通过理解SPD的底层机制,用户不仅能优化系统性能,还能深入掌握内存技术的演进脉络。如需进一步探索SPD的字节级定义,可参考JEDEC标准文档(如JESD400-5)1。
2025-02-24 15:13:59
1429
原创 CPU封装形式解析:从传统到先进封装的技术演进
从DIP到3D封装,CPU封装技术已从单纯的物理保护演变为提升系统性能的核心手段。未来,随着摩尔定律逼近物理极限,先进封装将成为延续算力增长的关键路径。根据Yole数据,2027年先进封装市场规模将达650亿美元,年复合增长率达14%,标志着封装技术进入全新维度。
2025-02-21 19:06:48
985
原创 从SDRAM到DDR5:内存技术的演进与核心参数对比
从SDRAM到DDR5:内存技术的演进与核心参数对比。电压降低结合工艺进步,DDR5的能效比DDR4提升约30%。
2025-02-21 13:42:55
1151
原创 ACPI规范定义的计算机系统中的七种状态详解
G0 (S0) - 正常工作状态G1 - 睡眠状态S1 - 低功耗待机S2 - CPU关闭S3 - 挂起到内存(Suspend to RAM)S4 - 挂起到磁盘(Suspend to Disk)G2 (S5) - 软关机状态G3 - 机械关闭状态。
2025-02-21 11:08:36
1177
原创 关于计算机中原码、反码和补码的那些事
原码、反码和补码是计算机中表示数值的三种重要编码方式。补码凭借其唯一的零表示和简化的运算规则,成为现代计算机中数值表示的主流方式。理解这三种编码的原理和计算方式,对于深入理解计算机的运算机制至关重要。
2025-02-20 17:23:27
564
原创 全面解析内存模块类型:UDIMM、RDIMM、SODIMM及其他内存技术对比
是双列直插式内存模块的统称,采用64位数据通道,取代了早期的SIMM(单列)设计。现代DIMM根据功能、尺寸和用途分为多个子类。理解内存模块的技术差异是优化系统架构的关键。随着DDR5和CXL等新技术的普及,内存子系统正从"被动存储"向"主动计算单元"演进。建议工程师根据工作负载特征选择适配方案,并在成本与可靠性之间取得最佳平衡。注:本文所用图片均来自网络!!!
2025-02-20 15:21:31
3259
原创 一文搞懂RAM、ROM、SRAM、DRAM和SDRAM
Synchronous Dynamic Random Access Memory,动态随机访问存储器,是一种DRAM存储器,但是与DRAM的最大区别在于“同步(synchronous)”,SDRAM通过与系统的时钟信号同步,以提高其运行效率和数据传输速率。a、SDRAM(静态RAM),使用双稳态触发器来存储每一位数据,速度快,但是成本较高,集成度低,不适合做大容量内存,通常用作缓存(如CPU内部的L1、L2缓存)。a、同步操作:SDRAM的所有操作都与系统的时钟同步,提高了数据的处理速度和总线利用率。
2025-02-19 18:01:13
1681
2
原创 关于北桥和南桥的那些事
如果北桥芯片的性能不足,可能会导致 CPU 与内存、显卡之间的数据传输瓶颈,使计算机的运行速度明显下降,出现卡顿现象。:其功能不断丰富和增强,随着外部设备的不断更新和增加,南桥芯片需要支持更多的接口标准和功能特性,如支持更高版本的 USB 协议、更快的 SATA 接口速度等。:随着技术的发展,北桥芯片的部分功能逐渐被集成到 CPU 中,如内存控制器等,这使得北桥芯片的重要性相对有所下降,但在一些高端服务器和工作站等对性能要求极高的系统中,仍然可能存在独立的北桥芯片,以提供更强大的内存和高速设备管理能力。
2025-02-19 17:22:46
1273
原创 关于SOC与CPU的那些事
CPU:是计算机的核心部件,主要功能是执行指令、进行算术逻辑运算和数据处理,就像人的大脑一样,负责对计算机系统中的数据进行各种处理和运算操作,协调和控制计算机的各个部件工作。例如,在计算机中运行的各种软件程序,如办公软件、游戏等,都是由 CPU 来执行其中的指令,完成各种任务。SoC:是将一个完整的电子系统所需要的各种功能模块集成在一个芯片上,除了包含 CPU 外,还通常集成了 GPU(图形处理器)、内存、通信模块、电源管理模块、各种接口等,形成一个高度集成的系统级芯片,能够实现更复杂的系统功能。
2025-02-19 17:00:09
576
原创 计算机系统中的MMIO
在计算机的图形处理中,GPU(图形处理单元)通过 MMIO 与 CPU 进行交互,CPU 通过向 GPU 的内存映射地址写入数据和指令,来控制 GPU 进行图形渲染、图像合成等操作。:对于程序员来说,操作设备就像操作内存一样,使用统一的内存访问指令,无需学习和使用专门的 I/O 指令集,降低了编程的复杂度,提高了开发效率。:方便添加新的设备,只需要为新设备分配一段合适的内存映射地址,就可以将其集成到系统中,而不需要对 CPU 的指令集或硬件架构进行大规模修改。
2025-02-19 16:26:12
440
原创 常见通信协议对比
1.并行通讯:同一时刻,可以传输多个bit位的信号,有多少个信号位就需要多少根信号线。2.串行通讯:同一时刻,只能传输一个bit位的信号,只需要一根信号线。,一般应用于快速设备之间采用并行通信。同步通信:接收端时钟频率和发送端。、发送端发送完一个字节后,可。的时间间隔再发送下一个字节、
2023-10-09 15:31:13
477
原创 BRAM、DRAM和SRAM的区别
全称:静态随机存取存储器(Static Random-Access Memory,SRAM),所谓的“静态”,是指这种存储器。全称:动态随机存取存储器(Dynamic Random Access Memory,DRAM),,包括同步动态存储器SDRAM和各种类型双倍数据DDR,在作为FIFO调用资源的基础下,仅。(被称为volatile memory),这与在断电后还能储存资料的。,是FPGA定制的RAM资源,在作为FIFO调用资源的基础下,Random Access Memory,BRAM的输出需要。
2023-09-07 16:02:40
3579
原创 STL(标准模板库)—Vector
目录Vector1、创建一个名为V的vector容器 整型数组2、vector容器中存放自定义的数据类型 3、vector容器嵌套容器VectorSTL中最常用的容器Vector 可以理解为数组Vector存放内置数据类型//容器:vector//算法:for_each//迭代器:vector<int>::iterator1、创建一个名为V的vector容器 整型数组a、插入数据//创建一个名为V的vector容器 整型数组...
2022-04-02 21:21:59
1589
2
原创 C++ 模板
首先:让我们思考为什么要使用函数模板哪?例如一个简单的交换函数,在大的程序中一般会比较常用,如果你不使用函数模版,便要声明多个不同类型的交换函数。而使用一个模版函数就可以解决问题了,既免了功夫,也减少了代码的字数。函数模板的基本语法:template<typename T>其中typname可以替换为class该声明的意义在于声明一个模板,告诉编译器后面代码中紧跟着的T不要报错,T是一个通用数据类型。例如我们通过函数模板实现数据的交换:void MySwap(T
2022-03-31 12:58:10
1640
2
原创 C++职工管理系统
职工管理系统.cpp#include"workerManager.h"#include"boss.h"#include"employee.h"#include"manager.h"#include"worker.h"int main(){ int id = 0; WorkerManager wm; int choice = 0; do { wm.Menu(); cout << "请输入你要进行的操作:"; cin >> choice;
2022-03-29 13:59:24
11479
3
原创 C++多态
1、多态的基本概念#include <iostream>using namespace std;//动态多态//满足条件:1、有继承关系 2、子类重写(函数返回值类型 函数名 参数列表 完全相同) 父类的虚函数 //动态多态的使用//父类的指针或者引用指向子类对象class Animal{public: //虚函数 virtual void speak()//加上virtual 空(1个字节)变为指针(4个字节) { cout << "动物在说
2022-03-25 15:30:35
1103
原创 C++ 继承
1、继承的基本语法//继承的好处 减少重复的代码//语法:class子类:继承方式 父类//子类 也称为 派生类//父类 也称为 基类#include <iostream>using namespace std;//继承实现页面//继承的好处 减少重复的代码//语法:class子类:继承方式 父类//子类 也称为 派生类//父类 也称为 基类class Base{public: void header() { cout << "首页、.
2022-03-23 13:29:38
882
原创 运算符重载
1、递增运算符重载#include <iostream>using namespace std;class Person{ friend ostream & operator<<(ostream &cout, Person& p);public: Person() { m_A = 0; } //前置++运算符 //重置前置++运算符 返回引用为了一直对一个数据进行递增操作 Person& operator++()
2022-03-22 12:47:06
159
原创 深拷贝与浅拷贝
class Person{public: Person() { cout << "默认构造函数的调用" << endl; } Person(int age, int hight) { m_age = age; m_hight = new int(hight); cout << "有参构造函数的调用" << endl; } Person(const Person &p) { m_age = p.m_age;.
2022-03-17 18:05:59
145
原创 拷贝构造函数的调用时机
1、使用一个已经创建完毕的对象来初始化一个新的对象void test1(){ Person P1(10); Person P2(P1);//拷贝}2、值传递的方式给函数参数传值void dowork(Person P){}void test2(){ Person P; dowork(P);//拷贝}3、值方式返回局部对象Person dowork2(){ Person P1; return P1;//拷贝}void test3(){ Pe
2022-03-17 13:04:58
544
原创 带有副作用的宏参数
#include <stdio.h>#define MAX(X,Y) ((X)>(Y)?(X):(Y)) int main(){ int a = 10; int b = 11; int max = MAX(a++,b++); //int max = ((a++)>(b++)?(a++):(b++)); printf("%d\n",max); printf("%d\n",a); printf("%d\n",b); return 0; }
2021-12-11 16:51:48
519
原创 动态内存的开辟与释放
//动态内存分配#include <stdlib.h>#include <stdio.h>#include <string.h>#include <errno.h> int main(){ //动态内存开辟 //向内存申请10个整形的空间 int* p = (int* )malloc(10*sizeof(int)); if(p == NULL) { printf("开辟失败\n"); //打印错误原因 printf("%.
2021-12-02 10:39:01
757
原创 判断机器是大端存储还是小端存储
1.指针方法int check_sys(){ int a = 1;//存储占用四个字节 return *(char*)&a;//转化为char型 取出第一个字节 } int main(){ int ret = check_sys(); if(1 == ret) { printf("小端存储"); } else { printf("大端存储"); } return 0;} 2.联合体方法int check_sys(){.
2021-11-29 15:42:46
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人