自制CPU

news2024/11/21 1:32:04

  CPU是计算机的核心部件,其发展历程就是人类文明的发展史。 随着计算机技术的不断发展, CPU也从一开始的功能简单,到现在已经变成功能强大、应用广泛的芯片。 但要想更深入了解 CPU,你需要知道它是如何工作以及为什么这么做的。 你需要了解很多与计算机相关的基础知识,才能更好地理解它。 下面推荐几本关于 CPU相关的书籍,希望能帮助你了解 CPU,并在实际操作中更好地应用它。

1、CPU设计实战

  本书面向CPU设计的初学者,采用循序渐进、层层推进的方式介绍CPU的完整开发过程。

  全书包括三部分:部分(1~3章)介绍工程化CPU的研发过程以及设计CPU需要掌握的基础知识;第二部分(第4~10章)从一个基本的周期CPU设计开始,逐步引入流水线、指令、例外、中断等功能,并完成总线、TLBMMU、高速缓存等功能的设计;第三部分(11章)为进阶设计内容,涵盖Linux内核、提升主频、双发射流水线、动态调度、访存优化、多核处理器等功能的实现。

在这里插入图片描述

图1 CPU设计实战

  书籍目录如下:

1章 CPU芯片研发过程概述 1
1.1 处理器和处理器核 1
1.2 芯片产品的研制过程 2
1.3 芯片设计的工作阶段 3
2章 硬件实验平台及FPGA设计流程 5
2.1 硬件实验平台 5
2.1.1 龙芯CPU设计与体系结构教学实验系统 5
2.1.2 龙芯计算机系统能力培养远程实验平台 7
2.2 FPGA的设计流程 8
2.2.1 FPGA的一般设计流程 9
2.2.2 基于Vivado的FPGA设计流程 10
2.2.3 Vivado使用小贴士 33
2.3 任务与实践 35
3章 数字逻辑电路设计基础 36
3.1 数字逻辑电路设计与Verilog代码开发 36
3.1.1 面向硬件电路的设计思维方式 37
3.1.2 行为描述的Verilog编程风格 38
3.1.3 自顶向下的设计划分过程 38
3.1.4 常用数字逻辑电路的Verilog描述 39
3.2 数字逻辑电路功能仿真的常见错误及其调试方法 55
3.2.1 功能仿真波形分析 56
3.2.2 波形异常类错误的调试 60
3.3 进一步使用Vivado 66
3.3.1 定制同步RAM IP核 66
3.3.2 定制异步RAM IP核 68
3.3.3 查看时序结果和资源利用率 69
3.4 任务与实践 69
3.4.1 实践任务一:寄存器堆仿真 70
3.4.2 实践任务二:同步RAM和异步RAM仿真、综合与实现 71
3.4.3 实践任务三:数字逻辑电路的设计与调试 72
4章 简单流水线CPU设计 74
4.1 设计一个简单的单周期CPU 75
4.1.1 设计单周期CPU的总体思路 75
4.1.2 单周期CPU的数据通路设计 76
4.1.3 单周期CPU的控制信号生成 88
4.1.4 复位的处理 91
4.2 不考虑相关冲突的流水线CPU设计 92
4.2.1 添加流水级间缓存 92
4.2.2 同步RAM的引入 93
4.2.3 调整更新PC的数据通路 96
4.2.4 不考虑相关冲突情况下流水线控制信号的设计 96
4.3 CPU设计开发环境(CPU_CDE) 97
4.3.1 快速上手CPU设计的开发环境 97
4.3.2 CPU设计开发环境的组织与结构 99
4.3.3 CPU设计开发环境使用进阶 113
4.4 CPU设计的功能仿真调试技术 117
4.4.1 为什么要用基于Trace比对的调试辅助手段 117
4.4.2 基于Trace比对调试手段的盲区及其对策 119
4.4.3 学会阅读汇编程序和反汇编代码 119
4.4.4 CPU调试中要抓取的信号以及如何看这些信号 124
4.5 指令相关与流水线冲突 125
4.5.1 处理寄存器写后读数据相关引发的流水线冲突 126
4.5.2 转移计算未完成 127
4.6 流水线数据的前递设计 127
4.6.1 前递的数据通路设计 128
4.6.2 前递的流水线控制信号调整 130
4.6.3 前递引发的主频下降 131
4.7 任务与实践 131
4.7.1 实践任务一:简单CPU参考设计调试 132
4.7.2 实践任务二:用阻塞技术解决相关引发的冲突 132
4.7.3 实践任务三:用前递技术解决相关引发的冲突 133
5章 在流水线中添加运算类指令 134
5.1 算术逻辑运算类指令的添加 134
5.1.1 ADD、ADDI和SUB指令的添加 134
5.1.2 SLTI和SLTIU指令的添加 135
5.1.3 ANDI、ORI和XORI指令的添加 135
5.1.4 SLLV、SRLV和SRAV指令的添加 135
5.2 乘除法运算类指令的添加 136
5.2.1 调用Xilin IP实现乘除法运算部件 136
5.2.2 电路级实现乘法器 140
5.2.3 电路级实现除法器 147
5.3 乘除法配套数据搬运指令的添加 154
5.3.1 乘法运算实现为单周期的情况 155
5.3.2 乘法运算实现为多周期流水的情况 155
5.4 任务与实践 156
6章 在流水线中添加转移指令和访存指令 157
6.1 转移指令的添加 157
6.1.1 BGEZ、BGTZ、BLEZ和BLTZ指令 158
6.1.2 J指令 158
6.1.3 BLTZAL和BGEZAL指令 158
6.1.4 JALR指令 158
6.2 访存指令的添加 158
6.2.1 LB、LBU、LH和LHU指令的添加 158
6.2.2 SB和SH指令的添加 159
6.2.3 非对齐访存指令的说明 160
6.2.4 LWL和LWR指令的添加 162
6.2.5 SWL和SWR指令的添加 164
6.3 任务与实践 164
7章 例外和中断的支持 166
7.1 例外和中断的基本概念 166
7.1.1 例外是一套软硬件协同处理的机制 166
7.1.2 精确例外 167
7.2 MIPS指令系统中与例外相关的功能定义 168
7.2.1 CP0寄存器 168
7.2.2 例外产生条件的判定 168
7.2.3 例外入口 170
7.2.4 MFC0和MTC0指令 170
7.2.5 ERET指令 170
7.3 流水线CPU实现例外和中断的设计要点 170
7.3.1 例外检测逻辑 170
7.3.2 精确例外的实现 172
7.3.3 CP0寄存器 173
7.3.4 CP0冲突 179
7.4 任务与实践 180
7.4.1 实践任务一:添加syscall例外支持 181
7.4.2 实践任务二:添加其他例外支持 181
8章 AXI总线接口设计 184
8.1 类SRAM总线 184
8.1.1 主方和从方 185
8.1.2 类SRAM总线接口信号的定义 185
8.1.3 类SRAM总线的读写时序 186
8.1.4 类SRAM总线的约束 189
8.2 类SRAM总线的设计 189
8.2.1 取指设计的考虑 190
8.2.2 访存设计的考虑 195
8.3 AXI总线协议 195
8.3.1 AXI总线信号一览 195
8.3.2 理解AXI总线协议 197
8.3.3 类SRAM总线接口信号与AXI总线接口信号的关系 202
8.4 类SRAM-AXI的转接桥设计 203
8.4.1 转接桥的顶层接口 203
8.4.2 转接桥的设计要求 204
8.4.3 转接桥的设计建议 204
8.5 任务与实践 205
8.5.1 实践任务一:添加类SRAM总线支持 205
8.5.2 实践任务二:添加AXI总线支持 208
8.5.3 实践任务三:完成AXI随机延迟验证 210
9章 TLB MMU设计 211
9.1 TLB模块的基础知识 212
9.1.1 TLB的虚实地址转换 212
9.1.2 TLB的软件访问 214
9.1.3 TLB的软硬件交互机制 215
9.2 TLB模块设计的分析 217
9.3 TLB相关的CP0寄存器与指令的实现 219
9.4 利用TLB进行虚实地址转换及TLB例外 221
9.5 任务与实践 222
9.5.1 实践任务一:TLB模块设计 222
9.5.2 实践任务二:添加TLB相关指令和CP0寄存器 224
9.5.3 实践任务三:添加TLB相关例外支持 225
10章 高速缓存设计 226
10.1 Cache模块的设计 227
10.1.1 Cache的设计规格 227
10.1.2 Cache模块的数据通路设计 228
10.1.3 Cache模块内部的控制逻辑设计 237
10.1.4 Cache的硬件初始化问题 241
10.2 将Cache模块集成至CPU中 242
10.2.1 Cache命中情况下的CPU流水线适配 242
10.2.2 Cache缺失情况下的CPU流水线适配 243
10.2.3 Uncache访问的处理 243
10.3 CACHE指令 245
10.3.1 CACHE指令的定义 245
10.3.2 CACHE指令的实现 247
10.4 性能测试程序 247
10.4.1 Dhrystone 247
10.4.2 Coremark 250
10.5 Cache的性能 251
10.6 任务与实践 252
10.6.1 实践任务一:Cache模块设计 252
10.6.2 实践任务二:在CPU中集成ICache 254
10.6.3 实践任务三:在CPU中集成DCache 255
10.6.4 实践任务:在CPU中添加CACHE指令 256
11章 进阶设计 258
11.1 运行Linu内核 258
11.1.1 复杂SoC搭建 259
11.1.2 CPU的进一步完善 259
11.1.3 调试建议 260
11.2 提升主频的常用方法 261
11.2.1 平衡各级流水线的延迟 261
11.2.2 优化大概率事件的处理逻辑 261
11.2.3 用面积和功耗换时序 262
11.2.4 进一步切分流水线 262
11.3 静态双发流水线的实现 262
11.4 动态调度机制的实现 263
11.4.1 一个双发动态调度流水线的设计实例 263
11.4.2 动态调度中常见电路结构的RTL实现 266
11.5 硬件转移预测技术 266
11.5.1 硬件转移预测的流水线设计框架 267
11.5.2 一个轻量级转移预测器的设计规格 268
11.6 访存优化技术 269
11.6.1 store buffer 269
11.6.2 n-blocking Cache 270
11.6.3 访存乱序执行 271
11.6.4 多级Cache 271
11.6.5 Cache预取 272
11.7 多核处理器的实现 272
11.7.1 多核互联结构 273
11.7.2 多核编号 273
11.7.3 核间中断 273
11.7.4 多核情况下的存储一致性 274
11.7.5 LL-SC指令对的访存原子性 282
附录A 龙芯CPU设计与体系结构教学实验系统 285

  本书内容新颖、理论联系实际、图文并茂,适合作为高校计算机及相关专业计算机组成、计算机体系结构、CPU设计等课程的教材或参考书,也可作为从事CPU设计的技术人员的参考读物。

  在微信公众号回复“CPU设计实战”获取PDF电子书。

