计算机组成原理-CPU
简介计算机组成原理系列其四,主要是针对中国大陆考研所要求的内容对计算机组成原理的知识体系进行总结和梳理,本篇内容是计算机的CPU相关内容介绍,主要包含以下几点:
CPU的功能和基本结构
指令的执行过程
CPU内的数据通路
控制器的功能和原理
指令流水线
多处理器
大纲
CPU的基本结构
运算器
控制器
指令的执行过程
指令周期
指令周期的数据流
指令的执行方案
CPU内的数据通路
基本结构
例题分析
控制器
微程序控制器
基本概念
编码方式
地址形成方式
格式
指令流水线
定义
基本实现
冒险和处理
结构冒险
数据冒险
控制冒险
流水线的性能指标
高级流水线技术
多处理器概念
SISD、SIMD、MIMD
硬件多线程
多核处理器
CPU的基本结构CPU主要由运算器和控制器两大部分组成
Tips:CPU内部的寄存器大致分为两类:
用户可见的寄存器:通用寄存器组、PSW、PC等
用户不可见寄存器:MAR、MDR、IR等
运算器运算器是计算机对数据进行加工处理的中心,其主要有:
算术逻辑单元(ALU):进行算术、逻辑运算
程序状态寄存器(PS ...
计算机组成原理-指令系统
简介计算机组成原理系列其三,主要是针对中国大陆考研所要求的内容对计算机组成原理的知识体系进行总结和梳理,本篇内容是计算机的指令系统介绍,主要包含以下几点:
指令格式的基本内容
指令格式
寻址方式
汇编基础
CISC和RISC的基本概念
大纲
指令系统
指令系统简述
指令的基本格式
定长与变长指令字结构
定长操作码指令格式
拓展操作码指令格式
寻址方式(重点)
指令寻址
数据寻址
汇编基础
基础知识
常用指令
CISC和RISC
典型例题
指令系统简述指令是指示计算机执行某些操作的命令。一台计算机的所有指令的集合构成该机器的指令集。指令集体系结构(ISA)规定了:指令格式、数据类型和格式、操作数的存放方式、存储空间的大小和编址方式、寻址方式etc.
指令的基本格式
Tips:几种字长的区别机器字长:CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。存储字长:存储器中一个存储单元(存储地址)所存储的二进制代码的位数,即存储器中的MDR的位数。指令字长:计算机指令字的位数。数据字长:计算机数据存储所占用的位数。其中:机器字长、存储字长:一般不变,固定长度指令字 ...
计算机组成原理-存储系统
简介计算机组成原理系列其二,主要是针对中国大陆考研所要求的内容对计算机组成原理的知识体系进行总结和梳理,本篇内容是计算机内部和外部的存储介绍,主要包含以下几点:
存储器的分类与层次化的存储器基本结构
主存与外(辅)存
主存的拓展和外存的结构
Cache
虚拟内存
大纲
存储系统
存储器概述
多种角度进行分类
存储器的性能指标
多层次的存储系统
主存储器(主存)
SRAM和DRAM简介
DRAM的工作原理
DRAM的刷新
DRAM的地址引脚复用
ROM
特点
类型
多模块存储器
单体多字存储器和双端口RAM
多体并行存储器
高位交叉编址(顺序方式)
低位交叉编址(交叉方式)
两者的性能分析
主存储器和CPU的连接
连接原理
主存的容量扩展
位扩展法
字扩展法
字位同时扩展法
外部存储器
磁盘存储器(机械硬盘)
磁盘的组成
磁盘的性能指标
磁盘阵列和固态硬盘
高速缓冲存储器(Cache)(重难点)
Cache的工作原理
Cache的命中率
Cache和主存的映射方式
直接映射
全相联映射
组相联映射
Cache中主存块的替换算法
近期最 ...
计算机组成原理-数据的表示和计算
简介计算机组成原理系列其一,主要是针对中国大陆考研所要求的内容对计算机组成原理的知识体系进行总结和梳理,本篇内容主要包含以下几点:
数制的表示
计算机的内部编码
定点数和浮点数
C语言中的数据表示
数据的计算
大纲重点内容会使用黑色加粗表示
数据的表示和计算
前置知识
数值转换
计算机运算速度
CPU执行时间
数制
进位计数法
r位进位计数法
不同进制数相互转换方法
定点数的表示
真值和机器数
机器数的定点表示
原码、补码、反码、移码
定点数的移位
算术位移
逻辑位移
循环位移
定点数的加减法
溢出的判别方法
浮点数
一般浮点数的表示
IEEE 754标准
C语言中的数据类型及强制类型转换
整数类型的转换
包含浮点数的转换
数据的存储和排列
大端法
小端法
拓展
乘2取整法
前情提要
数值转换
计算机进行数据处理时,一次存取、加工和传送的数据长度称为字,对于不同的品牌CPU 1Word(一个字)通常由一个或多个(一般是字节的整数位)字节构成
在描述存储容量和文件大小时,K、M、G、T常用2次幂表示
1Byte = 8bit
1KB = ...
搭建TG贴纸下载Robot
前情提要最近回家用TG贴纸下载机器人的时候发现太大的贴纸包无法下载,无奈只好自己搭建一个,正好在网上看到一个不错的,于是正好写这篇教程记录一下
源码下载和必备环境
Robot源代码来源Github
Imagemagick下载
所需环境:
Node.js v8.0.0及以上
ImageMagick with webp support (Check with identify -list format | grep -i 'webp'on Linux systems)
开始搭建Robot
因为 Imagemagick 没有 webp 支持,可以使用identify -list format查看支持的图片格式
Imagemagick源码编译webp1234567891011121314#先安装webpyum install libwebp -y#卸载系统自带的ImageMagickyum remove ImageMagick -y#下载ImageMagick源码包,编译wget -c https://download.imagemagick.org/archive/re ...
C和C++中引用
C的指针和C++中引用和函数参数类型
如果你说的是函数的形参,那么
123456789101112131415161718192021222324252627282930313233343536373839404142void foo(int ptr);是传值调用,比如你这么调用int a;int pValue = &a;foo(pValue);//这样的情况下,pValue的值是不能被函数foo改变的,也就是pValue肯定是指向a的但是如果你这么声明:void foo(int& ptr);则是传递引用,那么如果你函数里面:void foo(int& ptr){ ptr = NULL;}//这样调用过之后,pValue就变成了NULL。而第一种情况pValue是不能被改变的。引用是C++带来的很重要一个特性,他在很多情况下避免了使用指针。而且,在C++里面,引用是不可以捏造的,比如C你可以很容易弄一个NULL的指针,而引用这不存在NULL引用。上面的foo函数如果要用C来实现,则必须用指针的指针://void foo(int pptr ...
正则表达式
简介
定义正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配
为什么使用正则
测试字符串内的模式 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证
替换文本 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它
基于模式匹配从字符串中提取子字符串 可以查找文档内或输入域内特定的文本
语法普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号
字符 描述
[ABC]
匹配 [...] 中的所有字符,例如 [aeiou] 匹配字符串 "google runoob taobao" 中所有的 e o u a 字母
[^ABC]
匹配除 [...] 中的所有字符
[A-Z]/[a-z]
[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表 ...
游戏叙事技巧
1. 冲突冲突是游戏故事的燃料,也是游戏玩法的燃料,冲突就是故事的核心。 “故事就是冲突(的集合)”就故事而言,冲突就是:某人想要或需要某物,但其他人或者其他无造成了障碍
冲突是 想要/但 的模式
想要是角色的行动动力,“但” 是玩家所面临的障碍背后的事务,游戏的关卡和任务就是冲突所产生的障碍的实体表现
冲突是必须的,但是冲突的规模并不一定要大,更重要的是与某个角色产生了感情上的联系(共情)
2. 三幕结构
开始/铺陈
(故事发生的世界介绍)冲突发生之前的人物、地点、事件
为了理解故事的任何变化,我们需要对变化之前和之后的情况都有清晰的认识(前后对比)
我们要理解主角为什么要面对冲突,开始有一个特别重要的因素是诱发事件,这是介绍主角面对主要冲突的活动、事件或行动。通过这个事件让主角意识到冲突的存在
第一幕和第二幕分割点:主角开始完全致力于解决冲突开始
中间/对抗
故事的”精髓”
第二幕从主角决定致力于解决冲突开始
第二幕包括:
兑现第一幕设置的内容
铺陈第三幕最终解决冲突的解决方法
第二幕和第三幕的分割点:主角已经克服许多困难,但仍面临抉择,主角有所顿悟,明白自己需要做什 ...
装机软件下载网址
装机软件下载网址
个人常用软件列表,重装系统下软件真的麻烦…
应用类:TIM:https://tim.qq.com/download.html
火绒:https://www.huorong.cn/
网易云音乐:https://music.163.com/#/download
WeChat:https://weixin.qq.com/
Steam:https://store.steampowered.com/about/
Epic:https://store.epicgames.com/zh-CN/?lang=zh-CN
百度网盘:https://pan.baidu.com/download
Audacity:https://www.audacityteam.org/download/
Mkvtoolnix:https://mkvtoolnix.download/downloads.html#windows
qBittorrent:https://sourceforge.net/projects/qbittorrent/
7-zip:https://www.7-zip. ...
服务器部署Komga漫画阅读器
前言本地本子存太多了,突发奇想想搭建一个在线看漫画的服务,遂找到了Komga。下面记录一下如何在服务器的docker上部署
安装步骤
服务器端需要安装Java环境,至少在JDK17及以上
Centos为例:12345678#查看云端yum库中目前支持安装的jdk软件包yum search java|grep jdk #选择版本安装jdkyum install -y java-17-openjdk#安装完成后,验证是否安装成功java -version
Komga的GitHub地址,下载最新版本的jar文件,上传到服务器即可
在 CentOS 安装
12345678910# 在komga中创建子目录mkdir config mkdir data# 创建文件cd configtouch database.sqlite# 运行komga,版本号具体而论java -jar komga-***.jar
运行在浏览器中输入 http://服务器IP:8080,就能看到主界面了,登录即可如果有其它服务在使用8080端口会导致安装失败,把另一个服务暂时关闭即可
docker运行
1234567 ...