编程语言技巧经验分享

技术是一门绝妙的艺术。致力于C、C++、Java、Kotlin、Android、JavaScript、TypeScript、Python等编程技术的技巧经验分享

  • 博客(115)
  • 资源 (16)
  • 问答 (1)
  • 收藏
  • 关注

原创 Windows内核--DbgPrint/KdPrint Kernel log(3.1)

Kernel和Driver可以通过DbgPrint或DbgPrintEx打log. Windows内核并不会把Kernel log用UART输出,而是通过系统服务(int 2dh)的方式输出. DbgPrint的实现确实不走寻常路!

2022-11-05 22:54:25 1139

原创 Windows内核--WRK和真实的Windows内核源代码差多少?(1.3)

前面有提到WRK是微软官方公布的XP/Server 2003供学习和研究的内核源代码。WRK1.2究竟占据源代码的多少比例?

2022-11-05 13:54:27 1258

原创 Windows内核--为什么C语言适合编写内核?(1.2)

前面有提到,Windows内核大部分采用C语言编写,包括Linux/Mac(Free-BSD)都采用C语言作为主体语言。用C语言写操作系统并不是巧合。

2022-11-05 13:38:16 995

原创 Windows内核--CreateProcess的内核实现 (2.2)

不管是桌面双击应用程序(ShellExecute*)还是代码中调用创建进程API, 最终一般都会调用NT Native API CreateProcess, 具体请参阅WRK1.2 create.c, 这里不再赘述,下面会继续讨论API参数和Kernel内部比较特别的地方。

2022-11-04 13:49:45 544

原创 Windows内核--代码只有main函数, 进程怎么创建的? (2.1)

代码只有main函数, 进程怎么创建的?

2022-11-02 12:27:09 245

原创 Windows内核--源代码在哪里?(1.1)

利用WinDbg调试Kernel, 可以得到内核数据结构,参照WRK源代码和深入解析Windows操作系统可以猜测到内核源码的可能长相,结合IDA等反编译工具和Windbg可以获取内核全貌。微软官方并不完全公开源代码, 想清楚Windows技术内幕,就需要逆向工具。大部分人能看到这篇帖子, 想必已经用过Windows系统多年了...

2022-11-02 11:34:32 2189

原创 解开初始化语句的“迷雾重重“(你想知道的C语言 4.1)

Q: int a = b = 3; 为什么会编译错误?A: 要看情况。C语言的变量必须先声明后定义。上面的表达式,如果b声明过,可以编译过,如果没有,才会编译错误。Q:C语言为什么支持上面看起来怪怪的表达式?A:看看C标准。 请自行脑补。Q: int i = 3.2f; i为什么等于3 ?A:C语言标准规定float到int, 只取整数部分,丢弃小数部分。至于i是如何被赋值为3,一般编译器会先计算出3,直接赋值给i. 也许有人会想到编译器是如何计...

2020-07-28 22:24:50 370

原创 声明和初始化(你想知道的C语言 3.9)

Q: 为什么变量需要先声明才能使用?A: 编译型语言的本质要求。变量的类型必须确定才能确定大小并生成机器代码。 试想 i = 1; 这种语句编译器要怎么看待i? 解释型语言一般不需要声明就可以使用,因为它们先默认当做字符串,在需要用的时候再转换成需要的类型。Q: 自动变量未初始化时值为什么是不确定的?A:堆栈数据的不确定性是其本质原因。没有任何操作系统会在使用堆栈时做初始化,一则没必要,二则损失性能。Q: 怎么证明堆栈数据是不确定的?A:...

2020-07-27 21:07:31 450

原创 精确度(你想知道的C语言 3.8)

Q: 只要涉及到浮点数,每本书基本都会说它不是精确的,我们该如何理解精确二字?A: 精确永远都是相对而言。当我们认为1、2、3...自然数是精确的,自然C语言中int/char都是精确的。如果我们认为1.33是精确的,那么它就是精确的。那为什么浮点数会被认为不是精确的呢? 以4字节浮点数为例,符号位/指数位和有效位的位数都是固定的,当某个浮点数的有效位超出预设,那么就不能精确表达了。 对于int来说,其实也不能说是精确的,当我们认为间隔1其实不是精确,那int就不是精确的...

