EP.1-6 메모리 구조

EP.1-6 메모리 구조: 전하의 대기실 | 제어 엔지니어 구조 분석

Phase 1: Hardware-Software Interface

EP.1-6 메모리 구조 — 전하의 대기실

설계도가 실제 물리적 접점으로 배선되는 시퀀스

1. 질문: 왜 메모리는 구역을 나누는가?

제어반을 설계할 때 Bit 레지스터 영역과 Word 레지스터 영역을 엄격히 구분하고, 파라미터 설정을 통해 전원 차단 시에도 데이터를 유지할 구역을 지정하는 이유와 같습니다. 용도에 따라 구역을 나누지 않으면 데이터 신호가 뒤엉켜 시스템이 셧다운(Crash)됩니다.

2. 코드가 메모리로 흩어지는 물리적 원리

아래의 C언어 코드가 메모리 각 구역으로 어떻게 배선되는지 대조해 보겠습니다.

// (1) 유지 레지스터 (Data 영역)
int Global_Val = 10;

void main() {
    // (2) 임시 래치 (Stack 영역)
    int Local_Val = 5;

    // (3) 비교 연산 회로 가동 (Code 영역)
    if(Local_Val > 0) {
        Global_Val = 20;
    }
}
1
전역 변수(Global) = 유지 접점: 함수 밖(헤더 아래)에 선언한 변수는 프로그램 시작부터 끝까지 전압을 유지하는 데이터 영역에 자리를 잡습니다. 어떤 서브루틴에서도 접근 가능한 공용 디바이스입니다.
2
지역 변수(Local) = 임시 래치: 함수 내부 { } 에 선언된 변수는 스택 영역을 사용합니다. 함수가 실행될 때만 잠깐 전기가 통하고, 함수가 끝나면(RET) 즉시 리셋되는 휘발성 접점입니다.
3
로직(if, for) = 물리 배선: 변수는 '그릇(데이터)'이지만, 로직은 코드 영역에 구워진 '배선' 그 자체입니다. CPU가 이 배선을 읽어 실제 RAM 접점의 스위치를 열고 닫습니다.

3. 함수 호출: 서브루틴 점프와 스택

우리가 Motor_Control(); 처럼 함수를 호출한다는 것은 PLC에서 CALL 명령으로 특정 서브루틴 주소로 점프하는 것과 같습니다.

void Motor_Control() { // [점프 후] 작업대(Stack) 가동 시작!
    int speed = 100;
} // [복귀] RET 신호: 작업대 Reset(Pop)

void main() {
    Motor_Control(); // [CALL] 복귀 주소 '포스트잇' 기록 후 점프
    int next_step = 1;
}
1
점프와 복귀: C언어의 { }는 단순한 괄호가 아니라, CPU에게 "여기서부터 작업대(Stack)를 쓰고, 여기서 리셋(RET)해라"라는 물리적 명령입니다.
2
포스트잇(Return Address): PLC는 하드웨어가 자동으로 처리해주지만, PC 환경은 이 복귀 주소마저도 스택이라는 공용 메모리를 같이 씁니다. 그래서 함수가 겹치면 관리가 매우 중요해집니다.
3
지역 변수의 휘발성: 서브루틴이 끝나면 speed 접점의 전기가 끊기는 이유는 스택 작업대의 Reset(Pop) 과정 때문입니다. 릴레이가 복구되듯 데이터가 증발하는 것입니다.
KICK POINT: 스택 오버플로우(Stack Overflow) 복귀 주소 포스트잇과 지역 변수 데이터가 작업대(Stack) 용량을 초과해 쌓이면 무너져 내립니다. 이는 PLC의 서브루틴 호출 깊이(Depth) 초과와 물리적으로 동일한 현상입니다.

4. 결론: 메모리는 논리적 격벽 시스템이다

메모리는 단순한 저장소가 아니라, Word와 Bit의 수명을 관리하는 정교한 격벽입니다. 엔지니어는 자신이 선언한 변수가 어느 구역에 전기를 흘리고 있는지, 그리고 그 전기가 언제 끊기는지 머릿속으로 그릴 수 있어야 합니다.

전하들이 머무는 장소를 알았으니, 이제 그 전하들을 담는 그릇의 크기인
EP.1-7 데이터 타입의 세계로 떠나보겠습니다.

© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"데이터의 위치를 안다는 것은 전하의 흐름을 통제한다는 뜻이다."

댓글

이 블로그의 인기 게시물

EP.0-1 천공카드

EP.1-1트랜지스터

EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?