bit

浅析PCIe链路LTSSM状态机

╄→尐↘猪︶ㄣ 提交于 2020-01-18 11:30:36
版权声明:本文为CSDN博主「古猫先生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 https://blog.csdn.net/zhuzongpeng/article/details/78995340 我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机。LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?它就在PCIe总线的物理层之中。 LTSSM状态机涵盖了11个状态,包括Detect, Polling, Configuration, Recovery, L0, L0s, L1, L2, Hot Reset, Loopback, Disable。这11个状态之间转换的逻辑,如下图, 这11个状态大致可以分为4大类: (1) PCIe链路训练相关。正常的PCIe链路训练状态转换流程依次是,Detect->Polling->Configuration->L0. L0是PCIe链路可以正常工作的电源状态。 (2) PCIe链路重新训练相关。这个状态也称为Recovery。Recovery是一个非常重要的链路状态,进入这个状态的因素也很多,比如电源状态的变化,PCIe链路速率的变化等。 (3) 电源状态相关

Redis修行 — 位图实战

有些话、适合烂在心里 提交于 2020-01-18 01:33:16
学 无 止 境 , 与 君 共 勉 。 介绍 按照官网的说法,Redis位图Bitmaps不是实际的数据类型,而是在字符串类型上定义的一组 面向位的操作 。在Redis中字符串限制最大为 512MB ,所以位图中最大可以设置 2^32 个不同的位( 42.9亿个 )。图位的最小单位是比特(bit),每个bit的值只能是0或1。 位图的存储大小计算: (maxOffset / 8 / 1024 / 1024)MB。其中maxOffset为位图的最大位数 基本用法 SETBIT key offset value 设置指定key的值在offset处的bit值,offset从0开始。返回值为在offset处原来的bit值 # 通过位操作将 h 改成 i 127.0.0.1:6379> SET h h # 二进制为 01101000 OK 127.0.0.1:6379> SETBIT h 7 1 # 将最后一位改成1 => 01101001 (integer) 0 127.0.0.1:6379> GET h "i" GETBIT key offset 获取指定key的值在offset处的bit值,offset从0开始。如果offset超出了当前位图的范围,则返回0。 127.0.0.1:6379> set i i # 二进制为 01101001 OK 127.0.0.1:6379>

【002.13.01】输入子系统概念介绍

