关于内存详细说明
内存型号说明

具体含义解释
主要含义:
第1位——芯片功能K,代表是内存芯片。
第2位——芯片类型4,代表DRAM。
第3位——芯片的更进一步的类型说明,S代表SDRAM、H代表DDR、G代表SGRAM 、T代表DDR2 DRAM、D表示GDDR1(显存颗粒)。
第4、5位——容量和刷新速率,容量相同的内存采用不同的刷新速率,也会使用不同的编号。64、62、63、65、66、67、6A代表64Mbit的容量;28、27、2A代表128Mbit的容量;56、55、57、5A代表256Mbit的容量;51代表512Mbit的容量。
第9位——由一个字符表示采用的电压标准,Q:SSTL-1.8V (1.8V,1.8V)。与DDR的2.5V电压相比,DDR2的1.8V是内存功耗更低,同时为超频留下更大的空间。
第10位——由一个字符代表校订版本,表示所采用的颗粒所属第几代产品,M表示1st,A-F表示2nd-7th。目前,长方形的内存颗粒多为A、B、C三代颗粒,而现在主流的FBGA颗粒就采用E、F居多。靠前的编号并不完全代表采用的颗粒比较老,有些是由于容量、封装技术要求而不得不这样做的。
4、芯片容量和刷新速率:16=16Mbits、4K Ref;64=64Mbits、8K Ref;65=64Mbits、4K Ref;128=128Mbits、8K Ref;129=128Mbits、4K Ref;256=256Mbits、16K Ref;257=256Mbits、8K Ref
5、代表芯片输出的数据位宽:40、80、16、32分别代表4位、8位、16位和32位
三星的编号还有第16、17、18三位,这三位编号并不常见,一般用于OEM与特殊的领域,因而在此就不介绍了。
容量计算
内存芯片参数介绍

内存芯片参数介绍具体含义解释:例:SAMSUNG K4H280838B-TCB0主要含义:第1位——芯片功能K,代表是内存芯片。
第2位——芯片类型4,代表DRAM。
第3位——芯片的更进一步的类型说明,S代表SDRAM、H代表DDR、G代表SGRAM。
第4、5位——容量和刷新速率,容量相同的内存采用不同的刷新速率,也会使用不同的编号。
64、62、63、65、66、67、6A代表64Mbit的容量;28、27、2A代表128Mbit 的容量;56、55、57、5A代表256MBit的容量;51代表512Mbit的容量。
第6、7位——数据线引脚个数,08代表8位数据;16代表16位数据;32代表32位数据;64代表64位数据。
第11位——连线“-”。
第14、15位——芯片的速率,如60为6ns;70为7ns;7B为7.5ns (CL=3);7C 为7.5ns (CL=2) ;80为8ns;10 为10ns (66MHz)。
知道了内存颗粒编码主要数位的含义,拿到一个内存条后就非常容易计算出它的容量。
例如一条三星DDR内存,使用18片SAMSUNG K4H280838B-TCB0颗粒封装。
颗粒编号第4、5位“28”代表该颗粒是128Mbits,第6、7位“08”代表该颗粒是8位数据带宽,这样我们可以计算出该内存条的容量是128Mbits(兆数位)× 16片/8bits=256MB(兆字节)。
注:“bit”为“数位”,“B”即字节“byte”,一个字节为8位则计算时除以8。
关于内存容量的计算,文中所举的例子中有两种情况:一种是非ECC内存,每8片8位数据宽度的颗粒就可以组成一条内存;另一种ECC内存,在每64位数据之后,还增加了8位的ECC 校验码。
通过校验码,可以检测出内存数据中的两位错误,纠正一位错误。
所以在实际计算容量的过程中,不计算校验位,具有ECC功能的18片颗粒的内存条实际容量按16乘。
超详细!搞懂内存条颗粒频率时序,附DDR4内存条推荐

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:电脑叫兽一、读懂内存命名很多电脑小白在看到内存名字的时候都一脸懵逼,一长串的名字只能看懂品牌名。
后面的“DDR4、3200”等参数,根本看不懂。
我们以芝奇皇家戟这根内存为例,其名为“芝奇皇家戟DDR4 3600 32GB”。
“芝奇”相信大家都知道,是这根内存条的名字。
“皇家戟”则是芝奇品牌下的一个系列,除了“皇家戟”之外,还有“幻光戟”、“焰光戟”等。
不一样的系列命名,不同的系列名称也代表着不同的市场定位。
“DDR4”的意思是第四代DDR内存,选购内存时要选择跟主板内存接口类型相同的内存,DDR3内存与DDR4内存的接口是不一样的。
像“2666”、“3000”、“3200”等数字,代表着内存频率,单位为MHz。
数字越大,代表着内存速度越快,性能也就越高。
最后的“xx GB”,代表内存的容量。
二、内存跟硬盘的差别上面我们了解完内存了,可能还会有很多人有疑问。
为什么一块500GB的固态硬盘卖五六百,而一根16GB的内存条也能卖五六百?2.1 原理上的区别内存,即内部存储器。
内存是计算机系统中硬盘数据和CPU数据交换的中转站,属于临时存储器。
内存上的电容是会缓慢放电的,放电到一定程度就会导致数据发生变化,这也是关机断电后会导致内存中数据丢失的原因。
而硬盘,属于外出存储器,它可以长期的存储数据,不受断电的影响,存储容量大。
2.2 功能上的区别在功能上,我们可以把内存条看成一个连接CPU与硬盘的“中介”。
比如我们打开Photoshop这款软件,首先是内存从硬盘中读取Photoshop这款软件的文件,写入到硬盘当中。
因为内存的读写速度要比硬盘快的多,所以CPU会跟内存进行数据的交换,而不是跟硬盘进行数据交换。
2.3 速度上的区别下图是同一台电脑硬盘跟内存的读写速度跑分图,图上可以看到内存的读写性能是硬盘的二三十倍。
(作图为硬盘跑分,右图为内存跑分)三、内存条的组成内存中最重要的元件就是颗粒,就是下图中黑色的小方块。
内存知识--颗粒编号

