Le SPD : Configuration des modules de mémoires
By The Mad
Sommaire:

 

Le SPD

 

III ) Le Contenu

Bon, c'est bien interresant de pouvoir modifier les octets contenus dans le SPD, mais encore faut-il savoir lesquels modifier et coment les modifier... et c'est la qu'arrive la longue liste ci-dessous qui recapitule TOUT les octets un par un, leurs significations et la facon de les modifier... Avouez que c'est du boulot :)
Je n'ai cependant abordé ici que la SDRAM, il faut savoir que le SPD est aussi present sur les modules de DDR-SDRAM ainsi que sur les modules de RAMBUS. Dans ce tableau, la valeur Std est la valeur pas defaut qui est principalement admise par defaut et qu'il ne faut EN AUCUN CAS modifier. Si cette case est écrite en rouge, la valeur peut etre modifiée

Octet

Fonction

Std

Notes

0

Nombre de bits écrit dans le SPD lors de la production du module

80h

1

1

Nombre total d'octet de l'EEPROM du SPD

08h

2

2

Type de Mémoire (FPM, EDO, SDRAM ...)

04h

3

3

Nombre de bits des "Row Address"

0Ch

X

4

Nombre de bits des "Column Address"

09h

X

5

Nombre de banques physique que contient le modules

02h

5

6-7

Taille du bus de données du module
40h

6

8

Niveau de voltage utilisé par le module

01h

7

9

Temps d'accés d'un cycle (t CLK) pour le CAS le plus elevé

75h

8

10

Temps d'accés d'un cycle (t AC) pour le CAS le plus elevé

54h

9

11

Type de controle d'erreur (Sans, Parité ou ECC)

00h

10

12

Frequence + Type de rafraichissement de la RAM

80h

11

13

Taille du bus de données d'un chip de DRAM

08h

X

14

Nombre de bit utilisé pour le controle d'erreur

00h

12

15

Description : Minimum Clock Delay for Back-to-Back Random Column Access

01h

13

16

Description : Burst Length Supporté

8Fh

14

17

Description : Nombres de banques de données logique sur le module

04h

X

18

Description : CAS Latency

06h

15

19

Description : CS Latency

01h

16

20

Description : Write Latency

01h

16

21

Parametres de Gestion du module de SDRAM ( Unbuffered, Buffered, ..etc )

00h

17

22

Parametres de Gestion du module de SDRAM (2)

0Eh

23

Temps d'accés d'un cycle (t CLK) pour le 2eme CAS

A0h

19

24

Temps d'accés d'un cycle (t AC) pour le 2eme CAS

60h

19

25

Temps d'accés d'un cycle (t CLK) pour le CAS le plus faible

00h

19

26

Temps d'accés d'un cycle (t AC) pour le CAS le plus faible

00h

19

27

Temps Minimum d'un Row Precharge (t RP )

14h

20

28

Delai Minimum de Row Active to Row Active (t RRD )

0Fh

20

29

Delai Minimum RAS to CAS (t RCD )

14h

30

Delai Minimum RAS Pulse (t RAS )

2Dh

20

31

Taille du module de RAM

10h

21

32

Address and Command Setup Time Before Clock

15h

22

33

Address and Command Hold Time After Clock

08h

22

34

Data Input Setup Time Before Clock

15h

22

35

Data Input Hold Time After Clock

08h

22

36-61

Information Complementaire (non utilisé sur la SDRAM)

00h

 

62

Revision du SPD

12h

23

63

Checksum des octets 0 à 62

XXh

24

64-71

Code JEDEC du constructeur

 

72

Lieu ou le module a été fabriqué (spécifique au constructeur)

 

73-90

Reference du Module

 

91-92

Revision du module

 

93-94

Date de fabrication du module ( format semaine/année )

 

95-98

Numero de serie du module

 

99-125

Information complementaire du fabricant

 

126 Intel spec for frequency
85h

127

Intel Specifications Details

06h

26

128-255

Libre

 

1) Cet octet représente le nombre total d'octet que le constructeur de la barette a écrit dans l'EEPROM du SPD lors de sa construction. Cette valeur est bien entendu en hexadécimal. La valeur standard dans ce cas est generalement 80h donc 128 octet

2) Cet octet represente la taille de l'EEPROM qui constitue le SPD. cette EEPROM est toujours de type 24C02 donc sa capacité est de 2048 bits ( 256 ko ). la valeur qui se trouve ici doit etre 08h ( 01h = 2 octets, 02h = 4 octets, 03h = 8 octets.....0Dh = 8192 octets)

