예외 벡터 테이블.
사실 위 단어로는 이 테이블이 뭘 하는지 전혀 감을 잡지 못하겠다. 심지어 나열된 단어들 중 벡터는 왠 말인가.
벡터는 속력 + 방향? 도저히 모르겠다.
그냥 궁금해서 챗지피티한테 물어봤다.
ARM의 **익셉션 벡터 테이블(Exception Vector Table)**에서 "벡터(Vector)"라는 단어를 사용하는 이유는 프로그래밍과 컴퓨터 아키텍처에서 "벡터"가 보통 포인터 또는 방향을 가리키는 개념으로 사용되기 때문입니다.
"벡터"의 의미
- 주소로의 방향성:
"벡터"라는 단어는 수학에서 방향과 크기를 나타내는 물리적 개념에서 유래되었습니다. 컴퓨터 과학에서는 이를 특정 위치(주소)를 가리키는 참조로 확장하여 사용합니다. 익셉션 벡터 테이블은 예외 상황이 발생했을 때 실행해야 할 핸들러의 **진입점(주소)**을 가리킵니다. 즉, 벡터 테이블에 정의된 값은 어디로 점프해야 하는지를 지시하는 역할을 합니다. - 일련의 항목:
벡터 테이블은 예외 처리 핸들러의 주소가 일정한 순서로 정렬된 배열처럼 구성되어 있습니다. 이 배열 형태 때문에 테이블을 "벡터 테이블"이라고 부르며, 각 항목(벡터)은 특정 이벤트(예: Reset, IRQ 등)에 대한 처리 루틴으로의 경로를 제공합니다.
벡터라는 단어를 사용하는 이유
1. 컨텍스트를 연결하는 개념:
"벡터"는 하나의 이벤트를 처리 루틴과 연결하는 중개자 역할을 합니다. 프로세서는 특정 이벤트가 발생하면 벡터를 통해 연결된 처리 루틴으로 방향을 전환합니다. 이 과정이 "벡터링(Vectoring)"이라고 불리기도 합니다.
2. 점프와 분기의 추상화:
벡터 테이블의 각 항목은 실제로는 프로세서가 이동할 주소 또는 분기 명령어를 포함합니다. 이런 "주소로의 이동"을 벡터라는 추상적인 개념으로 표현하면 이해하기 쉽습니다.
3. 역사적 관점:
컴퓨터 공학 초기에 인터럽트 처리와 관련된 구조를 설계할 때부터 "인터럽트 벡터(Interrupt Vector)"라는 용어가 사용되었습니다. 이 전통이 ARM 아키텍처의 익셉션 벡터 테이블에도 이어졌습니다.
간단한 비유
벡터 테이블을 주소를 안내하는 표지판으로 생각할 수 있습니다.
- 예외 상황이 발생하면 프로세서는 벡터 테이블을 확인하여 "어디로 가야 할지" 결정합니다.
- 각 벡터는 특정 이벤트에 대한 "목적지(핸들러)"를 가리키는 방향 표시기 역할을 합니다.
요약
ARM의 익셉션 벡터 테이블에서 "벡터"라는 단어는 특정 예외 상황을 처리 루틴과 연결하는 포인터 또는 경로를 의미합니다. 이는 컴퓨터 아키텍처에서 전통적으로 주소 참조와 분기 과정을 "벡터링"으로 표현해온 관습에 기반을 둡니다.
명쾌하다. 특히 "간단한 비유'와 "요약' 부분이 킥이다.
결국 익셉션 벡터는 예외상황이 발생했을 경우, 어떻게 처리하라고 방향을 제시하는 것이고, 이 방향을 제시한다는건 너무 추상적이니깐 다시 말하면, 결국 포인터인 것이다. 그래서 익셉션 벡터 테이블은 예외상황 처리 테이블, 이렇게 간단하게 정의할 수 있을 것 같다.
'ARM' 카테고리의 다른 글
[STM32] Boot Loader + Application (0) | 2024.08.20 |
---|---|
[STM32] USB CDC Debugging (0) | 2024.08.16 |
[STM32] CubeIDE Build Analyzer 에서 메모리 사용량이 안 나올 때 (0) | 2024.07.27 |
[STM32] STM32CubeIDE 설정 (0) | 2024.07.24 |
온도센서(LM35) 를 이용한 ADC (0) | 2022.04.26 |