内存知识内存颗粒编号,内存知识具体含义解释:例:samsungk4h280838b-tcb0 主要含义:第1位——芯片功能k,代表是内存芯片。
第2位——芯片类型4,代表dram。
第3位——芯片的更进一步的类型说明,s代表sdram、h代表ddr、g代表sgram。
第4、5位——容量和刷新速率,容量相同的内存采用不同的刷新速率,也会使用不同的编号。
64、62、63、65、66、67、6a代表64mbit的容量;28、27、2a代表128mbit的容量;56、55、57、5a 代表256mbit的容量;51代表512mbit的容量。
第6、7位——数据线引脚个数,08代表8位数据;16代表16位数据;32代表32位数据;64代表64位数据。
第11位——连线“-”。
第14、15位——芯片的速率,如60为6ns;70为7ns;7b为7.5ns(cl=3);7c为7.5ns(cl=2);80为8ns;10为10ns(66mhz)。
知道了内存颗粒编码主要数位的含义,拿到一个内存条后就非常容易计算出它的容量。
例如一条三星ddr内存,使用18片samsungk4h280838b-tcb0颗粒封装。
颗粒编号第4、5位“28”代表该颗粒是128mbits,第6、7位“08”代表该颗粒是8位数据带宽,这样我们可以计算出该内存条的容量是128mbits(兆数位)×16片/8bits=256mb(兆字节)。
注:“bit”为“数位”,“b”即字节“byte”,一个字节为8位则计算时除以8。
关于内存容量的计算,文中所举的例子中有两种情况:一种是非ecc内存,每8片8位数据宽度的颗粒就可以组成一条内存;另一种ecc内存,在每64位数据之后,还增加了8位的ecc校验码。
通过校验码,可以检测出内存数据中的两位错误,纠正一位错误。
所以在实际计算容量的过程中,不计算校验位,具有ecc功能的18片颗粒的内存条实际容量按16乘。
在购买时也可以据此判定18片或者9片内存颗粒贴片的内存条是ecc内存。
MTK内存配置详细说明