3) Cet octet descrit le type de mémoire utilisé.

Type de mémoire
Hexa
Reservé
00
FPM
01
EDO
02
Pipelined Nibble
03
SDRAM
04
ROM
05
DDR-SGRAM
06
DDR-SDRAM
07

 

 

 

 

 

 

 

4) Bon, la franchement, ces parametres sont dépendants de l'organisation interne des modules de DRAM mais si vous voulez en savoir plus, lisez les datasheets parceque ce n'est vraiment pas facile a expliquer et de toute facon, ce parametre ne doit surtout pas etre modifié

5) Cet octet décrit le nombre de banque physique de la barette de RAM ( le nombre de banque logique se trouve a l'octet 17 ). En gros, si votre barette est simple face, cet octet est a 01h, si c'est de la double face, il est a 02h

6) Cet octet décrit la taille du bus de donnée de la mémoire, la taille du bus est quasiment toujours de 64 bits (40h), les valeurs 48h ( 72 bits ) ou 50h ( 80 bits ) peuvent etre utilisée en cas de mémoires ECC ou avec parité.

7) Cet octet represente le type de tension utilisé par le module suivant la table suivante :

Type d'interface
Hexa
TTL - 5 Volts
00h
LVTTL - 3.3 Volts
01h
HSTL - 1.5 Volts
02h
SSTL - 3.3 Volts
03h
SSTL - 2.5 Volts
04h

 

 

 

 

 

8) Cet octet décrit le temps d'accés d'un cycle au plus haut CAS Latency ( Ex : si la mémoire supporte la CAS 2 et le CAS 3, c'est le temps d'acces d'un cycle en CAS 3). La conversion est assez simple : pour A0h pour 10ns, 75h pour 7.5 ns ou 70h pour 70ns. Bien entendu, plus elle est faible, plus la mémoire est rapide

9) en anglais : "SDRAM Access time from Clock ( t AC )". Dependant du parametre ci-dessus, plus il est faible, plus la mémoire est rapide

10) Type de controle d'erreur utilisé par le module : 00h pour aucun, 01h pour Parité et 02h pour ECC

11) Cet octet indique la frequence de rafraichissement de la RAM ainsi que le type du rafraichissement ( Auto rafraichissement ou pas ). Voir le tableau ci dessous pour les valeurs :

Facteur de Rafraichissement
Frequence de rafraichissement
Hex ( SR )
Hex
Normal
15.625 us
00h
80h
Réduit 0.25x
3.9 us
01h
81h
Réduit 0.5x
7.8 us
02h
82h
Etendu 2x
31.3 us
03h
83h
Etendu 4x
62.5 us
04h
84h
Etendu 8x
125 us
05h
85h

  

 

 

 

 

12) Cet octet represente le nombre de bits utilisé pour la gestion du controle d'erreur, si celui-ci est present

13) Cet octet defini le "Minimum Clock Delay for Back-to-Back Random Column Access", parametre absolument intraduisible en francais, en gros, il est toujours au minimum, c'est a dire 1...

14) Cet octet défini le type de "burst lenght" pour la mémoire. ce pamaretres etant toujours sur sa valeur maximale, c'est a dire Burst lenght suportés = 1,2,3,4,8,page.

15)hehehe, la ca devient tres interessant, cet octet defini les CAS latency supporté par la barettes de RAM. l'octet etant composé de 8 bits, chaque bit défini si oui ou non, le CAS en question est supporté :

Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
N/A
Cas latency = 7
Cas latency = 6
Cas latency =
5
Cas latency = 4
Cas latency =
3
Cas latency = 2
Cas latency =
1
0
0
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1

Notes : une valeur de 06h ( 00000110 ) signifie que CAS 3 et CAS 2 sont supportés
une valeur de 02h ( 00000010 ) signifie uniquement CAS 2 est supporté :) Quand au CAS 1... :)))
Attention cependant, un maximum de deux parametres CAS

16 ) ces deux octets, positionné a 01h par defaut, c'est a dire latency = 0 peuvent etre augmentés pour stabiliser la mémoire. Néanmoins, ils provoqueront dans ce cas, une baisse de la rapidité de la RAM

17)Ces octets definis les parametres d'exploitation du module de mémire.

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

TBD

Redundant Addressing

Differential Clock Input

Registered DQMB Inputs

Buffered DQMB Inputs

On-Card PLL (Clock)

