关于内存

 

 脑子里一些乱七八糟的东西,不整理容易丢,更容易混淆。现在先整理一下有关内存(主要是DDR)的一些东西。

 

 

        我认识内存是从计算机开始的(也许大多数人都是这样),那是知道主办上那个树立起来的小条叫做内存,它和系统运行的快慢有着直接的关系(尤其是到了windows时代),而且价格也不菲(当时4M的内存要几百块)。时间过去了10几年,我对这个叫内存的东西已经有了很深刻的了解。就还从外观谈起吧,直接说技术我都觉得枯燥。

        内存都是一条插在上面,但是却有单排pin和双排pin的区别。最早的只有30pin每次能读写8bit或者16bit。后来有了每次读写32bit的,管脚变成了72pin(后来还有144pin)。工作电压一般为5V。这是的内存都是单排的,叫SIMM(signal inline memory module),但是却两面有金手指。其实两面的pin是联通的,实际上相当与一个。但是由于制造技术问题,这样做在当时是必要的。而且之所以叫金手指也是因为其表面为了减少接触电阻而镀了金。但是现在的金手指已经不再镀金了,取而代之的是镀锡。当然没有人叫它“锡手指”。

              

        附72pin管脚定义:

Pin

Non-Parity

Parity

Description

1

VSS

VSS

Ground

2

DQ0

DQ0

Data 0

3

DQ1

DQ1

Data 1

4

DQ2

DQ2

Data 2

5

DQ3

DQ3

Data 3

6

DQ4

DQ4

Data 4

7

DQ5

DQ5

Data 5

8

DQ6

DQ6

Data 6

9

DQ7

DQ7

Data 7

10

VCC

VCC

+5 VDC

11

PD1

PD1

Presence Detect 1

12

A0

A0

Address 0

13

A1

A1

Address 1

14

A2

A2

Address 2

15

A3

A3

Address 3

16

A4

A4

Address 4

17

A5

A5

Address 5

18

A6

A6

Address 6

19

A10

A10

Address 10

20

n/c

PQ8

Data 8 (Parity 1)

21

DQ9

DQ9

Data 9

22

DQ10

DQ10

Data 10

23

DQ11

DQ11

Data 11

24

DQ12

DQ12

Data 12

25

DQ13

DQ13

Data 13

26

DQ14

DQ14

Data 14

27

DQ15

DQ15

Data 15

28

A7

A7

Address 7

29

A11

A11

Address 11

30

VCC

VCC

+5 VDC

31

A8

A8

Address 8

32

A9

A9

Address 9

33

/RAS3

RAS3

Row Address Strobe 3

34

/RAS2

RAS2

Row Address Strobe 2

35

DQ16

DQ16

Data 16

36

n/c

PQ17

Data 17 (Parity 2)

37

DQ18

DQ18

Data 18

38

DQ19

DQ19

Data 19

39

VSS

VSS

Ground

40

/CAS0

CAS0

Column Address Strobe 0

41

/CAS2

CAS2

Column Address Strobe 2

42

/CAS3

CAS3

Column Address Strobe 3

43

/CAS1

CAS1

Column Address Strobe 1

44

/RAS0

RAS0

Row Address Strobe 0

45

/RAS1

RAS1

Row Address Strobe 1

46

A12

A12

Address 12

47

/WE

WE

Read/Write

48

A13

A13

Address 13

49

DQ20

DQ20

Data 20

50

DQ21

DQ21

Data 21

51

DQ22

DQ22

Data 22

52

DQ23

DQ23

Data 23

53

DQ24

DQ24

Data 24

54

DQ25

DQ25

Data 25

55

n/c

PQ26

Data 26 (Parity 3)

56

DQ27

DQ27

Data 27

57

DQ28

DQ28

Data 28

58

DQ29

DQ29

Data 29

59

DQ31

DQ31

Data 31

60

DQ30

DQ30

Data 30

61

VCC

VCC

+5 VDC

62

DQ32

DQ32

Data 32

63

DQ33

DQ33

Data 33

64

DQ34

DQ34

Data 34

65

n/c

PQ35

Data 35 (Parity 4)

66

PD2

PD2

Presence Detect 2

67

PD3

PD3

Presence Detect 3

68

PD4

PD4

Presence Detect 4

69

PD5

PD5

Presence Detect 1

70

PD6

PD6

Presence Detect 6

71

PD7

PD7

Presence Detect 7

72

VSS

VSS

