본문 바로가기
Embedded System/Embedded Recipes

1.15 Memory의 선정과 XIP

by 리미와감자 2022. 8. 10.

1.15 Memory의 선정과 XIP

 

  메모리는 임베디드시스템에서 시스템을 구성과 퍼포먼스에 가잔 큰 영향력을 행사하기 때문에 메모리 선정을 잘 하는 것은 매우 중요하다.

 

  • Memory 종류

1. RAM

- 휘발성 : 전원이 나가면 데이터가 사라짐

 

※ XIP(Execute In Place)

  메모리 상에서 직접 program/ code를 실행할 수 있는 기술을 말하며, 이 기술을 위해서는 Random Access가 가능해야 한다. 모든 RAM은 Random Access가 가능한데, 이름부터 Random Access Memory(RAM)이다. 여기서 Random Access란 Byte/ Word/ 등의 크기를 직접 Access하는 것을 의미한다.

 

  • SRAM(Static RAM)

  Static RAM으로 가장 비싼 Memory이다. 전기적인 control없이 Random Access가 가능하다.

 

  • DRAM(Dynamic RAM)

  Dynamic RAM으로 가장 싼 Memory이다. DRAM은 1개의 트랜지스터(MOSFET)와 1개의 커패시터로 이루어지는데, 1비트를 읽고 쓰기위해서 커패시터를 사용한다. 커패시터를 사용하면 문제점이, 저장된 전하가 계속 빠져나간다(Discharnge). 그래서 DRAM은 일정 시간마다 Refresh라는 기술을 사용해 전하를 충전시켜야한다(Charge). Refresh를 하기 위한 부가적인 precharge circuit이 필요하게 된다. 그러나, SRAM에 비해 회로가 단순하고 집적도가 높다는 장점이 있다.

 

  • PSRAM(Pseudo SRAM)

  가짜 SRAM을 일컬으며, DRAM과 SRAM을 장점을 가져와 만든 것이다. prehcarge해주는 회로가 DRAM에 포함되어 나와서 따로 control할 필요가 없는 DRAM이다.

 

가격은 SRAM > PSRAM > DRAM이다.

 

  • SDRAM(Synchronous DRAM)

  동기식 DRAM을 의미하며, System Bus가 CPU 동작에 맞추어 동작하는 메모리이다. CPU 입장에서는 최대 성능을 낼 수 있는 메모리이다.

 

  • DDR SDRAM(Double Data Rate SDRAM)

  System Bus의 Clock의 Rising Edge와 Falling Edge에서 모두 동작할 수 있어서, Data가 두 배로 빨리 전송할 수 있는 메모리이다. 요즘 가장 최신 메모리로 DDR5가 있는데, 삼성과 하이닉스가 만들고 있죠.

 

 


 

 

2. ROM(Flash Memory)

- 비휘발성 : 전원이 나가도 데이터가 남아있음

 

  특별한 control 과정만 거치면 Flash Memory에 읽고 쓰는 것이 가능하다. Upgrade에도 유리하고, 지울 수 있는 기능 덕분에 File System Storage로 주로 사용된다.

 

  • NOR Flash Memory

  Cell이 병렬로 연결되어 있어서 Address Line과 Data Line을 모두 가질 수 있다. 즉, RAM처럼 Byte 단위로 Random Access가 가능하다. Random Access가 가능하기 때문에, NOR Flash는 XIP을 지원해서 메모리 상에서 Software를 직접 실행할 수 있다.

 

  • NAND Flash Memory

  Cell이 직렬로 연결되어 있어서 작은 단위로 읽을 수 없다. 즉, 한번 접근(읽을)할 때, 1 Page 단위로 접근(읽을)할 수 있다. Small Page를 지원하는 NAND는 512 Byte 크기로만 읽을 수 있고, Large Page를 지원하는 NAND는 2KB씩 한번에 읽을 수 있다.

 

 

 

  NOR는 쓰기와 지우기는 느리지만 읽기가 빠르고, 대용량 데이터를 저장하는 데는 무리가 있다. NAND는 읽기는 느리지만 쓰기와 지우기가 빠르고, 대용량 데이터를 저장할 수 있다.

 

 

  예전에는 NOR와 PSRAM 구성을 사용하여 NOR에 코드를 넣고 PSRAM에 Data를 넣는 형식으로 사용했다. 하지만, 요즘은 대형화 추세에 따라 NAND에 코드를 저장하고, 코드를 SDRAM에 복사하여 RAM에서 직접 XIP를 하는 형식으로 발전했다.

 


 

  NAND와 NOR는 Block 단위로만 지울 수 있다. NAND는 32개, 64개 page로 구성되고, NOR는 128KB Block 단위를 갖는다. Erase할 경우 사실 지우는 것이 아닌 Charging을 하는 경우라서 Block은 모두 1로 채워져서 16진수로 보면 0xFF가 된다.

 

※ Flash와 부트로더

  NOR의 경우 코드를 메모리 상에서 실행할 수 있기때문에 부트로더가 따로 필요없다. 하지만 NAND의 경우 메모리 상에서 코드를 실행할 수 없어서, 즉 XIP이 지원되지 않기 때문에 부트로더가 반드시 필요하다. 

 

  타겟보드의 Power가 On이 되면 Flash 타입이 NAND인지 NOR인지 확인한다. NOR인 경우, 메모리 상에서 그대로 읽으면 된다. 하지만, NAND의 경우 메모리 상에서 바로 읽을 수 없기때문에 NAND의 첫 번째 블럭에 있는 부트로더를 CPU 내에 있는 Internal RAM으로 복사를 한다(그래서 부트로더의 크기는 Internal RAM보다 클 수 없다). Internal RAM에 올라간 부트로더는 NAND 두 번째 블럭 이후에 들어있는 프로그램 코드를 SDRAM으로 모두 복사를 한다. 그 이후, 부트로더는 SDRAM의 시작 주소로 Jump하고, CPU는 SDRAM으로 복사된 코드를 실행하기 시작한다.

 


 

아래 주소에서 더 자세하게 확인할 수 있습니다.

http://recipes.egloos.com/4980549

 

Memory의 선정과 XIP

Embedded System에서 Memory의 선정은 기본적인 System 구성과 Performance에 가장 큰 영향력을 행사합니다. 또한 Memory 종류의 선정을 어떻게 했느냐에 따라 Memory Map을 어떻게 구성할 것이냐의 Design Gudie가

recipes.egloos.com

 

댓글