본문 바로가기
728x90

전체 글216

[컴퓨터 구조] ISA, CISC, RISC ■ ISACPU는 제조사마다 생김새, 연산 및 주소 지정 방식에 차이가 있다.이러한 CPU가 이해할 수 있는 명령어들의 모음을 '명령어 집합(Instruction Set)' 또는 '명령어 집합 구조(ISA; Instructio Set Architecture)'라고 부른다. 즉 CPU마다 각기 다른 ISA를 가질 수 있다. 예로 인텔이나 AMD의 x86, x86-64의 ISA와 애플의 ARM ISA는 서로 다른 ISA이기 때문에 별도의 작업 없이 인텔의 CPU에서 빌드한 실행 파일을 그대로 아이폰에 옮겨 실행하면 바로 실행이 안된다. 왜냐하면 실행 파일(exe)은 명령어로 이루어져 있고, CPU마다 이해할 수 있는 명령어가 다르기 때문이다. 예시로 동일한 C++ 코드를 gcc 14.2라는 동일한 컴파일러를.. 2024. 10. 6.
[컴퓨터 구조] 명령어 병렬 처리기법 (ILP) ■ 명령어 병렬 처리 기법 (ILP; Instruction-Level Paallelism)좋은 성능의 CPU 제작을 위해 높은 클럭 속도, 멀티 코어, 멀티 스레드를 지원하는 CPU를 만드는 것도 중요하다. 하지만, 코어와 하드웨어 스레드 개수에 상관없이 효율적으로 CPU 자원을 사용하기 위해서는 명령어 병렬처리 기법이 필요하다. 대표적인 종류는 (1) 명령어 파이프라인(2) 슈퍼스칼라(3) 비순차적 명령어 처리 위 세 가지가 있다.  ■ 명령어 파이프라인명령어 처리 과정은 크게 '인출', '해석', '실행', '메모리 접근', '결과 저장' 의 여러 단계를 순서대로 진행된다.처리 단계가 겹치지만 않다면 CPU는 각 단계를 동시에 [클럭 한 번에] 실행할 수 있다. 그렇기에 여러 개의 명령어를 단계가 겹.. 2024. 10. 6.
[컴퓨터 구조] 명령어 사이클, 인터럽트 ■ 명령어 사이클 (Instruction Cycle)우리가 실행하고 있는 프로세스는 수 많은 명령어로 구성이 되어있다.CPU는 이 명령어를 하나씩 실행하게 되고, 각각의 명령어들은 일정한 주기로 반복되며 실행되어진다.이렇게 하나의 명령어를 처리하는 정형화된 주기를 명령어 사이클이라고 한다. [단계]일단 아래와 같이 크게 두 가지의 사이클이 반복된다. (1) 인출 사이클 (Fetch Cycle)아래 레지스터(Register) 관련 포스팅에서 메모리로부터 명령어를 CPU 내 IR(Instruction Register)로 갖고 오는 단계까지가 인출 사이클의 과정이다. 이와 같이 메모리로부터 실행해야할 명령어를 CPU로 가져오는 단계를 '인출 사이클'이라고 한다.https://yjhdevelopdiary.tis.. 2024. 10. 2.
[Unity] 메모리 최적화를 위한 에셋 관리 [영상]https://www.youtube.com/watch?v=52ehLUfk3DQ&list=PL7g8Lh8G4gEfPhXO06haByx6KNzCrEoXR&index=10 [정리] [1. 오디오] - 모바일 같은 경우 Force To Mono를 활성화하는 것을 권장. 왼쪽 오른쪽 구분해서 사운드를 듣는 경우는 별로 없으니 - Decompress On Load는 말 그대로 메모리이 올려놓는거니 권장하지 않음. 짧은 사운드( - Compression Format은 엄청 짧으면 ADCPM을 그 외 웬만하면 Vorbis 권장. IOS는 MP3를 하드웨어 레벨에서 디코딩하는데 유니티 자체에서는 하드웨어 레벨에서 디코딩 하지않기 때문에 IOS의 이점을 이용할 수 없음. - Mute인 상태에서도 메모리에 올라가있음.. 2024. 9. 29.
공부해야 할 강의 목록 (대학 공개 강의) 보호되어 있는 글 입니다. 2024. 9. 18.
[Unity] UGUI 성능 최적화 [영상]https://www.youtube.com/watch?v=1e2mSCS7o1A&lc=UgwtRZ7Kxx1CZQRd9lV4AaABAg [공부를 위해 정리한 것 기록]1. 캔버스 하나에 여러 UI를 한 번에 묶는 것보다, 자식 캔버스(Nested Canvas)를 두는 것을 권장. 이유는, 부모 Canvas에 수정 사항이 발생하지 않는 이상, 자식 Canvas의 UI가 Dirty 될 때 해당 Canvas만 갱신시킨다. 만약 한 캔버스 안에 모두 담아둔다면 자식 중 하나만 변경되어도 모든 자식들을 갱신하는 비용이 있다. 그렇다고 모든 자식들이 캔버스를 갖고있는 것은 비추천. 무거울수 있기 때문. UI 최적화는 케바케가 심하므로 완벽한 정답이 없으니 상황에 맞게 사용하길 권장 (etc: 동적인 객체, 정적.. 2024. 9. 17.
[컴퓨터 구조] 레지스터 (Register) ■ 레지스터레지스터는 CPU 내부의 작은 임시저장장치이다.프로그램 속 명령어 & 데이터는 실행 전후로 반드시 관련 값들이 레지스터에 저장됨. 그렇기에 레지스터 값만 잘 관찰해도 프로그램의 실행 흐름을 잘 파악할 수 있다.(보통, 깊숙한 곳까지 봐야하는, 로우레벨 개발자분들이 많이 관찰하신다고 함)* 레지스터에는 다양한 종류가 있으며, 각각의 역할이 다르다. [반드시 알아야할 레지스터 종류] 1. 프로그램 카운터 (PC) 2. 명령어 레지스터 3. 메모리 주소 레지스터 4. 메모리 버퍼 레지스터 5. 플래그 레지스터 6. 범용 레지스터 7. 스택 포인터 8. 베이스 레지스터  * CPU 종류마다 레지스터 종류 및 네이밍이 다를 수 있음  ■ 프로그램 카운터 (PC; Program Counter)· 메모리에.. 2024. 9. 17.
[컴퓨터 구조] 명령어, 주소 지정 방식 ■ 명령어 구조명령어는 '무엇을 대상'으로 '어떤 작동'을 해야하는 지에 관한 데이터들이 내포되어 있다.이를 아래와 같이 표현할 수 있다.위 예시에서 노란색 배경은 '더해라'의 동작을 담고 있다. 이러한 동작을 담고있는 영역을 '연산 코드 (Operation Code)'라고 칭하고 하얀색 배경에는 피연산자의 데이터가 들어가있다. 이와 같이 연산에 사용되어지는 데이터 혹은 데이터가 존재하는 주소값을 저장하고 있는 영역을 '오퍼랜드 (Operand)'라고 한다. ※ 즉, 명령어는 아래와 같이 '연산 코드'와 '오퍼랜드 필드'로 구성 되어진다. 오퍼랜드 필드는 '연산에 사용될 데이터' 혹은 '그 데이터가 저장된 위치'를 의미한다고 했다. 다만, 오퍼랜드 필드에는 데이터가 직접적으로 명시되기 보다는 데이터가 저.. 2024. 9. 17.
[컴퓨터 구조] ALU, 제어 장치 ■ 간단한 정의(1) ALU는 계산하는 장치 (2) 제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치 * 이전에 정보처리 기능사를 공부하면서 정리했었던 '명령어 처리 과정' 글에 덧붙이는 포스팅임.https://yjhdevelopdiary.tistory.com/123  [컴퓨터] 명령어 처리 과정■ 명령어 처리 [명령어실행 순서] 1. 프로그램 카운터(PC)에 저장된 주소(값)를 메모리 주소 레지스터(MAR, 번지 레지스터)에 옮긴다. 2. 명령어를 주기억장치로부터 인출(Fetch) 한다. 3. 프로그램 카yjhdevelopdiary.tistory.com■ ALU  계산을 하기 위해서는 (1) 피연산자와 (2) 수행할 연산이 필요함 (1)는 레지스터로부터 불러오고 (2)는 제어장치로부터 제어 신호.. 2024. 9. 17.
728x90