목록프로그래밍 (Programming) (27)
Automotive Software
캐시 구조 직접 주소 매핑 (direct mapped cache) : 가장 간단한 방식으로 메인 메모리상의 주소가 하나의 캐시 블록에 매핑 전 연관 캐시 (fully associative cache) : 지정된 캐시 블록 없이 사용가능한 캐시에 동적으로 데이터 저장 집합 연관 캐시 (set associative cache) : 캐시 블록을 집합이라는 그룹으로 나누고 각 주소 영역의 하나의 집합에 매핑, 데이터는 해당 집합 내의 어느 주소에 저장 가능 예, 1블록으로 이루어진 8 세트 캐시가 있을 경우, 1 Way associative cache : direct mapped와 동일 2 - 4 way associative cache : 각각 2 블록(4 세트) / 4 블록(2세트) 8 way associat..
일반적으로 캐시는 상기 그림과 같은 단일 버스 기반의 멀티 코어(프로세서) 시스템에서 명령어 및 데이터 읽기 동작을 위해 메인 메모리 접근에 소비되는 버스의 통신량을 줄이기 위해 사용된다. 하지만, 프로세스 간 공유 메모리를 통해 IPC (Inter Processs Communicartion)을 구현하는 경우, 캐시와 메인 메모리 간 동기화 비용이 전체 시스템 성능을 영향을 끼치게 되며 또한 신뢰성 있는 IPC를 구현하는데 키 요소가 된다. 멀티 프로세스 캐시내 데이터의 일관성을 유지하기 위한 방법인 캐시 일관성 프로토콜 (Cache Coherency Protocol) 은 아래와 같은 방식이 있다. 스누핑 (Snooping) : 별도의 스누핑 제어기가 항상 캐시와 연결된 버스를 감시하여 각 프로세서 캐시..
멀티 코어 시스템에서는 한 프로세스에서 캐시를 통해 수정하는 공유 메모리의 데이터가 다른 프로세스에게도 동일하게 보이는 공유 데이터의 일관성이 중요한데, 이를 위해 ARM과 같은 최근 프로세서 구조에서는 소프트웨어의 복잡도를 줄이는 하드웨어 기반의 캐시 일관성 (Cache Coherence) 메커니즘을 제공한다. ARM의 경우, SCU (Snoop Control Unit)가 해당 기능을 위해 중심적인 역할을 하는데, 각 코어상의 캐시 움직임을 감시하고, 캐시상의 데이터가 공유 메모리상의 데이터와 일치하도록 하는 역할을 수행한다. 스누핑 : 하나의 프로세스가 메모리상의 데이터를 수정코저 할 때, 우선은 캐시상에 해당 데이터의 존재 및 일치성 여부를 확인하게 되는데, 이때 존재하지 않거나 공유 메모리상의 데..
로봇 프레임워크에서 현재까지는 파일의 존재 여부를 확인하기 위해 os 빌트인 키워드인 Should Exist를 사용할 수 있지만, 파일의 존재를 파악하여 추가적인 테스트 절차를 구현해야 하는 경우 이 키워드를 사용 시 해당 테스트를 종료하게 되므로 테스트 케이스 중간시점에 사용하기에는 적절하지 않다. 어찌 보면 간단한 방법으로 자신만의 파일 존재 확인 함수를 아래와 같이 os나 pathlib라이브러리를 이용한 파이썬으로 구현하여 로봇 프레임워크 라이브러리로 사용할 수도 있겠으나, from os.path import exists def file_exists(path_to_file): return exists(path_to_file) ################# or ################# fr..
테스트 케이스는 해당 섹션의 선언 후에 기술되는 첫 문장을 첫 테스트 케이스의 이름으로 인식하게 된다. *** Test Cases *** Hello World in ${SUITE NAME} Test Suit FOR ${index} IN RANGE 1 11 Log Hello world ${index} END 위의 예제에서와 같이 *** Test Cases *** 섹션 후, 기술된 Hello World in ${SUITE NATE} Test Suit 가 첫 번째 테스트 케이스명으로 인식되며 들여 쓰기 후에 기술된 키워드들로 해당 테스트 케이스를 구현하게 된다. 테스트 케이스명에서는 상기 예제와 같이 이미 정의된 자동 변수를 사용하여 좀 더 유연하게 이름을 정의할 수 도 있다. 테스트 케이스를 설명하기 위해서..
테스트 케이스의 종료는 케이스 내에 사용된 키워드들 중 하나가 실패하는 경우이거나 의도적으로 실패를 나타내는 경우에 발생된다. 키워드가 실패하는 경우 대부분 케이스 후반부에 Should Be... 키워드를 사용하여 결과 값을 비교하는 경우이다. My Test Case 1 ${result}= Run My Keyword True Should be True ${result} Log To Console I wll be printed out My Test Case 2 ${result}= Run My Keyword False Should be True ${result} Log To Console I will not be printed out *** Keywords *** Run My Keyword True # Do..