2、CPU自制入门

  本书利用FPGA,为读者开启了一个崭新的自制CPU的世界。

  全书分为3章,第 1章以介绍CPU为主,同时介绍如何制作存储程序与数据的内存、输入与输出的I/O以及将这些模块连接起来的总线,这些模块可以组合成一个简单的计算机系统。为了让这个计算机系统运转起来,第 2章介绍电路板的设计和制作。第3章为这个计算机系统编写程序,并上机测试。

在这里插入图片描述

图2 CPU自制入门

书籍目录如下:

第 1章 CPU的设计与实现 1
1.1 序 2
1.2 计算机系统 4
1.2.1 什么是计算机 4
1.2.2 什么是CPU 5
专栏 CPU的位宽 8
1.2.3 什么是内存 8
1.2.4 什么是I/O 9
专栏 字节序 10
1.2.5 什么是总线 12
专栏 总线的优缺点 14
1.2.6 小结 14
专栏 计算机相关书籍 14
1.3 数字电路基础 15
1.3.1 什么是数字电路 15
1.3.2 数值表达 15
1.3.3 有符号二进制数 16
专栏 比特和字节 17
专栏 1K字节有多大 17
1.3.4 MOSFET的结构 17
1.3.5 逻辑运算 19
1.3.6 CMOS基本逻辑门电路 20
1.3.7 存储元件 21
专栏 建立时间与保持时间 24
1.3.8 组合电路和时序电路 25
1.3.9 时钟同步设计 25
1.3.10 小结 25
专栏 数字电路相关书籍 25
1.4 Verilog HDL语言 26
1.4.1 什么是Verilog HDL 26
1.4.2 电路描述 27
专栏 默认网络类型 32
专栏 组合电路描述中锁存器的推定与Don’t care 37
专栏 正逻辑与负逻辑 42
1.4.3 电路仿真 43
专栏 同步电路中信号变化的时序 45
1.4.4 Verilog HDL的仿真环境 50
1.4.5 小结 56
专栏 Verilog HDL相关书籍 56
1.5 系统蓝图 57
1.5.1 目标系统整体介绍 57
1.5.2 关于本章中的代码 58
专栏 字编址与字节位移 62
1.6 总线的设计与实现 63
1.6.1 总线的设计 63
1.6.2 总线的实现 66
1.6.3 小结 78
1.7 存储器的设计与实现 79
1.7.1 FPGA的RAM区域 79
1.7.2 ROM的设计与实现 81
1.7.3 小结 83
专栏 存储器相关书籍 83
1.8 AZ Processor的设计与实现 84
1.8.1 关于CPU 84
专栏 CPI和MIPS值 93
1.8.2 AZ Processor的设计 93
专栏 指令集架构与微架构 105
1.8.3 AZ Processor的实现 106
1.8.4 小结 159
专栏 计算机架构相关书籍 159
1.9 I/O的设计与实现 162
1.9.1 定时器 162
1.9.2 UART 167
专栏 UART实例 168
1.9.3 GPIO 181
1.9.4 小结 188
专栏 I/O相关书籍 188
1.10 AZPR SoC整体连接 189
1.10.1 各模块的连接 189
1.10.2 时钟模块的实现 191
1.10.3 顶层模块的实现 193
1.10.4 小结 193
1.11 AZPR SoC的仿真 194
1.11.1 仿真模型的编写 194
1.11.2 Testbench的编写 197
1.11.3 执行仿真 200
1.11.4 小结 201
1.12 本章总结 202
第 2章 电路板的设计与制作 203
2.1 序 204
2.2 电路板规格206
2.2.1 电路板名称 206
2.2.2 电路板的构成 206
2.2.3 电路板尺寸 206
2.2.4 电路板层数 207
2.2.5 FPGA选型 207
2.2.6 外围电路的选定 208
专栏 关于FPGA 209
专栏 关于JTAG 211
2.3 元件选型 212
2.3.1 元件选型标准 212
2.3.2 元件选型 212
2.3.3 元件的选购 218
2.4 电路设计 221
2.4.1 下载规格书 222
2.4.2 配置电路 223
2.4.3 外围电路 228
2.4.4 电源电路 232
2.4.5 电路板设计环境 234
2.4.6 使用Eagle设计电路图 236
专栏 关于ULP 241
专栏 Eagle使用方法相关的书籍/说明书 241
2.4.7 完成的电路图 241
2.5 布局设计 247
2.5.1 电路板设计约束条件及布线策略 247
2.5.2 FPGA板的布局设计 248
2.5.3 电源板的布局设计 252
2.5.4 使用Eagle布局 254
2.5.5 完成的布局 259
2.6 制作元件库261
2.6.1 制作Symbol 261
2.6.2 制作Package 263
2.6.3 制作Device 264
2.7 电路板3D模型 269
2.7.1 软件使用说明 269
2.7.2 准备3D模型库 271
专栏 关于3D模型库的管理 278
2.7.3 制作电路板模型 279
2.8 制作感光板电路板 280
2.8.1 整体流程 280
2.8.2 制作光罩 282
2.8.3 粘合光罩 284
2.8.4 曝光 285
2.8.5 显像 288
2.8.6 蚀刻 289
2.8.7 阻焊剂 291
2.8.8 开孔 296
2.8.9 在背面安装VPort接头时的处理 298
2.8.10 制作通孔 299
2.8.11 飞线 300
2.9 使用电路板制造服务 302
2.9.1 电路板制造服务 302
2.9.2 DRC 302
2.9.3 输出Gerber数据 305
2.9.4 检查Gerber数据 306
专栏 执行DFM检查的方法 309
专栏 阻焊层遮罩的印刷设置 312
2.9.5 向P板.com公司下单制板 312
专栏 拼板数据的准备 314
2.9.6 向OLIMEX公司下单制板 318
2.10 组装电路板 321
2.10.1 电源板 321
2.10.2 组装FPGA板 321
2.11 功能测试 323
2.11.1 识别FPGA 323
2.11.2 诊断程序 323
2.12 本章总结 326
第3章 编程 327
3.1 序 328
3.2 开发环境 329
3.2.1 准备工作 329
3.2.2 FPGA开发环境 330
3.2.3 ISE WebPACK 331
3.2.4 UrJTAG 359
专栏 cblsrv-0.1_ft2232 370
3.2.5 交叉汇编程序 370
3.2.6 第 一个程序 376
3.3 串口通信 381
3.3.1 安装Tera Term 381
3.3.2 编写程序 382
专栏 子程序 388
专栏 ASCII码 389
3.3.3 执行程序 390
3.4 程序加载器 391
3.4.1 XMODEM协议 391
3.4.2 编写程序 393
3.4.3 编写加载测试程序 402
3.4.4 执行程序 403
3.5 中断与异常 406
3.5.1 什么是中断 406
3.5.2 编写程序 410
3.5.3 执行程序 414
3.5.4 什么是异常 415
3.5.5 编写程序 415
3.5.6 执行程序 419
3.6 七段数码管 420
3.6.1 什么是七段数码管 420
3.6.2 七段数码管的控制 420
3.6.3 七段数码管计数器概要 422
3.6.4 编写程序 423
3.6.5 执行程序 428
3.7 制作一个实用程序 429
3.7.1 功能概要 429
3.7.2 制作程序 433
3.7.3 执行程序 446
3.8 结语 447

  本书可以帮助软件工程师深入了解硬件与底层,开发出高效代码。硬件工程师可以在本书基础上设计定制硬件,开发高速计算机系统。

  可以通过微信公众号回复“CPU自制入门”获取PDF电子书。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构003:有效的数独