2020-07-24 19:18:51 1543 1

原创 溢出 (你想知道的C语言 3.7)

Q: 溢出的本质是什么?A: 江河漫漫,才华会溢,箱子会满,人会吃饱。无止境增加一定会满,事物的有限性,物质和欲望增长一定会撑不住。Q: N字节无符号整形最大值再加1会变成什么?A: 思考1字节的情形:unsigned char c = UCHAR_MAX;printf("%d\n", (unsigned char)(c + 1));0 UCHAR_MAX是0xFF, 加1等于0x100, 1被丢弃!Q: N字节有符号整形最大值再加1会变成什么?A...

2020-07-21 22:34:26 357

原创 C和汇编(你想知道的C语言 3.6)

C语言其实是个绝世高手,它一直隐藏"汇编“的身份,别人以为汇编是汇编,C语言只是默默一笑: 汇编只是我的代理人。Q: 选择语句if是如何对应汇编的?A:int i;int j;if (i == 1) j = 0;else j = 1;0000000100000f92 cmpl $0x1, -0x14(%rbp) // i == 1 ?0000000100000f96 jne 0x100000fa80000000100000f9c movl $0x0, -0x1..

2020-07-20 22:34:22 475

原创 有符号数和无符号数(你想知道的C语言 3.5)

Q:整数区分出有符号数和无符号数的意义是什么?A:整数有正数也有负数,有符号数为了在基本数据类型大小之内既表达正负,又表达数值,才不至于在表达正负依赖其他基本类型或复杂类型协助,失去C语言简洁的特性。 无符号数相当于只有正数,在常规意义数值分析上最大挖掘和表达类型内存空间的范围。 Q:浮点数为何没有有符号数和无符号数的称呼?A: 浮点数一般采用IEEE754去表达,已有符号位,不需有符号和无符号特别称呼。Q: CPU如何识别有符号和无符号数?A: 其实...

2020-07-19 16:25:38 342

原创 整数的内部形态(你想知道的C语言 3.4)

Q: 探究整数的内部形态有何意义?A: 整数的二进制形态对于理解计算机处理的比特信息有重要意义,对于分析和扩展新类型以及解释牛鬼蛇神变态的数据操作有不可替代的支撑作用。Q: int i = 100; i内部保存的二进制形式是什么?A:/* Xi Chen([email protected]) cxsjabcabc*/#include <stdio.h>#include <stdlib.h>void dump_int_bits(int n)..

2020-07-18 21:51:30 212

原创 常量和变量(你想知道的C语言 3.3)

Q: 常量和变量的本质区别是什么?A: 常量是不可改变的"变量", 变量是可改变的"常量". 我中有你你中有我是世界的本质,常量和变量只是为了方便表达特定含义的代名词,它们都是一种实体存在。 我们可能会关注常量和变量在编译器或者运行期表达方式的不同,常量的不可改变特性有优化的可能。Q: const int i = 1和int i = 1有何差异?A: const是写给编译器看的, 为防止修改i的代码出现,而汇编代码不受const影响。const int i = 1;int...

2020-07-18 21:01:14 297

原创 C语言内置类型(你想知道的C语言 3.2)

Q: char类型、int类型和long类型的长度由什么决定?A: 在不同的系统或编译系统上, int有时是2字节, 有时是4字节. 编译器决定着int究竟是2字节还是4字节. C语言标准没有规定int类型的准确长度, 因为它是标准, 不能太个性化。C语言只是粗略地规定char <= short <= int <= long. 从编译器的角度, 它解析到int类型, 它是当做2字节还是4字节完全随性, 如果真想个性,也可以是5字节。Q: 如何证明...

2020-07-17 22:19:41 459

原创 程序是如何运行的(你想知道的C语言 3.1)

Q: 32位和64位程序比较常见, 为何没有33位/65位程序不常见?A: 计算机以二进制起家, 寄存器/对齐/内存多以2倍数存在, ASCII码1字节作为标配, 计算机基本处理单元为8位倍数. 16位寻址无法满足对内存越来越大的需求, 32位应运而生. 4GB最大寻址已经无法满足日益增长的内存需求, 64位操作系统产生了.Q: 32位和64位应用程序的差异在哪里?A: 作者: 陈曦环境: MacOS 10.14.5 Apple ...