Registered Address and Control Inputs

Buffered Address and Control Inputs

0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

Ce parametre est surtout interessant pour les personnes qui ont de la RAM "Registered". En effet, les RAM "Registered" et "Buffered" sont exactement les memes modules, mais exploités differemment ( voir l'article sur la RAM pour plus de precision ). On peut donc, grace a ce parametre, transformer une RAM "Registered" en RAM "Buffered" qui est 5 à 10% plus rapide..

18) Cet octet contient des bits de configuration general sur le support de differents parametres par le module :

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

TBD

TBD

Upper V CC tolerance: 0=10%

1=5%

Lower V CC tolerance: 0=10%

1=5%

Supports Write/Read Burst

Supports

Precharge All

Supports

Auto-Precharge

Supports Early RAS Precharge

0

0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

1 ou 0

La valeur standard est 0Eh ( 00001110 ) donc Tolerances a 10% et support du Wrte/Read Burst, de l'Auto-Precharge et du Precharge All, mais pas du Early RAS Precharge qui permet une augmentation des performances : Pour l'activer, il faudrait passer cette valeur a 0Fh ( 00001111 )

19)Ces 4 octets sont identiques aux octets 9 et 10, mais ils correpondent aux autres CAS : je m'explique : Si une mémoire supporte le CAS 2 et le CAS 3, les parametres d'acces pour le CAS 2 se situe sur les octets 23 et 24 alors que ceux pour le CAS 3 se situent sur l'octet 9 et 10. Les octets 25 et 26 ne sont pratiquement jamais utilisé, uniquement si la mémoire supporte 3 CAS differents ( CAS 1, CAS 2 et CAS 3 par exemple )

20)quatres octets qui definissent differents des temps de reponse de la RAM, ils sont codés en hexadecimal et ils ont generalement pour valeur 14h (20 ns) , 0Fh (15 ns) et 14h (20ns). Pour le dernier, il prends la valeur 32h (50 ns) pour de la PC100 et 2Dh ( 45ns ) pour de la PC133. Pour plus d'info, consultez les Datasheets

21)Cet octet defini la taille d'une banque de mémoire : Exemple, si vous avez une barette de 128 Mo Simple-Face, il n'y a qu'une banque de 128 Mo. La valeur sera donc 20h (00100000). Si vous avez une barette de 128 Mo Double-face. Il y a deux banques de 64 Mo. La valeur devra donc etre 10h (00010000).

Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Taille
512 Mo
256 Mo
128 Mo
64 Mo
32 Mo
16 Mo
8 Mo
4 Mo
bit
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1
0 ou 1

22) Et encore des parametres qui influe sur les temps d'acces de la RAM...j'ai regroupé dans le tableau ci-dessous les valeurs standard pour de la PC100 et de la PC133

Octet
Description
PC100
PC133

32

Address and Command Setup Time Before Clock

20h ( 2.0 ns )
15h ( 1.5 ns )

33

Address and Command Hold Time After Clock

10h ( 1.0 ns )
08h ( 0.8 ns )

34

Data Input Setup Time Before Clock

20h ( 2.0 ns )
15h ( 1.5 ns )

35

Data Input Hold Time After Clock

10h ( 1.0 ns )
08h ( 0.8 ns )

23)Cet octet represente la version du SPD, on est actuellement a la version 1.2 donc 12h

24)Bon, la ca devient complexe :) le SPD inclus un checksum afin d'empecher les petits malins de modifiers les données qu'il contient. mais j'ai reussi a denicher l'algorithme du cheksum que j'explique ci-dessous :
Pour avoir un checksum valide, il faut :

  1. Convertir les octets qui se situe entre 0 et 62 en format decimal ( FF => 255 )
  2. Additionner toutes les sommes décimales
  3. Diviser le resultat obtenu par 256
  4. Convertir le RESTE de cette division en hexadecimal
  5. Placer l'octet obtenu a l'emplacement 63

25)Cette valeur est une norme definie par Intel, elle est de 66h pour de la PC66, 64h pour de la PC100 et 85h pour de la PC133 (parfois 64h comme la PC100 pour les premieres barettes PC133 )

26)Ce parametre, inclu par Intel, defini le CAS du module : 06h pour CAS 2 et 04h pour CAS 3.

IV ) Datasheets

Vous trouverez ici des datasheets detaillés sur le SPD, en anglais bien sur, mais qui peuvent vous apporter des precisions consernant cette article ainsi que des explications supplementaires :