原文链接:数据结构003:有效的数独 题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3…

Lecture7:随机梯度下降算法问题及解决、dropout正则化、学习率的选择、迁移学习

目录 1.随机梯度下降算法问题及解决 1.1 随机梯度下降算法SGD的问题 1.2 具有动量的梯度下降算法SGDMomentum 1.3 Nesterov加速梯度法 1.4 AdaGrad 1.5 RMSProp 1.6 融合!Adam算法 2. 学习率的选取 3. 正则化 3.1 dropout正则化 4. 迁移学习 1.随机梯度下…

一篇文章带你了解python数据分析岗位怎么样

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 分析目标 各城市对数据分析岗位的需求情况 不同细分领域对数据分析岗的需求情况 数据分析岗位的薪资状况 工作经验与薪水的关系 公司都要求什么掌握什么技能 岗位的学历要求高吗 不同规模的…

详解C语言中的自定义类型(结构体,枚举,联合)

目录 1. 结构体 1.1 结构的声明 1.2 结构的自引用 1.3 结构体变量的定义和初始化 1.4 结构体内存对齐 (计算结构体的大小) 1.5 结构体传参 2. 位段(结构体实现位段) 2.1 什么是位段 2.2 位段的内存分配 2.3 位段的跨平台问题 3. 枚举 …

