인프런 커뮤니티 질문&답변

배재웅님의 프로필 이미지
배재웅

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s208_프로그램 카운터 레지스터

명령어 fetch 부분 질문드립니다

작성

·

207

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 제공해주신 교육 잘 듣고 있습니다. 강의 내용 중간에 궁금한 점이 생겨서 질문 남깁니다.

 

질문1.

pc를 이용해서 명령어를 fetch 할 때 처음 가져온 16bit가 thumb 명령어 일 경우 바로 실행하고 arm 명령어 일 경우 다음 16bit를 기다렸다가 실행한다고 하셨는데 강의자료에는 Cortex-M은 항상 32bit 수량을 가져온다고 되어 있습니다. 이것에 대한 명확한 설명을 좀 부탁드리겠습니다.

 

질문2.

추가로 pc가 가리키는 주소는 짝수 밖에 안나온다고 했는데 이 이유도 알고 싶습니다.

 

감사합니다.

답변 1

0

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. 배재웅님!

질문1.

pc를 이용해서 명령어를 fetch 할 때 처음 가져온 16bit가 thumb 명령어 일 경우 바로 실행하고 arm 명령어 일 경우 다음 16bit를 기다렸다가 실행한다고 하셨는데 강의자료에는 Cortex-M은 항상 32bit 수량을 가져온다고 되어 있습니다. 이것에 대한 명확한 설명을 좀 부탁드리겠습니다.

(ANS) STM32 플래시 메모리는 입출력 속도 최적화를 위하여 128bit 단위로의 액세스로 설계되어 있습니다. 한편, CORTEX-M 는 페치-디코드-실행 순환 사이클로 동작하는 구조를 갖습니다. 이때 페치 동작은 THUMB 명령이었다면 16비트, THUMB2 명령이었다면 32비트 단위로 동작하게 될 것입니다. 버스 대역폭의 효율적인 이용을 위하여 THUMB 명령어의 경우 2개 명령어 분량인 32비트를 한번에 읽어들여서 처리한다라는 말이었습니다.

질문2.

추가로 pc가 가리키는 주소는 짝수 밖에 안나온다고 했는데 이 이유도 알고 싶습니다.

(ANS) THUMB 은 16비트, THUMB2 는 32비트 구조이므로 명령어들은 항상 짝수 정렬되어 있습니다.

배재웅님의 프로필 이미지
배재웅

작성한 질문수

질문하기