• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    미해결

ISB 배리어에 대한 질문입니다.

24.03.29 14:43 작성 조회수 117

0

ISB배리어에 대해 학습을 하면서 제가 생각했을 때는 이해가 잘되지 않은 부분이 있어 질문을 드립니다. 제가 이해한 ISB배리어의 사용 이유는 다음과 같습니다.명령어는 파이프라인을 통해 페치, 디코드, 실행을 단계를 걸쳐 병렬적으로 실행된다.ISB 배리어는 시스템 레지스터를 설정한 후에 주로 사용된다.그 이유는 시스템 레지스터을 설정한 명령어가 실행되기 전에 페치된 명령어에서 잘못 설정된 시스템 레지스터 설정 값을 읽을 수 있기 때문에파이프라인에서 플러시를 통해 비우고 시스템 레지스터를 설정하는 명령어가 실행단계까지 완료된 다음에 다음 명령어를 페치를 한다. 그리고 여기서 생긴 의문은 그렇다면 굳이 시스템 레지스터가 아니라 노멀 레지스터를 읽고 쓸 때도 이런 문제가 생길테니 ISB 명령어를 사용해야하는가? 입니다. 위 글에서 부족한 부분이 있다면 그 부분에 대해서도 설명해주시면 감사하겠습니다.

답변 2

·

답변을 작성해보세요.

0

시스템 레지스터는 용어와 같이 시스템의 속성을 설정하는 용도로 사용됩니다. 대표적인 예는 TTBR0_EL1 혹은 TTBR1_EL1와 같이 1st 룩업 페이지 테이블의 주소를 담고 있는 시스템 레지스터입니다. 이와 같은 시스템 레지스터의 정보는 값이 변경되면 파이파라인에 올라간 명령어에 영향을 끼칩니다. 그래서 ISB 명령어를 사용해 새롭게 적용된 기준으로 명령어가 실행되도록 처리되어야 합니다.

노멀 레지스터는 범용 레지스터를 말씀하시는 것 같은데요. 노멀 레지스터는 명령어의 인풋과 아웃풋으로 사용되므로 시스템 레지스터와 같은 문제는 발생하지 않을 것으로 보입니다. 혹시 노멀 레지스터를 어떤 의미로 사용하셨는지 알려주시면, 이에 맞게 답신 드리겠습니다.

감사합니다.

채우정님의 프로필

채우정

질문자

2024.04.14

제가 설명이 부족했던거 같습니다.

제가 생각한 경우는 비교하는 명령어 같은 경우에 범용 레지스터의 값을 비교한다면 범용 레지스터의 값이 순서대로 업데이트가 이뤄지지 않는다면 문제가 생기지 않을까? 입니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.31

안녕하세요, 인프런 AI 인턴입니다.

제공된 정보에는 ISB 배리어에 대한 구체적인 내용이 포함되어 있지 않아 직접적인 답변을 드리기 어렵습니다. 하지만, 일반적으로 ISB(Instructon Synchronization Barrier) 배리어는 말씀하신 것처럼 시스템 레지스터 값의 변경 후 이전에 페치된 명령어가 변경 이전의 레지스터 값을 사용하지 않도록 파이프라인을 플러시하는데 주로 사용됩니다. 따라서, 시스템 레지스터뿐만 아니라 모든 종류의 레지스터가 아닌 특정 상황에서만 필요한 것이 일반적입니다. ISB 배리어의 사용은 특히 시스템의 동작에 큰 영향을 미치는 레지스터의 값이 변경되는 경우에 중요할 수 있습니다. 노멀 레지스터를 읽고 쓰는 경우, 해당 작업의 성격과 시스템의 설계에 따라 ISB 배리어의 필요성이 달라질 수 있으며, 특히 해당 명령어의 실행이 다른 명령어의 실행 결과에 영향을 미치는지 여부를 고려해야 합니다.

임베디드 시스템이나 프로세서의 아키텍처 설계에 따라 ISB 배리어의 사용 사례나 필요성이 변할 수 있으므로, 구체적인 아키텍처의 설계 문서나 해당 프로세서의 기술 매뉴얼을 참조하는 것이 좋습니다. 추가적인 이해를 돕기 위해 관련 문서나 가이드를 찾아보시는 것도 추천드립니다.

채널톡 아이콘