node.js-http模块学习

目录 1.什么是 http 模块 2.进一步理解 http 模块的作用 3.用node.js创建最基本的 web 服务器 req 请求对象: res 响应对象: 解决中文乱码问题: 根据不同的url响应 不同的html页面 1.什么是 http 模块 http 模块是 Node.js 官方提供的、…

3.Nacos系列之配置管理

上文中我们学习到服务的注册&#xff0c;本文我们进行服务的调用及配置管理相关的实践 1. 服务调用实践 接着上篇文章的代码&#xff0c;我们新建模块nacos-service-consumer 在pom.xml目录下新增依赖 <dependencies><dependency><groupId>org.springfra…

Bean 作用域和生命周期 · Bean 作用域存在的问题 · Bean 六种作用域 · 执行流程 · 生命周期演示

Spring 是用来存储和读取 Bean&#xff0c;因此 Spring 中 Bean 是最核心的操作资源&#xff0c;我们需要深入学习一下 Bean 对象。 一、Bean 的作用域问题1.1 原因分析1.2 作用域定义二、Bean 的六种作用域singleton 单例作用域prototype 原型作用域request 请求作用域session…

【OpenCV学习】第16课:图像边缘提取 - Sobel算子详细剖析(图像梯度)

仅自学做笔记用,后续有错误会更改 理论 卷积的应用 - 图像边缘提取&#xff1a; 边缘是什么&#xff1a;是像素值发生跃迁的地方&#xff0c; 是图像的显著特征之一&#xff0c; 再图像特征提取丶对象检测丶模式识别等方面都有重要作用如何捕捉/提取边缘&#xff1a;对图像求…