#define NOR_BOOTING_NOR_FS_BASE_ADDRESS
0xdc0000
#define NOR_BOOTING_NOR_FS_SIZE
0x240000
但是修改为以下的配置,则无法开机,只显示了 bootloader 画面,然后就死机了:
#define NOR_BOOTING_NOR_FS_BASE_ADDRESS
文件系统分配参考 ckSysDrv.log 文件:
===========================================================
FS Total Size
2097152
FS First Drive Size
363520
FS Overhead for (MBR + PBR + Root Dir)
Memory Configuration
Wanghzh 2010.03.29
1. NOR Flash
NOR Flash 的 ROM 和 RAM 都较小,要节省 RAM 只能是去掉不必要的功能或减少存储 PB/SMS 等的条数,或者优化应用占用的 RAM 空间。ROM 除了优化和节省代码和资源空 间,还可以通过调整代码区和文件系统区的大小来获得更多的代码区或用户空间。
注意:由于目前 make file 中都设置了 SYSGEN_ENABLE=TRUE,表示 scatter file 每次 new 编译时都会自动生成。在 10A 之前的版本,mcpgen.bat 中不需要执行 make sysgen 命令 scatter file 就会自动更新,但是 10A 版本则必须要执行 make sysgen 命令,否则 scatter file 无法根 据 custom_MemoryDevice.h 中修改的配置进行更新。
终极内存技术指南—专家级

高手进阶,终极内存技术指南——完整/进阶版作为电脑中必不可少的三大件之一(其余的两个是主板与CPU),内存是决定系统性能的关键设备之一,它就像一个临时的仓库,负责数据的中转、暂存……不过,虽然内存对系统性能的至关重要,但长期以来,DIYer并不重视内存,只是将它看作是一种买主板和CPU时顺带买的“附件”,那时最多也就注意一下内存的速度。
这种现象截止于1998年440BX主板上市后,PC66/100的内存标准开始进入普通DIYer的视野,因为这与选购有着直接的联系。
一时间,有关内存时序参数的介绍文章大量出现(其中最为著名的恐怕就是CL参数)。
自那以后,DIYer才发现,原来内存也有这么多的学问。
接下来,始于 2000年底/2001年初的VIA芯片组4路交错(4-Way Interleave)内存控制和部分芯片组有关内存容量限制的研究,则是深入了解内存的一个新开端。
本刊在2001年第2期上也进行了VIA内存交错控制与内存与模组结构的详细介绍,并最终率先正确地解释了这一类型交错(内存交错有多种类型)的原理与容量限制的原因。
从那时起,很多关于内存方面的深入性文章接踵而至,如果说那时因此而掀起了一股内存热并不夸张。
大量的内存文章让更多的用户了解了内存,以及更深一层的知识,这对于DIY当然是一件好事情。
然而,令人遗憾的是这些所谓的内存高深技术文章有不少都是错的(包括后来的DDR与RDRAM内存的介绍),有的甚至是很低级的错误。
在这近两年的时间里,国内媒体上优秀的内存技术文章可谓是寥若晨星,有些媒体还编译国外DIY网站的大篇内存文章,但可惜的是,外国网站也不见得都是对的(这一点,似乎国内很多作者与媒体似乎都忽视了)。
就这样,虽然打开了一个新的知识领域,可“普及”的效果并不那么好,很多媒体的铁杆读者高兴地被带入内存深层世界,但也因此被引向了新的误区。
不过,从这期间(2001年初至今)各媒体读者对这类文章的反映来看,喜欢内存技术的玩家大有人在且越来越多,这是各媒体“培养”的成果。
DB2的参数配置说明

DB2的参数配置说明DB2是一种关系型数据库管理系统(RDBMS),它支持在各种计算环境中存储、操作和检索数据。
在使用DB2时,通过合理的参数配置可以提高数据库的性能和可靠性。
以下是关于DB2参数配置的详细说明。
1.内存参数配置:1.1DB2_MEM_PERCENT:指定了DB2实例可使用的内存百分比,默认值为100。
可以根据实际情况调整此参数,以确保系统有足够的内存资源运行DB21.2DB2_MAX_IOSERVERS:指定了DB2实例可以使用的最大IO服务器数目,默认值为10。
可以根据服务器的硬件配置和负载情况调整此参数,以获得更好的IO性能。
1.3DB2_MAX_MEMORY:指定了DB2实例可以使用的最大内存量,默认为系统可用内存的一半。
可以根据系统的内存情况和负载调整此参数,以提高数据库的性能。
2.查询优化参数配置:2.1DB2_PARALLEL_IO:指定是否允许并行IO,默认为OFF。
可以在高负载环境下启用此参数,以提高查询性能。
2.2DB2_PARALLELISM:指定了DB2查询的并行度,默认为1、可以根据系统的CPU核心数和负载情况调整此参数,以提高查询的并行执行能力。
2.3DB2_STMT_CONC:指定了单个DB2会话中并行执行的最大语句数目,默认为1、可以根据系统的负载情况调整此参数,以提高并行执行的效率。
3.缓存参数配置:3.1DB2_NUM_IOSERVERS:指定了DB2实例可以使用的IO服务器数目,默认为10。
可以根据服务器硬件配置和负载情况调整此参数,以提高IO性能。
3.2DB2_NUM_CHEKBUFFERS:指定了每个缓冲池中的检查缓冲区数目,默认为100。
可以根据系统的内存情况和负载调整此参数,以提高缓存的性能。
3.3DB2_LOGFILSIZ:指定了每个日志文件的大小,默认为64MB。
可以根据系统的IO性能和重做日志的生成速度调整此参数,以避免日志文件的频繁切换。
计算机小白内存基础知识扫盲

