指令系统
指令又称为机器指令,是指示计算机执行某种操作的命令,一台计算机所有指令的集合构成该机的指令系统,也称指令集。
指令格式指令是一组有意义的二进制代码,通常包括操作码字段和地址码字段。根据地址个数,又分为零地址指令,一地址指令,二地址指令等。
操作码指出该指令应该执行什么操作,具有什么功能,地址码给出被操作的信息的地址。
指令字长是指一条指令所包含的二进制代码的位数,取决于操作码的长度、地址码的长度和地址码的个数。指令字长和机器字长没有固定的关系,可以大于,可以等于,可以小于。
一般可以根据指令字长将指令分为半字长指令、单字长指令、双字长指令。指令字长也会影响取指令的时间开销,单字长指令只需要一次访存就能将指令完整取出,而双字长指令需要两次。
零地址指令只给出操作码,没有显式地址。有些指令不需要操作数,比如空操作指令、停机指令或者关中断指令等,也有在堆栈计算机中的一些运算类指令,会将操作数利用堆栈存取,不需要给出地址。
一地址指令一地址指令一般就两种情况
只有目的操作数的单操作数指令,按地址码读取操作数后,操作完成将结果存回原地址
隐含阅读的目的地址的双操作指令,比如累加器累加,最后运算 ...
高速缓冲存储器
由于程序的转移概率不会很低,数据分布也比较离散,单纯依靠双端口 RAM 和多体交叉编址提高主存系统的效率是有限的,CPU 和磁盘读写速度的矛盾依旧存在。高速缓冲存储器(Cache)拥有比主存更快的存储速度,在主存和 CPU 之间设置 Cache 可以显著提高存储系统的效率。
为什么 Cache 可以提高存储系统的效率?程序访问局部性原理
程序访问局部性原理包括时间局部性和空间局部性。
时间局部性是指最近未来要用到的信息,很可能是现在正在使用的信息。
空间局部性是指指最近未来要用到的信息,很可能与现在使用的信息在空间上是连续的。
高速缓冲技术就是利用局部性原理,把正在使用的部分数据存放在一个高速的小容量 Cache 中,使得 CPU 的大部分操作都是针对 Cache 进行,从而达到提高数据读写效率的目的。
看看一下两段代码
程序 A
123456789int sum(int a[m][n]) { int res = 0; for(int i = 0; i < m; i++) { for(int j = 0; j < n; ...
Codeforces 570D. Tree Requests
题目描述Roman 种植了一棵由 n 个顶点组成的树。每个顶点包含一个小写英文字母。顶点 1 是树的根,其余 n - 1 个顶点在树中都有一个 父顶点。顶点与其父顶点之间有一条边相连。顶点 i 的父顶点是顶点 pi ,父顶点的索引总是小于顶点的索引(即 pi < i )。
顶点的深度是指从根到 v 的路径上沿边的节点数。其中,根的深度等于 1 。
如果我们可以从顶点 u 到达父顶点 v ,那么我们说顶点 u 位于顶点 v 的子树中。其中,顶点 v 位于其子树中。
罗马给出了 m 个查询,其中第 i 个查询由两个数字 vi 、 hi 组成。让我们考虑位于深度 hi 的子树 vi 中的顶点。请判断能否用这些顶点上的字母组成一个 palindrome 字符串。写在顶点上的字母可以按任何顺序重新排列,以组成一个重码字符串,但应使用所有字母。
样例1234567896 51 1 1 3 3zacccd1 13 34 16 11 2
12345YesNoYesYesYes
启发式合并记录每一层节点的信息,判断是否可以组成回文串,检查的话很简单,维护一个cnt[N][26]统计每一层各个字母 ...
Spring Boot 自动装配原理
Spring Boot 的自动装配是在他的核心注解 @SpringBootApplication 实现的,@SpringBootApplication 大概可以看成@Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。其中@EnableAutoConfiguration 就算启用 Spring Boot 的自动装配机制,@EnableAutoConfiguration 通过 @Import 导入了 AutoConfigurationImportSelector 这个类,AutoConfigurationImportSelector 类中的 getCandidateConfiguration 方法会将所有自动配置类的信息以 List 的形式返回,并交由 Spring 容器做 bean 来管理。最后,通过@Conditional等条件注解按需加载的配置类,其他的将被过滤掉。
参考 SpringBoot 的启动过程:
当启动 Spring Boot 应用程序的时候,会先创建 SpringApplication 的对象,在对象 ...
做题记录Atcoder-Beginner-Contest-328
A Not Too Hard1234567891011121314151617181920212223242526272829303132#include<bits/stdc++.h>using namespace std;#define int long longint read(){ int x = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { x= x * 10 + ch - '0'; ch = getchar(); } return x * f;}signed main(){ int n = read(), x = ...
做题记录 Atcoder-Beginner-Contest-143
A - Curtain翻译练习高桥的房间的窗户宽A,有两个窗帘悬挂在窗户上,每一个窗帘水平长度为B(竖直方向足够长可以覆盖整个窗户),我们将关闭窗户,以尽量减少窗帘未遮挡部分的总水平长度。求窗户无遮挡部分的水平总长度。
12345678910111213141516171819202122232425#include<bits/stdc++.h>using namespace std;#define int long longint read(){ int x = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { x= x * 10 + ch - '0'; ...
ABC142
你是抱着多大的觉悟说出这种话的🙄️你只不过是一个学生,有办法背负其他人的人生吗😡“什么都愿意做”就是这么沉重的话😡做不来的事就别轻易说出口😡你这个人,满脑子都只想到自己呢😒
Aeasy
12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;#define int long longint read(){ int x = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { x= x * 10 + ch - '0'; ...
ABC139
A - Tenki模拟
123456789101112131415#include <bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); string s, t; cin >> s >> t; int res = 0; for(int i = 0; i < 3; i++) if(s[i] == t[i]) res++; cout << res << endl; return 0;}
B - Power Socket模拟
12345678910111213141516171819#include <bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ ...
ABC138
A. Red or Not模拟
123456789101112131415#include <bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int a; string s; cin >> a >> s; if(a >= 3200) cout << s << endl; else cout << "red" << endl; return 0;}
B. Resistors in Parallel模拟
123456789101112131415161718#include <bits/stdc++.h>using namespace std;int main(int argc, char const *argv[] ...
ABC134
今天六点起的,好困,F没写,想睡觉,醒了一定补
A123456789101112131415161718192021222324252627#include<bits/stdc++.h>using namespace std;#define int long longint read(){ int x = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } retur ...