CPU가 동작하는 방식은 명령어를 가져와서(Fetch) 해독(Decode)을 하고 실행(Execute)하는 방식입니다.
Fetch -> Decode -> Execute
ARM의 경우 5단 6단계를 거치긴 하지만 큰틀은 변하지 않습니다.
제일처음 하는것이 명령어를 가져오는 Fetch 입니다. 명령어의 경우 32bit 또는 16bit로 구성되죠
Random Access가 가능한 RAM이나 NOR Flash의 경우 번지를 지정해서 32bit 또는 16bit Data를 가져올 수 있습니다.
하지만 NAND의 경우는 조금 다릅니다.
먼저 NAND FLASH에 관한 지식이 조금 필요합니다.
NAND는 Random Access가 안되는 메모리구조입니다.
512/2K/4K Byte가 한개의 Page로 구성이 되고 이 Page가 32/64 개가 모이면 1개의 Block이 됩니다.
1Page 단위로 읽고 쓸수 있으며 1Block 단위로 Erase가 가능합니다. 한번쓴 Page는 다시 쓸수 없고
Erase(1 Block)를 해야만 다시 사용할 수 있게됩니다.
LCD의 불량 화소 처럼 오류가 발생한 Block(이름하여 Bad block)은 사용하지 못하며 공장에서 일정한 개수 이하의 Bad block은
정상품으로 처리 합니다. SSD의 경우 뽑기를 잘하셔야 하겠네요
CPU가 동작하려면 32bit또는 16bit Data가 필요한데 NAND에서 읽을수 있는것은 기본적으로 1Page씩 읽기 때문에
동작을 할 수 없습니다. 결국은 NAND에 있는 Data를 Random Access 할 수 있는 SDRAM으로 복사를 해야 동작하게됩니다.그래서 Nand Boot를 지원하는 CPU가 별도로 있으며 이경우 CPU가 제일 처음 하는 동작은 Nand의 제일처음 Block을 읽어 CPU 내부 RAM에 Loading하는 것입니다. 제일처음 읽어진 프로그램을 Bootload라고 하는데 이것은 NAND에 있는 실제 프로그램을 Loading하기 위한 프로그램입니다.
NOR Flash의 경우 Random Access가 가능하기 때문에 Flash에서 바로 Code를 실행 하지만
NAND Boot의 경우 동작하기 위한 Code를 모두 SDRAM에다 올려야만 실행 됩니다.
'Microprocessor' 카테고리의 다른 글
Static RAM & Dynamic RAM (0) | 2023.05.31 |
---|---|
Vector Table & Exception (0) | 2023.05.31 |
Scatter loading & ROM Binary (0) | 2023.05.31 |
EBI & CS (0) | 2023.05.31 |
Address Map vs Memory Map (0) | 2023.05.30 |