2020-07-15 22:28:25 226

原创 TTY read系统调用(你想知道的C语言 2.6)

Q: 程序调用read系统调用等待输入, 键盘输入1个字符后执行了哪些流程?A: 从大的框架来看: 按键中断 --> 按键驱动程序解析key --> 投递给当前TTY驱动 --> (默认)回显字符 --> TTY驱动保存输入字符 --> (如果是换行符)唤醒read系统调用返回到用户程序继续运行Q: 按键中断程序传递按键到TTY的接口是?A:tty_insert_flip_char和tty_schedule_flip函数. 前者把...

2020-07-14 21:42:29 867

原创 scanf 缓冲区原理(你想知道的C语言 2.5)

在正式解说scanf缓冲区之前,我们先吃几个开胃小菜.Q: 为什么调用scanf函数线程会停住等待输入?A: scanf会调用read系统调用获取用户输入的信息, 在没有准备好已有的输入或重定向, read一定会等待.作者: 陈曦环境: MacOS 10.14.5 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.6.0 ..

2020-07-13 21:34:05 920

原创 scanf 格式和输入不匹配(你想知道的C语言 2.4)

printf章节, 我们有提到格式符和参数不匹配, scanf同样存在类似的问题, 分析此类问题的最佳途径依然是libc源代码和汇编. printf 格式串和参数不匹配的后果(你想知道的C语言 1.10)Q: scanf("%d", &n); 输入1.5, n是多少?A: 1.5被当做浮点数? 当然不是, scanf对于所有输入都当做字符, 在如上场景, 接收到小数点时, 就终止了! 所以n是1. https://opensource.apple.com/so...

2020-07-12 19:01:38 2747 4

原创 %d %i的区别(你想知道的C语言 2.3)

Q: 格式%d和%i的差别是什么?A: printf: 无差异; scanf: %i除了有%d的十进制输入功能外,还支持八进制和十六进制输入.#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int argc, char *argv[]){ int n1, n2; scanf("%d %i", &n1, &n2); printf("%d %d\n",

2020-07-12 18:35:01 2317

原创 scanf 参数为什么需要取地址(你想知道的C语言 2.2)

Q: 同样是整数参数, 为什么printf只需要传入参数本身,而scanf需要取地址?A: printf只需要获得参数数值,scanf需要修改变量的能力! 从技术的角度, printf一样可以强制要求取地址, 内部多一道解引用取出数值, 所以没必要! 而scanf, 传入的参数是值传递, 没办法修改到原变量,所以必须要取地址. Mac Libc: 以int为例, 最后是从参数中取int *, 然后存入输入的数据res. C...

2020-07-11 10:52:24 3231 3

原创 scanf 返回值(你想知道的C语言 2.1)

