고현우
개발 일지
고현우
전체 방문자
오늘
어제
  • 분류 전체보기 (14)
    • Unity (7)
      • 작업 (1)
      • 지식 (6)
    • DirectX (0)
      • 작업 (0)
      • 지식 (0)
    • C# (3)
      • 디자인 패턴 (0)
      • 알고리즘 (1)
      • 자료구조 (0)
      • 지식 (2)
    • C++ (0)
      • 디자인 패턴 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 지식 (0)
    • 필수 지식 (4)
      • 물리 (0)
      • 선형대수학 (0)
      • 셰이더 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스크린좌표
  • 버텍스 셰이더
  • 메모리 계층
  • 그래픽스API
  • 셰이더
  • 비동기
  • 로컬좌표
  • 월드좌표
  • 뷰포트좌표
  • 렌더링파이프라인
  • Z-Up
  • RenderingPipeline
  • Unity
  • Y-Up
  • VertexShader
  • .NET
  • 선형 탐색 알고리즘
  • 래스터라이저
  • Shader
  • 프래그먼트셰이더

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
고현우

개발 일지

메모리 계층, 영역 에 대해 알아보자
필수 지식

메모리 계층, 영역 에 대해 알아보자

2022. 2. 23. 15:06

메모리 계층

 

오늘은 메모리 계층 구조와 메모리 영역에 대해

간단히 알아보고자 한다

 

우선 메모리 계층 구조(Memory hierarchy)란 메모리를 필요에 따라 여러 가지

종류로 나누어둠을 의미한다. 이때 필요한 대부분의 경우 CPU가 메모리에

더 빨리 접근하기 위함이다.라고 서술되어 있다.

 

 

일반적으로 위의 사진과 같이 나타내는데

위의 레지스터와 캐시 부분은 CPU 내부에 존재하고

 

나머지 메모리와 하드디스크 같은 경우는 CPU외부에 존재하게 된다

따라서 상대적으로 메모리, 하드디스크는 캐시와 레지스터 보다

느리게 접근할 수밖에 없다.

 

하드디스크의 경우는 직접 접근할 방법조차 없기 때문에

메모리를 통해 접근해야 한다.

 

 

그리고 위 사진에서도 알 수 있듯이 레지스터 부분으로

올라갈수록 속도도 높아지며, 용량은 작아지는 상태를

볼 수 있다.

 

그리고 레지스터와 메인 메모리 사이에 캐시들이 존재하는 것을

볼 수 있는데, 이 것은 기존 메모리에서 레지스터로 데이터를 바로

가져올 때, CPU의 데이터 요청 속도가 메인 메모리의 데이터 요청

속도에 비해 빨라지며, 이러한 성능 차이를 보간하기 위해

생기게 된 것이 바로 캐시 메모리라고 할 수 있다.

 


메모리 영역

 

프로그램을 실행하기 위해서는 먼저 프로그램이 메모리에

로드되어야 하는데, 이러한 동작을 실행시키기 위해

다양한 메모리 공간을 컴퓨터에서는 제공을 하고 있다.

 

크게 나눠 4가지로

 

1. 코드(code) 영역

2. 데이터(data) 영역

3. 스택(stack) 영역

4. 힙(heap) 영역

 

등이 있다

 

 

그림으로 표현하자면 이런 식으로 된다.

 

그림에서도 알 수 있듯이 코드 영역은 실행할 프로그램의 코드가

저장되는 영역으로 텍스트 영역이라고 부르기도 한다.

이렇게 CPU에서는 저장된 명령어를 하나씩 가져가 처리하게 된다.

 

두 번째로 데이터 영역은 전역 변수와 정적 변수 등이 저장 되게 되며

이는 프로그램 시작과 동시에 할당되고 프로그램이 완전히 종료되기

직전까지 데이터 상으로 존재하게 된다.

 

힙 영역은 프로그래머가 동적으로 생성한 메모리들이 직접 저장되며

언어에 따라 다르지만 메모리를 프로그래머가 직접 해제하거나

가비지 컬렉터가 자동으로 메모리 수거를 하는 경우도 있다.

 

마지막으로 스택 영역은 간단히 생각해서 함수를 호출할 때마다

그 호출된 함수와 관련된 매개변수, 반환 값, 지역 변수 등 호출

정보가 하나의 스택 프레임으로 묶여 쌓인다고 생각하면 된다.

이렇게 스택 프레임이 일정 이상 사라지지 않고 계속 쌓이게

된다면, 스택 오버플로우(StackOverflow)라는 현상에 의해

프로그램이 강제 종료되기도 한다, 특히 이 문제는 재귀 함수를

구현하면서 많이 발생하는 문제이기에 많은 주의가 필요하다.

 


레퍼런스 사이트

 

http://www.tcpschool.com/c/c_memory_structure

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://constructor.tistory.com/18

 

시스템 메모리 계층 구조

컴퓨터에는 CPU에 레지스터, 캐시 와 메인메모리 (RAM) 그리고 하드디스크 등 다양한 메모리가 있습니다.  위 그림에서 볼 수 있듯이 메모리 계층 구조에서 위로 올라갈수록 속도는 빠르지만, 용

constructor.tistory.com

저작자표시 (새창열림)
    고현우
    고현우
    Unity / DirectX 게임 개발

    티스토리툴바