关于LuaGC算法的演化概述

2年不用&#xff0c;就忘了&#xff0c;在这记录下。 5.0版本的双色标记清除算法 此算法中&#xff0c;每个对象会有两种标记态&#xff1a;白色和黑色&#xff1b;新创建的对象都是白色 过程&#xff1a; 1.初始化阶段&#xff1a;将root链表中的所有对象放入待检链表中&am…

0204隐函数及由参数方程所确定的函数的导数相关变化率-导数与微分

1 隐函数 定义&#xff1a;设有两个非空数集A,BA,BA,B.对于∀x∈A\forall x\in A∀x∈A&#xff0c;由二元方程F(x,y)0F(x,y)0F(x,y)0对应唯一的y∈By\in By∈B,称此对应关系是二元方程F(X,y)0F(X,y)0F(X,y)0确定的隐函数。 相应的由yf(x)yf(x)yf(x)确定的对应关系称为显函数。…

vue.js:作用域插槽的使用案例

作用域插槽的使用理解 父组件替换插槽的标签&#xff0c;但是内容是由子组件提供的。 案例需求 子组件中包含一组数据&#xff0c;比如&#xff1a;pLanguages&#xff1a;[‘Java’,‘c’,‘JavaScript’,‘python’,‘C语言’,‘Go’,‘C#’]现需要在多个页面进行操作&…