计算机小白内存基础知识扫盲对于电脑内存,可能大家都觉得内存影响不到游戏帧数,但这其实是非常片面的。
举个例子,在玩绝地求生时,按下TAB键会卡顿或者游戏忽然掉帧,那就是内存不足导致的。
下面就让小编带你去看看计算机小白内存基础知识扫盲,希望能帮助到大家!涨知识!原来内存插法也有讲究双通道内存平台主流平台一般都支持双通道内存模式,例如目前流行的AMD AM4平台和Intel LGA1151平台,这类主板一般都提供两条或四条内存插槽,玩家可以使用两条或四条内存来组建双通道系统。
当然,也可以插一条内存来组建单通道内存系统,或是三条内存组建弹性双通道系统。
如果是把内存插满,那自然就不用考虑插哪个插槽的问题,双插槽问题也不大,我们主要考虑四插槽的情况。
一般来说,玩家在插内存的时候可能会理所当然地优先选择靠近处理器的插槽,但实际上这样并不是最好的方案。
兼容性最好的插法是单条内存插第二条插槽,两条内存插第二和第四条插槽。
为什么要这样插?这是由主板上的布线设计决定的,当然,你要随便插也不是不能用,但在一些主板上就有一定几率遇到奇怪的兼容问题,例如需要开两次机才能启动、莫名重启、无法使用XMP等等。
四通道内存平台Intel和AMD的高端发烧级平台都支持四通道,例如X99、X299和X399。
这些主板根据板型大小一般会提供四条或八条内存插槽(部分只支持Core i7 7740X和Core i5 7640X的X299主板虽然提供了四条内存插槽,但只支持双通道模式)。
不过,就算是发烧级土豪玩家,也很少把8条内存插槽插满(除非有使用超大内存的特别需求),因为这样会影响内存超频的上限,一般插四条组建四通道内存就可以达到频率和通道数的最佳平衡了。
那么在八条内存插槽中插内存应该怎样插才是最佳方案呢?这类高端主板的八条内存插槽一般会分两组排列在处理器插座的两侧,总的来说就是双通道平台的插法再“镜像”一遍就可以了,下面来详细介绍一下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 在C语言代码(文本文件)形成可执行程序(二进制文件),需要经过
预处理---编译—汇编—链接。
编译过程是把C语言文本文件生成汇编程序,
汇编过程是把汇编程序形成二进制机器代码,
链接则是将各个源文件生成的二进制代码文件组合成一个文件。
2 C语言的程序经过编译--------链接后,将形成一个统一文件,它由几个部分组成。
在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域。
3 说明:C语言程序分为映像和运行时两种状态。
在编译-----链接后形成映像中,将只包含代码段(Text)、只读数据段(RO Data)和读写数据段(RW Data)。
在程序运行之前,将动态生成未初始化数据段BSS。
在程序的运行时还将动态生成堆Heap区域和栈Stack区域。
C语言在编译链接后,将生成代码段(Text)、只读数据段(RO Data)和读写数据段(RW Data)。
在运行时,除了上述三个区域外,还包括未初始化数据段BSS区域和栈Stack区域。
代码段(Text)
只读数据段(RO Data) -----const定义的变量常量
Static修饰符的变量不管在函数内部或外部全在静态区
全局变量----静态区
读写数据段(RW Data) ---已初始化的全局变量
未初始化数据段BSS ---直接定义的全局变量
堆Heap区域----malloc
栈Stack区域----主要存储以下三种:函数内部的动态变量函数参数函数返回值
int main() char *p=”tiger”,系统在栈上开辟了四个字节存储p的数值。
, tiger”在只读存储区,因此tiger”的内容不能改变,*p= tiger”,char *p = “tiger” ; 表示地址赋值。
因此,p指向了只读存储区,因此改变p指向p[1+=’l’; 的内容会引起段错误。
但是因为P在存放在栈上,因此p的数p++ ; 值是可以改变的,因此p++是正确的。
p rintf(“%s\n”,p);
}
typedef char *pStr ; ----经过编译提示错误为:error:increment of read-only variable ‘p2’ int main() 1>const使用的基本形式为const char m ; 限定m不可变
{ 2>替换const char *pm ; 限定*pm不可变,pm是可变的,因此c har string*6+ = “tiger” ;p1++是对的。
const char *p1 = string ; 3>替换const newType m;限定m不可变,所以p2是不可变的。
const pStr p2 = string ; p2++是错误的。
p1 ++ ; const (char *) pContent;//pContent是const,*pContent是可变
p2 ++ ;
p rintf(“p1=%s\np2=%s\n”,p1,p2);
}
问题1:
#include "stdio.h"
char *get_string_1()
{
char p[] = "hello world!";
return p;
}
char *get_string_2()
{
char *p = "hello world!";
return p;
}
int main()
{
char *p;
p = get_string_1();
printf("get_string_1:%s\n",p);
p = get_string_2();
printf("get_string_2:%s\n",p);
return 0;
}
输出:
get_string_1:(乱码或者没有输出),linux下没有任何输出
get_string_2:hello world!
为什么会这样?
问题2:char *p = "hello world!";这样写到底合不合法,实际应用中能不能这样写。
问题3:char *p = "hello world!";与char p[]="hello world!";有什么细节和操作上的差异。
/* { char p[] = "Hello world"; ...}
方式使用此静态字符串时,实际上相当于:
char p[12];
strcpy(p, "Hello world");
p[12]是在栈里临时分配的。
虽然p指向的内容是"Hello world", 但是这是复制品,不是原件。
当函数结束,char p[]就被程序回收了,所以p[]的内容就不再是"Hello world"了。
但如果以char *p="Hello world"的方式使用,p指向的是静态字符串存储的位置,也就是说指向"Hello world"的原件,当然没有问题了。
如果想坚持用char p[]而不使用char *p, 有效方法必须是:搜索
{ static char p[]="Hello world"; return p; } static char []是静态的,存储在数据区。
*/
解析:
char *p = "hello world!";与char p[] = "hello world!"; 两者都用来声明一个字符串,并将其初始化为hello world!,但是表示的意义确是大不相同。
从其声明的对象来说:
char p[] = "hello world!";用来声明一个数组p,数组大小为12字节。
char *p = "hello world!";用来声明一个指针p,指向“hello world!”字符串起始位置。
从存储位置来说:
char p[] = "hello world!";p数组作为局部变量被存储在栈区;
char *p = "hello world!"; 在这个声明中,"hello world!"被存储在静态数据区,而且是全局的,p仅仅就是个指针,指向这个区域。
不信的话你可以试试下边的代码,看是不是同一个地址:
char *p1 = "hello world!";
char *p2 = "hello world!";
printf("p1:%x\np2:%x\n",p1,p2);
从函数执行后的扫尾工作来看:
C函数执行完之后对栈区进行清除操作,对静态数据区和堆则没有,因此第一个问题也就不难解释了,get_string_1()函数执行完就释放了栈区内存,所以根本就不存在存有"hello world!"声明时的内存,也就不可能有所输出。
那么,写成char *p = "hello world!";到底合不合法呢?能不能这样写呢?
这是一个历史问题,在const关键字被引入C语言之前,这样写是合法的,而且存在了很长的一段时间,大量的代码在此期间运用了这种写法,新版C语言为了兼容,故允许这样写,但最好不要这样,因为这种写法终会被淘汰,说不定哪天你的代码用了新版的编译器,然后莫名的出了问题,要找这个BUG估计不是一件容易的事。
现在最好写成:const char *p = "hello world!";
或者
char p[] = "hello world!";
那他们在操作和细节上有什么区别呢?
区别很多,由于本人才疏学浅,只总结出以下几点,忘有知者补充:
1. char *p = "hello world!"; 可以用p++操作,sizeof(p) == 4;
2.char p[]="hello world!"; sizeof(p) == 12;。