728x90 분류 전체보기222 [Unity] 사운드 출력기기 전환에 따른 이슈. ■ 이슈1. 게임에서 세팅한 AudioMixer의 Sound 옵션 값들이 리셋 된다.2. 배경 음악이 정지된다.■ 원인Unity 자체에서 사운드 출력기기 전환 시 Audio Engine을 re-init하고 있다. 이로 인하여 Audio Settings가 바뀌게 되므로 모든 Audio State의 추적이 끊기게 되어 Audio Mixer 등 오디오 관련 데이터들이 간접적으로 영향을 받을 수 있다. 구체적인 상황을 예로 들자면 안드로이드의 기본 스피커를 사용하고 있다가, 블루투스를 연동할 경우 재현이 가능하다.■ 해결1. Audio Settings의 Sampling Rate 복구 없이 Mixer의 볼륨 값만 다시 로드하니 해결되었음.2. 추후 이슈 재현 시 모든 세팅 값[AudioSettings 클래스] 값.. 2025. 2. 1. [Unity] TMP폰트 관련 메모리 최적화 회사 프로젝트에서 다국어 작업 중 메모리 최적화를 진행한 적이 있었다.플레이 후 게임 옵션창에서 모든 언어를 한 번씩 설정을 해놓으면 폰트 관련 개체 및 아틀라스 텍스처 등이 425.4MB의 메모리를 차지하고 있었다. 여러 RnD 끝에 동일 환경에서 9.4MB까지 최적화에 성공했다.■ 기존 · Total: 425.4MB· Native Memory: 213.3 MB· GPU Memory: 212.0 MB· Managed: 108.5 KB 언어 변경 시 TMP 개체의 하위 개체로 Submesh UI개체가 생성된다. 이는 새로운 언어를 세팅한 뒤 렌더링 중인 문자가 기본 폰트에 포함되어 있지 않은 상황이라서 Fallback Font Asset들을 탐색하여 원하는 문자를 내포하고 있는 폰트 에셋의 Atlas .. 2025. 2. 1. [컴퓨터 구조] 플래시 메모리 ■ 플래시 메모리 (Flash Memory)플래시 메모리란, 전기적으로 데이터를 읽고 쓰는 반도체 기반의 저장 장치이다. 비휘발성 기억장치인 ROM에도 사용이 되고, DRAM/SRAM 등의 휘발성 장치에도 사용이 되어진다. 주로 사용되는 보조기억장치로는 HDD, SSD, USB 등이 있다. 이중에서 SSD, USB는 플래시 메모리에 속하는 저장장치이다. ▼ 출처 (PaxDisk) 플래시 메모리는 크게 NAND 메모리, NOR 메모리의 종류로 나뉜다. 이 중에서 대용량 저장장치로 주로 사용되어지는 것은, 비교적 저렴한 가격의 특징을 가진, NAND 플래시 메모리이다.■ NAND 플래시 메모리 논리적 구조플래시 메모리는 셀(Cell)을 가장 작은 단위로 사용하고 있다. 이 셀들이 모여 KB부터 TB 등의 .. 2024. 12. 1. [컴퓨터 구조] 메모리 계층 구조, 캐시 메모리 ■ 메모리 계층 구조 (Memory Hierarchy)저장 장치의 예로 레지스터, 메모리(RAM), USB 메모리가 있다. 이러한 저장 장치의 대표적인 특징 두 가지로는 첫째, CPU와 가까울 수록 저장 장치의 접근 속도는 빠르고, 멀리있을 수록 느리다.둘째, 속도가 빠른 저장 장치는 비싸고 용량이 작으며 거리가 멀어질수록 반대된다. 이러한 특징으로 인하여 컴퓨터는 여러 개의 저장 장치를 혼용해서 사용한다. 그 여러 개의 저장 장치의 계층 구조를 세 가지 특성을 기준으로 나타낸 것을 메모리 계층 구조(Memory Hierarchy)라고 한다.* 여기서 말하는 Memory 는 Ram이 아니라 저장 장치 Memory를 의미한다. ■ 캐시 메모리 (Cache Memory)CPU가 메모리에 접근하는 시간은 C.. 2024. 12. 1. [컴퓨터 구조] 메모리 주소 ■ 물리 주소 & 논리 주소(1) 물리주소 : 메모리 하드웨어가 사용하는 주소 (정보가 실제로 저장된 하드웨어상의 주소)(2) 논리주소 : CPU와 프로세스가 사용하는 주소 (프로세스 각각에 부여된 0번지 부터 시작되는 주소) * CPU와 프로세스는 현재, 물리적 주소인, 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있지 않다. 그 이유는 프로그램이 메모리에 적재될 때마다 주소가 달라지고, 다른 프로그램이 실행되거나 삭제될 때마다 모든 주소가 달라지기 때문이다. 이런 상황에서 현재 프로세스와 CPU가 특정 메모리 주소에 접근할 때 어떻게 동작할까? 먼저 CPU가 이해하는 주소는 논리주소이기 때문에 메모리와 상호작용을 하려면 논리주소와 물리주소 간의 변환이 이루어져야 한다. 서로 다른 주소 체계를 .. 2024. 12. 1. [컴퓨터 구조] RAM ■ RAM의 종류1. DRAM (Dynamic Ram)저장된 데이터가 주기적으로 소멸되는 RAM이다. 이를 방지하기 위해 주기적으로 데이터를 재활성화해야 하는 단점이 존재한다. 하지만, 그럼에도 불구하고 우리가 일반적으로 사용하는 메모리는 DRAM이다. 이는 경제적인 이유에서 오는데소비 전력이 낮고 저렴하면서 집적도가 높기 때문에 대용량으로 설계하기가 용이하기 때문이다. * 집적도: 집적도란 1개의 반도체 칩에 몇 개의 소자가 들어가 있는지를 나타내는 정도이다. 즉, 집적도가 높다는 것은 소자들이 더 빽빽하게 들어갈 수 있다는 뜻. (출처: 토스) ※ 늘 그렇듯 비쌀수록 성능이 좋고 단점이 적으며, 저렴할수록 성능은 비교적 안좋고 단점이 많아진다. 2. SRAM (Static Ram)시간이 지나도 저장.. 2024. 12. 1. [컴퓨터 구조] 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. 이전 1 2 3 4 ··· 25 다음 728x90