Q: scanf的返回值和printf返回值一样吗?A: scanf的返回值和printf返回值不一样, scanf对于输入多少字符并不敏感, 大多数情况下毫无意义. 但它对输入的变量个数很感兴趣. 参考:printf 返回值 (你想知道的C语言 1.1)These functions(scanf/fscanf...) return the number of input items assigned. 只输入一个变量:/* Xi Chen(511272827@qq....

2020-07-11 10:05:04 4021

原创 printf 格式串和参数不匹配的后果(你想知道的C语言 1.10)

Q: 如下代码的输出结果是多少?#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int argc, char *argv[]){ printf("%d\n", 1.5); return 0;}A: %d本来对应的是整形,实际参数传入浮点数1.5. 1.5会强制转换成整形1吗? 对于此类问题, 最佳的分析手法是从原理和汇编出发, 不论什么格式都可以分析出...

2020-07-10 21:17:14 2805

原创 printf \a 响铃的流程(你想知道的C语言 1.9)

Q: printf("\a")响铃的动作是在哪里执行的?A: 首先考虑是libc对转义字符'\a'做了特殊处理或者write系统调用中kernel对'\a'做了特殊处理. 这两种方式都有弊端,它们无法灵活处理用户的配置. 比如有的用户想要关闭响铃或者响铃换成闪屏提醒,这些都不能做到。 现代操作系统一般会把'\a'最终要执行的动作交给终端应用程序,以实现灵活配置. 以iTerm2为例: 终端接收到'\a'字符, 会根据配置决定是否做响应动作. act...

2020-07-09 21:39:07 3941

原创 Terminal TTY Console Shell Stdout傻傻分不清(你想知道的C语言 1.8)

Q: 计算机的书籍中,在描述终端/shell的时候,到处充斥着tty/console/shell/stdout之类的字眼,我们该如何理解它们?A: 因为历史原因, 有一些名词慢慢失去了最开始的含义,而跟着时代变迁开始有新的含义。作者: 陈曦环境: MacOS 10.14.5 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.6.0..

2020-07-08 21:50:30 747

原创 回车和换行 \r \n(你想知道的C语言 1.7)

Q: 何为"回车", 何为"换行"?A: 回车的英文是"Carriage Return", 换行为作者: 陈曦环境: MacOS 10.14.5 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.6.0 转载请注明出处...

2020-07-07 08:17:46 986

原创 \t 宽度(你想知道的C语言 1.6)

Q: 制表符的起源是什么?A: “Tab”一词由英文“tabulate”派生而来,意思是“以表格、或表格形式排列数据”。在打字机上如果要输入一份文字或数字表格,必须不断使用空白键以及Backspace键,不仅重复也十分费时。为了简化这道程序,人们发明了可移动的杠杆,借由在横杆上移动而在页面不同位置输入。一开始这些机关必须手动设置,但不久便有了“Tab set”(设置Tab)与“tab clear”(清除Tab)按键。当Tab键弹起,打字机的滑动架便会推进到下一个定位点(tab stop),而这些定位点.

2020-07-06 22:26:07 1423

原创 printf 为何不是关键字 (你想知道的C语言 1.5)

Q: printf是C语言关键字吗?A: 我们用代码来测试一下.#include <unistd.h>#include <stdio.h>#include <fcntl.h>int main(int argc, char *argv[]){ int printf; return 0;} 是可以编译通过的! 所以,printf一定不是关键字.Q: 标准输入输出是一个很通用的概念,为什么printf不被设计成关键字呢?A: ...

2020-07-06 20:10:06 5190

原创 printf 缓冲区问题分析 (你想知道的C语言 1.4.1)

Q: 程序发生了异常将终止,printf 缓冲区的数据还会刷新吗?A: 在程序发生异常的时候,操作系统可能会直接结束应用程序,这会导致IO缓冲区的数据不能及时刷新.#include <stdio.h>#include <unistd.h>#include <fcntl.h>int main(int argc, char *argv[]){ printf("hello, my cat"); sleep(3); printf("Byebye, my

2020-07-06 19:46:48 278

原创 printf 缓冲区原理 (你想知道的C语言 1.4)

Q: 缓冲区究竟是什么概念?A: 缓冲: 顾名思义, 表示可以酌情商量有回旋余地. 可以想象一种只能强制遵守且说一不二的情形,一种可以协商开发此消彼长的模式. 区: 理解成可以协助存储/处理的物理位置,一般理解成内存。 计算机科学的"缓冲区"概念可以说是到处都有, 这种模式的作用至少有两种: 1 协助存储和内部处理; 2 尽可能提高潜在的效率. 就像是数学课代表统一把作业本交到办公室要比每个学生都跑一遍办公室更高效. Q: pri...

2020-07-05 12:10:10 4213

原创 tty读写之内核实作 (你想知道的C语言 1.3.1)

作者: 陈曦环境: MacOS 10.14.5 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.6.0 Linux 3.16.83 转载请注明出处Q: console和tty是什么关系?A: 一般来说,console被当做是物理终端或者单用户模式的终端, tty我们一般叫做虚拟终端,一般是GUI终端内部模拟的终端..

2020-07-04 17:43:07 690

原创 write系统调用的实现 (你想知道的C语言 1.3)

作者: 陈曦环境: MacOS 10.14.5 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.6.0 转载请注明出处Q: 承接printf的底层实现,write系统调用是否就是写到stdout文件最后传递给LCD驱动显示?A: write系统调用确实会把数据写到kernel stdout buffer, 但不会直接传递给LCD驱动显示..

2020-07-04 14:22:47 1517

原创 printf 内部原理和实现 (你想知道的C语言 1.2)

printf

2020-06-29 22:06:57 4991

原创 printf 返回值 (你想知道的C语言 1.1)

Q: printf("中国")返回值是多少?A:

2020-03-15 18:48:45 1053

原创 c语言,有时莫名,有时奇妙----小话c语言(25)

作者:陈曦 日期:2012-8-17 12:53:12环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2]  转载请注明出处Q1: 为什么下面的输出不按照代码的顺序显示?#include #include int main(int argc, char **argv){ while(1)

2012-08-17 12:49:58 3599 6

原创 windows平台的多线程同步互斥:从内核源码分析----小话多线程(3)

作者:陈曦 日期:2012-8-16 13:05:34环境:[win7 32位操作系统  Intel i3 支持64位指令   VS2010;   wrk-v1.2 ;   Source Insight]  转载请注明出处Q1: 举个windows平台简单的线程例子吧。A: 如下,保存为thread_test.c:#include #inclu

2012-08-16 13:01:28 4693

原创 线程问题的核心: 怎么退出线程才是合适的----小话多线程(2)

作者:陈曦 日期:2012-8-5  16:13:36环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2 苹果开源代码Libc-763.11] 转载请注明出处每日总结:优秀的架构都是类似的,垃圾的架构一般都是一个原因:代码内部原理掌握得不够Q1: main函数中最后用return 0; 和使用 exit(

2012-08-05 16:18:03 13029 15

原创 看看多线程,其实没那么可怕----小话多线程(1)

作者:陈曦 日期:2012-8-2 9:55:28 环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2] 转载请注明出处Q1: 对于主线程,创建一个子线程,如何传参数给它?A: 对于pthread线程接口,线程函数参数就满足了这个要求。如下代码:#include #include #defin

2012-08-02 09:53:46 5164 1

原创 预处理,它有时很神奇----小话c语言(24)

作者:陈曦日期:2012-7-28  18:19:55环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2]  转载请注明出处Q1: 宏这个东西真是很奇怪,为什么我想将一句#include代码用宏来替换,却不行?#define INCLUDE_STDIO #includeINCLUDE_

2012-07-28 18:16:05 3700

原创 可变参数, 它依赖于堆栈----小话c语言(23)

作者:陈曦日期:2012-7-28 12:20:17 环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2]  转载请注明出处Q1: 可变参数的函数调用能够被正确执行的本质原因是什么?A: 可变参数的一个重要特点就是参数个数不确定,但是最终可以被正确执行一般需要堆栈以及参数类型的确定性支持。如果参数类型都无法确定是

2012-07-28 12:16:35 6535 8

JESD209-4B-LPDDR4 中文解读 v2.3

**重要提醒: 解读已更新到v2.3, 包含老版本所有注解** ** 文档不仅是LP4 Spec文档,而是Spec的注释解读。 ** 解读是注释,即文中黄色或绿色下划线的注解,试读看不到。 ** 退款: 承诺如对文档注释不满意,可线下联系作者申请退款。

2022-10-23

DRAM技术精解(第三版 中文) DDRX LPDDRX

** 行业标准: 作者有数年Spec经验, 熟悉JEDEC标准。 ** 咨询: 免费每天3个问题的解答。 ** 退款: 如对于解读不满意,可线下联系作者申请退款。 对内容质量有疑问,可提前私信咨询。

2022-10-23

DRAM技术精解(第二版 中文) DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5.pdf

本文档为DRAM技术精解 DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5 中文版第二版. 本文档详细介绍了Dram的历史发展中出现的不同技术,以及技术对应的解决方案 这是最详细的介绍, 把基本DDR 到DDR5,LPDDR 到LPDDR5的所有技术都有涉及. ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款.

2022-04-24

JESD209-5_4_3 LPDDR5 LPDDR4 LPDDR3精解

此文档对于JESD标准LPDDR5解读,轻松理解LPDDR5标准。 也包含LPDDR4/LPDDR3标准解读。 问题举例: ** LPDDR5X和LPDDR5有什么区别? ** LP5 DVFS如何实现? ** LP5相比LP4X性能提升明显吗? ** 明明DRAM只是为了存储0或1,Spec为什么设计这么复杂? ** WCK机制有何优势? ** Bank Group为什么能提升性能? ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款. 如对内容质量有疑问,可提前私信咨询。

2022-03-12

JESD209-4_3 LPDDR4 LPDDR3精解.pdf

此文档对于JESD标准LPDDR4解读,轻松理解LPDDR4标准。 问题举例: ** LP4 vs LP4X ** 为什么2018旧款 Macbook Pro只用LP3, 而不用LP4? ** Apple M1如何做到性能很强呢? ** LPDDR4有ECC吗? ** LVSTL模型的意义? ** 为什么LPDDR4钟情于16bit per channel? ** Pad Order究竟是何物? ** 为什么有EMCP这种封装? ** 为什么有ZQ pin? ** LPDDR可以取代DDR? ** 为什么LP4和DDR4 prefetch差异很大? ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款. 如对内容质量有疑问,可提前私信咨询。

2021-12-12

JESD209-3 LPDDR3精解.pdf

此文档对于JESD标准LPDDR3解读,轻松理解LPDDR3标准。 问题举例: ** DDR3L/DDR3U和LPDDR3的关系是什么? ** 为什么2018旧款 Macbook Pro只用LP3, 而不用LP4? ** Deep Power Down时dram数据还会存下来吗? ** LPDDR3没有RESET pin如何发reset? ** LPDDR3有DIMM吗? ** LPDDR3支持ECC吗? ** DDR3有x4和x8, LPDDR3为什么没有呢? ** LPDDR3 IO模型 ** 手机或PC上的LPDDR3内存可以用DDR3或DDR4内存替换吗? ** LP3不像PC3有DLL, 如何同步CLK和DQS? ** LPDDR3 vs DDR4性能 ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款. 如对内容质量有疑问,可提前私信咨询。

2021-11-26

JESD79-5_4_3 DDR5 DDR4 DDR3精解.pdf

此文档对于JESD标准DDR5/DDR4/DDR3做中文解读,轻松理解DDR5/4/3标准。 问题举例: ** DDR5设计目标 ** 为什么Write一般是Center Aligned, Read是Edge Aligned? ** DDR5 Sub Channel设计的优势 ** DDR4 DIMM vs DDR5 DIMM ** 为什么服务器很关心ECC? ** DBI是如何省电的? ** 有Read Leveling吗? ** Prefetch从8到16的意义 ** Dram Size和Page Size如何计算? ...... ** 行业标准: 作者有数年Spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年Dram问题Debug,Spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-11-21

JESD79-4B DDR4 JESD79-3F DDR3 精解.pdf

此文档对于JESD标准DDR4和DDR3做中文解读,轻松理解DDR4/DDR3标准。 问题举例: ** 你真的理解SDRAM的S吗? ** 为什么Write一般是Center Aligned, Read是Edge Aligned? ** DDR4为什么没有Vref DQ? ** Mode Register可读了? ** 最大省电模式(Maximum Power Down Mode) ** 为什么服务器很关心ECC? ** DBI是如何省电的? ** 有人会问,有Read Leveling吗? ** Prefetch的作用 ** Dram Size和Page Size如何计算? ** 为什么有MRS,没有MRR? ** DDR4 POD12的起源 ...... ** 行业标准: 作者有数年Spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年Dram问题Debug,Spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-11-16

JESD79-3 DDR3 Technology.pdf

此文档对于JESD标准DDR3做英文解读,轻松理解DDR3标准。 此文档为"JESD79-3 DDR3解读"纯正英文版。 问题举例: ** 你真的理解SDRAM的S吗? ** 为什么Write一般是Center Aligned, Read是Edge Aligned? ** BC4有啥用? ** 为什么会有Dynamic ODT? ** BIOS是如何识别DIMM是DDR3或者DDR4的? ** XMP是什么? ** 为什么有Write Leveling? ** 有人会问,有Read Leveling吗? ** Prefetch的作用 ** Dram Size和Page Size如何计算? ** 为什么有MRS,没有MRR? ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-11-13

JESD79-3 DDR3精解.pdf

此文档对于JESD标准DDR3做中文解读,轻松理解DDR3标准。 问题举例: ** 你真的理解SDRAM的S吗? ** 为什么Write一般是Center Aligned, Read是Edge Aligned? ** BC4有啥用? ** 为什么会有Dynamic ODT? ** BIOS是如何识别DIMM是DDR3或者DDR4的? ** XMP是什么? ** 为什么有Write Leveling? ** 有人会问,有Read Leveling吗? ** Prefetch的作用 ** Dram Size和Page Size如何计算? ** 为什么有MRS,没有MRR? ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-10-25

JESD79-4 DDR4解读.pdf

此文档对于JESD标准DDR4做中文解读,轻松理解DDR4标准。 ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-10-13

DRAM技术精解(中文) DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5.pdf

本文档为DRAM Technology DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5技术精解 中文版. 本文档详细介绍了dram的历史发展中出现的不同技术,以及技术对应的解决方案 这是最详细的介绍, 把基本DDR 到DDR5,LPDDR 到LPDDR5的所有技术都有涉及. 本文花费周期约一年,记录DDR系列和LPDDR系列重要技术的来源和内部原理, 掌握它们会对于理解dram技术有非常大的帮助. 比如: 1 prefetch和burst length的关系 2 ODT技术的阻抗匹配内幕是什么? 3 LPDDR4 LVSTL IO模型的优点 ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺!

2021-10-02

Android十年终极开发经验_助您不走弯路_快速晋级Android架构师

作者从事Android开发十年有余,走过的弯路不计其数,深感经验总结有助于在Android上快速前行,早日完全掌握Android,达到Android巅峰! 内容主要包括: *Android 开发积累的重要经验 *Android 开发知识体系 *Android 开发方向 Flutter/Kotlin经验总结 *可维护可扩展 Android 开发攻略 *性能稳定 Android 开发攻略 ** 行业标准: 作者有数年Android开发经验. ** 专业: 数年Android问题debug经验,Android解读专业到位 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答 ** 退款: 作者承诺如果对于文档不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺!

2021-08-08

JESD209-4C LPDDR4解读.pdf

此文档对于JESD标准LPDDR4做中文解读,轻松理解LPDDR4标准。 ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-08-01

JESD79-3F_DDR3 中文注释解读 v3.pdf

**重要提醒: 解读已更新到v3, 最后更新时间2021-7-18 194945** 此文档对于JESD标准DDR3做中文解读,轻松理解DDR3标准。 为何有此文档? > 笔者曾经在dram领域摸爬滚打数年,深深感受到spec标准文档的理解直接影响到dram知识技术的认知和层次,理解spec文档将极大提高dram水平。数年经验化成一篇解读,不要让时间浪费在不断地寻找spec标准含义的过程中,而是站在经验者之上更上一层楼! 祝每个看过此文档的人都可以为"被某国打压的dram技术"增加技术储备! 解读示例: 1 CK_t和CK_c代表什么? > CK_t: CK True, 代表差分信号的正极性clock, 也就是"真"clock/主clock; CK_c: CK Complement, 代表差分clock的负极clock. 2 CKE和CK的区别: > CKE是指dram clock时钟 enable与否,注意它和上面的CK有本质区别,CKE可以 理解为是颗粒侧的时钟,但CK是controller和dram交互的时钟。 CK如果没有了,CKE没有意义。但CK如果有,CKE可有可无。 CKE拉低,颗粒进入power down模式,可以节省功耗。 3 ZQ为什么一般是240欧姆呢? > 因为一般dram都是通过并联电阻实现设置为指定的电阻值,一般工业级的电阻值 是34, 40, 60, 80, 120欧姆,取最小公倍数,即240欧姆! ......还有更多... ** 本文档不仅仅是DDR3 spec标准文档,而是spec的注释解读 ** ** 翻译成中文? 当然不是翻译, 翻译放到网站上随便都可以翻译出来,此文是带着理解的解读! 深挖spec内部的原理,让您事半功倍!不要被spec卡住您的前途! ** 因为解读是注释,即文中黄色或绿色下划线的注解,试读看不到,正在想方法如何显示给大家看。 ** 行业标准: 作者有数年spec经验. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! ** 更新: 不定期进行文档更新,保证每读一遍都有不一样的感受。 ** 再次提醒: 试读看到的是标准DDR3 spec, 批注注释才是本文档的价值所在!! 千万不要以为仅仅是DDR3 spec!!

2021-07-18

JESD79-E_DDR 中文注释解读 v2.2.pdf

**重要提醒: 解读已更新到v2.2, 最后更新时间2021-7-17 165220** 此文档对于JESD标准第一代DDR做中文解读,轻松理解DDR标准。 为何有此文档? > 笔者曾经在dram领域摸爬滚打数年,深深感受到spec标准文档的理解直接影响到dram知识技术的认知和层次,理解spec文档将极大提高dram水平。数年经验化成一篇解读,不要让时间浪费在不断地寻找spec标准含义的过程中,而是站在经验者之上更上一层楼! 祝每个看过此文档的人都可以为"被某国打压的dram技术"增加技术储备! 解读示例: 1 CK_t和CK_c代表什么? > CK_t: CK True, 代表差分信号的正极性clock, 也就是"真"clock/主clock; CK_c: CK Complement, 代表差分clock的负极clock. 2 CKE和CK的区别: > CKE是指dram clock时钟 enable与否,注意它和上面的CK有本质区别,CKE可以 理解为是颗粒侧的时钟,但CK是controller和dram交互的时钟。 CK如果没有了,CKE没有意义。但CK如果有,CKE可有可无。 CKE拉低,颗粒进入power down模式,可以节省功耗。 3 ZQ为什么一般是240欧姆呢? > 因为一般dram都是通过并联电阻实现设置为指定的电阻值,一般工业级的电阻值 是34, 40, 60, 80, 120欧姆,取最小公倍数,即240欧姆! ......还有更多... ** 本文档不仅仅是DDR spec标准文档,而是spec的注释解读 ** ** 翻译成中文? 当然不是翻译, 翻译放到网站上随便都可以翻译出来,此文是带着理解的解读! 深挖spec内部的原理,让您事半功倍!不要被spec卡住您的前途! ** 因为解读是注释,即文中黄色或绿色下划线的注解,试读看不到,正在想方法如何显示给大家看。 ** 行业标准: 作者有数年spec经验. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! ** 更新: 不定期进行文档更新,保证每读一遍都有不一样的感受。 ** 再次提醒: 试读看到的是标准DDR spec, 批注注释才是本文档的价值所在!! 千万不要以为仅仅是DDR spec!!

2021-07-17

JESD209-4B_LPDDR4 中文注释解读.pdf

**重要提醒: 解读已更新到v2, 最后更新时间2021-7-11 161631** ** 本文档不仅仅是LP4 spec标准文档,而是spec的注释解读 ** ** 翻译成中文? 当然不是翻译, 翻译放到网站上随便都可以翻译出来,此文是带着理解的解读! 深挖spec内部的原理,让您事半功倍!不要被spec卡住您的前途! ** 因为解读是注释,即文中黄色或绿色下划线的注解,试读看不到,正在想方法如何显示给大家看。 ** 行业标准: 作者有数年spec经验. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款. ** 更新: 不定期进行文档更新,保证每读一遍都有不一样的感受。 ** 再次提醒: 试读看到的是标准LP4 spec, 批注注释才是本文档的价值所在!! 千万不要以为仅仅是LP4 spec!!

2021-06-18

DRAM Technology DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5技术精解.pdf

本文档详细介绍了dram的历史发展中出现的不同技术,以及技术对应的解决方案 这是最详细的介绍, 把基本DDR 到DDR5,LPDDR 到LPDDR5的所有技术都有涉及. 本文花费周期约一年,记录DDR系列和LPDDR系列重要技术的来源和内部原理, 掌握它们会对于理解dram技术有非常大的帮助. 比如: 1 prefetch和burst length的关系 2 ODT技术的阻抗匹配内幕是什么? 3 LPDDR4 LVSTL IO模型的优点 ...... ** 行业标准: 作者有数年spec经验, 熟悉JEDEC标准建立的过程. ** 专业: 数年dram问题debug,spec解读专业到位。 ** 咨询: 承诺文档解读有疑问,可以免费每天3个问题的解答。 ** 退款: 作者承诺如果对于文档解读不满意,可线下联系作者申请退款,作者就有这样的自信敢承诺! 如对内容质量有疑问,可提前私信咨询。

2021-01-31

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除