百般思念 提交于 2020-01-17 11:16:47
可以将输入子系统看做由三大部分组成,体现了一种分离分层思想。分别为: 核心层 事件处理层 设备驱动层 核心层:这部分主要由input.c来实现,它为事件处理层和设备驱动层提供统一接口,这里我们先列出几个重要的函数。 static int __init input_init(void) int input_register_device(struct input_dev *dev) int input_register_handler(struct input_handler *handler) int input_register_handle(struct input_handle *handle) 这几个函数几乎就实现了整个输入子系统的运作过程。 input.c subsys_initcall(input_init);/*是整个输入子系统的入口函数,它是被编译进内核的,也就是说一开机就会被执行的*/ input.c static int __init input_init(void) { err = class_register(&input_class); /*注册类,放在/sys/class*/ err = register_chrdev(INPUT_MAJOR, "input", &input_fops);/*注册一个设备名为input且主设备号为INPUT_MAJOR

bcc-tools工具之offcputime

痞子三分冷 提交于 2020-01-17 02:04:06
先了解什么是off-cpu On-CPU : where threads are spending time running on-CPU. Off-CPU : where time is spent waiting while blocked on I/O, locks, timers, paging/swapping, etc. 从上面的意思基本上了解offcputime的意思是什么了:用于测量某一进程被阻塞的时间。 老样子,还是从help开始说起: usage: offcputime [-h] [-p PID | -t TID | -u | -k] [-U | -K] [-d] [-f] [--stack-storage-size STACK_STORAGE_SIZE] [-m MIN_BLOCK_TIME] [-M MAX_BLOCK_TIME] [--state STATE] [duration] Summarize off-CPU time by stack trace positional arguments: duration duration of trace, in seconds optional arguments: -h, --help show this help message and exit -p PID, --pid PID trace this

获取一个字节byte的某位bit

我的梦境 提交于 2020-01-16 15:01:40
1、获取高4位bit值 public int getHeight4 ( byte data ) { //获取高四位 int height ; height = ( ( data & 0xf0 ) >> 4 ) ; return height ; } 2、获取低4位bit值 public int getLow4 ( byte data ) { //获取低四位 int low ; low = ( data & 0x0f ) ; return low ; } 3、获取第i位的bit值 //b为传入的字节,i为第几位(范围0-7),如要获取bit0,则i=0 public int getBit ( byte b , int i ) { int bit = ( int ) ( ( b >> i ) & 0x1 ) ; return bit ; } 4、获取从start开始长度为length的位bit值 /** * * @param b 一个字节:10011001 * @param start 起始bit位。如0位 * @param length 需要的bit的长度。如5个bit--------> 11001 * @return */ //b为传入的字节,start是起始位,length是长度,如要获取bit0-bit4的值,则start为0,length为5 public int

洛谷P4238【模板】多项式求逆

◇◆丶佛笑我妖孽 提交于 2020-01-16 05:38:28
洛谷P4238 多项式求逆: http://blog.miskcoo.com/2015/05/polynomial-inverse 注意: 直接在点值表达下做$B(x) \equiv 2B'(x) - A(x)B'^2(x) \pmod {x^n}$是可以的,但是一定要注意,这一步中有一个长度为n的和两个长度为(n/2)的多项式相乘,因此要在DFT前就扩展FFT点值表达的“长度”到2n,否则会出错(调了1.5个小时) 备份 版本1: 1 #prag\ 2 ma GCC optimize(2) 3 #include<cstdio> 4 #include<algorithm> 5 #include<cstring> 6 #include<vector> 7 #include<cmath> 8 using namespace std; 9 #define fi first 10 #define se second 11 #define mp make_pair 12 #define pb push_back 13 typedef long long ll; 14 typedef unsigned long long ull; 15 const int md=998244353; 16 const int N=2097152; 17 int rev[N]; 18 void init(int

Binary notation and Endianness

流过昼夜 提交于 2020-01-15 23:01:33
问题 Can we say that our 'traditional' way of writing in binary is Big Endian? e.g., number 1 in binary: 0b00000001 // Let's assume its possible to write numbers like that in code and b means binary Also when I write a constant 0b00000001 in my code, this will always refer to integer 1 regardless if machine is big endian or little endian right? In this notation the LSB is always written as the last element from the right, and MSB is always written as the left most element right? 回答1: Yes, humans

数据库误删了数据再也不用跑路了,

蹲街弑〆低调 提交于 2020-01-15 11:22:37
USE master GO --创建数据库 CREATE DATABASE test GO USE [test] GO --创建表 CREATE TABLE [dbo].[aa]( [id] [int] IDENTITY(1,1) NOT NULL, [NAME] [nvarchar](200) NULL ) ON [PRIMARY] GO --插入测试数据 INSERT [dbo].[aa] ( [NAME] ) SELECT '你好' GO --删除数据 Delete from aa Go --验证数据是否已经删除 Select * from aa Go 上面是创建数据库,表,添加数据,删除数据 下面写存储过程; --------------------------开始存储过程----------------------------------------- CREATE PROCEDURE Recover_Deleted_Data_Proc @Database_Name NVARCHAR(MAX) , @SchemaName_n_TableName NVARCHAR(MAX) , @Date_From DATETIME = '1900/01/01' , @Date_To DATETIME = '9999/12/31' AS DECLARE @RowLogContents

LSB(Least Significant Bit)和MSB(Most Significant Bit)

浪尽此生 提交于 2020-01-15 04:20:48
LSB(Least Significant Bit),意为最低有效位。 MSB(Most Significant Bit),意为最高有效位。若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。 MSB高位前导,LSB低位前导。 谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。 其实big endian是指低地址存放最高有效字节(MSB),而little endian则是低地址存放最低有效字节(LSB)。 用文字说明可能比较抽象,下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示: 采用big endian方式存储数据是符合我们人类的思维习惯的 来源: CSDN 作者: 故国春城 链接: https://blog.csdn.net/qq_36187285/article/details/103946134

LC3 Bit Counter

故事扮演 提交于 2020-01-14 05:11:05
问题 I'm trying to figure out how to implement a bit counter in LC3 assembly language. ex: input "00001100001000001" output "000000000000100" I would be counting the number of ones in the string of bits and outputting that number in binary. I know how to do this given one bit at a time, but I don't know how I can analyze only one bit of a 16 bit string at a time. Thanks. 回答1: There are several different ways you can count the number of bits in a value stored in the LC3. You can use bit shifting