Ground

 

 

      到了SDRAM时代,SIMM逐步被被DIMM代替。,市场上叫SDRAM内存条就是168pin的DIMM,它提供64bit数据宽度,工作电压降到了3.3v。当然现在几乎没有谁的电脑还用SDRAM(我是落后者,刚刚换掉了它)。它在外观上最显著的特点是有2个开口,防止插错方向。虽然现在在PC上少有人用,但是在很多其它系统上SDRAM还是依然存在。PC上负责CPU和内存之间联系的是北桥芯片,早期SIMM时,由于奔腾的CPU是64bit,而内存的数据线是32bit,导致至少要插2条内存才能工作。这其实不是容量问题,而是位宽问题。当然当DIMM出现后,位宽提高了,这个问题也就不存在了。但是当我们从内存颗粒来看这64bit数据宽度时,我们发现不是每个颗粒都能达到64bit,所以外在的64bit其实是多个颗粒拼接出来的。那么如果要更多的内存怎么办呢?就是要组成多组这样的64bti,这就是rank,做硬件的喜欢叫作片选信号。

       下面说点稍微复杂的,毕竟我们不是简单的装电脑的,而是做硬件设计的。

        在SDRAM中,有行、列两个方向的寻址译码来让你准确的找到要访问的地址。但是过大的行、列译码却容易产生错误和降低速度。所以在SDRAM内部有了bank的概念。说的通俗一点就是一定的行×列定义成一个bank,然后将都个bank做到一片RAM里,以提高RAM容量。说的技术一点就是多了一维寻址空间。

        在做内存条的时候,通常将若干内存颗粒(8位/16位数据宽度)拼成64位数据宽度的接口,这是因为CPU是64位的。但是存储深度此时就等于内存颗粒的深度。如果想在一条内存上继续增加容量,就只能将上述的颗粒编为一组,然后增加这样的组数,这就是rank。还是可以技术一点的说:又多了一维寻址空间。

        对于 SDRAM来说,初始话是必不可少的。

      

          不过SDRAM的初始话并不复杂,只有这一个配置寄存器。具体过程如下:

            1.200us的上电延时,只是为了保证电平的稳定。

            2.所有bank预充电。

            3。8个周期的等待,等待预充电的完成

           4.配置上面那个寄存器,然后就可以用了。

 

           和普通的RAM相比,SDRAM的操作稍有一点复杂,除了读写操作之外,还有一些其它的辅助性操作。只所以说是辅助性的,就是因为RAM的本质功能是读写,做其它的事情那是情非得以。

             

 

          但是这里面有一件事情是确定的,如果从所用时钟的排数上看,SDRAM的读写要比普通RAM慢,而且使用起来还有很多复杂的额外操作(比如刷新)。这就导致如果你象用普通RAM一样用SDRAM,很可能得不到更高的速度。这就涉及到用法问题了,这是应用者最该考虑的。

 

           SDRAM说了很多,现在该看看DDR SDRAM了。DDRI的内存条,用的就是DDR SDRAM颗粒,184针的DIMM接口。从这个表述上可以看到,DDR SDRAM 的本质仍然是SDRAM,只不过前面加了一个修饰--DDR。什么是DDR,就是在一次时钟的上下双沿都工作。而这其实仅仅是接口上的革新,本质的存储单元仍然是SDRAM。这种接口的革新被叫做“预取”或者“2n预取”,其本质其实就是传-并转换。当然这对时钟的要求严格了许多,因此时钟变成的差分信号,和原来相比,时钟沿,尤其是下降沿的精度要求提高了。DLL就是应这个要求引进的。而为什么要费这么多周折来做DDR,其实就是上面将到的,SDRAM的读写速度并不尽如人意。

         DDR的出现给硬件使用者带来了更多的麻烦事,也同时给firmwire的编写者提出了更大的挑战。如果操作不得当,其效率是会让人失望的。

          由于DDR的内部结构和SDRAM基本一致,所以其初始化过程就大同小异了,只是多了DLL的初始化过程,并且多了一些配置寄存器。

         

         DDRII在原有的DDR基础上进一步做了速度上的提高,电压为1.8V, pin脚也增加到200多个,但是其逻辑本质没有什么改变。如果说DDRII的创新,那就是OCD 和ODT的概念了,这为提高速度做了最基本的保证。当然从速度上看,DDRII在内部又增加了预取,使得内部的时钟实际下降为外部时钟的一半,这样,提高外部时钟似乎就成了和RAM关系(和以往相比)不太大的事情了。

 

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值