본문 바로가기

STUDY/이론 정리

바이트 패딩

728x90

바이트 패딩

바이트 패딩(Byte Padding)이란 클래스(구조체)에 바이트를 추가해 CPU 접근에 부하를 덜어주는 기법

 

32 Bit PC에서...

: 32 bit PC는 메모리에서 4byte(32bit) 씩 가져와서 연산을 한다.

>> 32bit 단위 패딩이 되어있는게 가장 유리하다.

 

왜?

예를 들어 

class A

{
       int a;

       bool b;

       int c;

}

라고 되어있을 때, bool 형인 b를 읽고 c를 읽으려면 다음 4바이트를 또 읽어야 한다. <위 그림 참조>

>>  CPU가 두번이나 메모리를 갔다 와야 함 ( 되도록 캐시에서만 처리하는게 퍼포먼스가 좋다. < 이전글 참조 > )

극한의 퍼포먼스를 위해선 Padding을 해야 한다.

 

+)

Class A {

4byte

4byte

4byte

1byte

1byre

}; 

위 처럼 4바이트 정렬을 하는게 더욱 좋다.

 

++)

bool -> 1바이트 필요없지않음? 1비트면 충분하잖아 ( 0,1 만 있으면 되니까 )

1byte가 필요한 이유 : byte 당 메모리주소가 매겨지니까..... 버려지는 7비트가 아깝긴하다.

+ 재밌는 사실: 클래스에 불형 하나만 둬도 4바이트가 된다 : 어처피 패딩때문에

 

+++)

CPU <-> GPU 차이

 

CPU ( 32bit 환경에선 ) 4byte

:종합적으로 뭔가를 처리하기위해 만들어지기 위해 나옴 , 복잡한계산( 캐시가 그만큼 크다.)

16byte 패딩 ? 상수버퍼에서

GPU : 단순계산을 빠르게 한꺼번에 처리하기위해 태어난 구조.

목적성이 나와있음 Graphic 처리.

 

 

결과적으로

바이트 패딩을 하면 메모리적으로 낭비를 할 수도 있지만, 이해 하고 사용하면 성능 향상에 도움이 된다.

 

728x90

'STUDY > 이론 정리' 카테고리의 다른 글

이동생성자, RValue 레퍼런스  (0) 2022.06.08
LValue? Rvalue?  (0) 2022.06.08
캐시 미스  (0) 2022.06.04
배열 , 연결리스트 ?  (0) 2022.06.03
CPU, 랜덤 엑세스, 메모리 구조란?  (0) 2022.06.03