19.8 适配器概念、分类、范例与总结

一&#xff1a;适配器基本概念 把一个既有的东西进行适当的改造&#xff0c;比如增加点东西&#xff0c;或者减少点东西&#xff0c;就构成了一个适配器。 三种适配器&#xff1a;容器适配器、算法适配器、迭代适配器。 二&#xff1a;容器适配器 本章第三节学习过双端队列de…

个人有效:关于VMware虚拟机开机蓝屏问题的解决

文章目录前言禁用Hyper-V等服务Device 服务等启动相关是否需要VMware最新版本电脑虚拟化问题启用或关闭windows功能的设置关于VMware虚拟机的卸载参考前言 搜了海量文章&#xff0c;实操过大部分的方法&#xff0c;一顿折腾、最后莫名其妙的能跑了…。~~两天来急痛攻心&#xf…

Hot100-寻找重复数

1 前言 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 1.1 暴力解法 两次for循环&#xff1a…

spring——AOP面向切面编程—— 一般切面的 AOP 开发

一般切面的 AOP 开发 当我们在使用 Spring AOP 开发时&#xff0c;若没有对切面进行具体定义&#xff0c;Spring AOP 会通过 Advisor 为我们定义一个一般切面(不带切点的切面)&#xff0c;然后对目标对象(Target)中的所有方法连接点进行拦截&#xff0c;并织入增强代码。 工程依…

Pytest----测试脚本上传git代码仓库

【原文链接】Pytest----测试脚本上传git代码仓库 在企业实战中&#xff0c;自动化测试脚本也要放在代码管理平台的&#xff0c;可以选择第三方公共的git代码托管平台&#xff0c;比如github、gitee等&#xff0c;当然也可以在企业内部搭建gitlab作为代码托管平台&#xff0c;他…

蓝桥杯模拟赛习题练习(一)

题目来源&#xff1a;第十四届蓝桥杯模拟赛第一期 注&#xff1a;代码都是自己写的&#xff0c;不是参考答案&#xff01; 1. 二进制位数 问题描述&#xff1a; 十进制整数2在十进制中是1位数&#xff0c;在二进制中对应10 &#xff0c;是2位数。 十进制整数22在十进制中是2位…

Linux系统调用实现简析

1. 前言 限于作者能力水平&#xff0c;本文可能存在的谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 背景 本篇基于 Linux 4.14 ARM 32 glibc-2.31 进行分析。 3. 系统调用的实现 3.1 系统调用的发起 3.1.1 起于用户空间 我们随意挑选一个…

python学习之:妙用魔法函数 __dict___来调用对象中的方法,或者 python文件中的方法

文章目录场景原始写法升级写法面向对象的写法总结场景 原始写法 假设现在有一个文件 tool.py我想在外部输入一个 字符串 就调用这个字符串对应的函数如果你不是用 __dict__ 这个好用的函数&#xff0c;那么你大概率会以下面的方式去写 main 函数&#xff0c;给很多 if但是如果…

网络安全观察报告 态势总览

执行摘要 从 1987 年 9 月 14 日&#xff0c;中国向世界发出第一封电子邮件 到如今&#xff0c;中国的互联网发展已过去整整 31 个年头。从消费互联、产业互联到万物互联&#xff0c;互联网正在加速改变我们的交流方式和交易方式&#xff0c;一次次 004.重塑了国家的经济形态和…