Multi-core processors with shared L2 caches can improve performance and integrate several functions on a single chip in real-time systems. However, tasks running on different cores can incur many conflict misses in the shared L2 cache, resulting in performance unpredictability and in increased WCETs (Worst Case Execution Times) of real-time tasks. We propose a novel shared L2 cache architecture that can alleviate these problems. First, our shared L2 cache architecture
is aware of instructions/data belonging to real-time tasks by adding a real-time indication bit to each L2 cache block. Second, it allocates portion of cache space to non-real-time tasks without incurring interferences to real-time tasks by developing a real-time-aware replacement policy. Our proposed shared L2 cache architecture can be combined with the conventional cache partitioning and Bankization schemes to support multiple real-time tasks and non-real-time task running simultaneously on multiple cores. Experimental results show that the performances of real-time tasks, which run together with non-real-time tasks on multi-core systems, are predictable and that their WCETs are lower than those by the conventional schemes.
실시간 시스템에서의 공유 L2 캐쉬를 탑재한 멀티코어 프로세서의 사용은 성능 향상과 여러 기능들을 한 칩에 넣을 수 있다는 장점을 가지고 있다. 그러나 공유 L2 캐쉬는 각각 코어에서 실행되는 태스크들의 충돌 문제를 가지고 있다. 이러한 태스크들의 충돌로 인해 실시간 태스크의 WCET (Worst Case Execution Time) 이 매우 길어지며, 그 길어지는 시간은 매우 가변적이어서 전체 시스템의 시간 예측성을 매우 떨어트린다. 본 논문에서는 위의 문제를 해결하기 위한 새로운 공유 L2 캐쉬 구조를 제안한다. 첫째로, 우리의 공유 L2 캐쉬는 실시간 태스크와 비 실시간 태스크의 데이터를 구분하여 처리한다. 둘째로, 잘 알려진 cache decay 현상을 활용하여 비 실시간 태스크가 실시간 태스크를 방해하지 않으면서 성능 향상을 도모한다. 실험 결과는 본 논문에서 제안된 공유 캐쉬 구조가 태스크의 최악 경우 실행 시간을 예측 가능하게 보장하며, 다른 기법들보다 성능을 향상시킴을 보여준다.