DIFT for multi-thread applications on multi-core architectures
From NUEESS
Main Idea
When the tag propagation is done off-chip (using another core or co-processor to do DIFT), the inherent atomicity between data and metadata is broken. As a result, the metadata is processed several cycles after the related data is done. In a single thread application, it cannot be a big deal (except because sometime the main execution would be stalled waiting for the result of the tag propagation - before a indirect jump for example, where the system checks if the calculated address is trusted or not). In multi-thread applications, propagation shared metadata is not synchronized as the shared data is. Thus, two co-processors (metadata processors) can request access to the same metadata in different order as the correspondent data is accessed. To avoid it, we need to record the order as the data is accessed (by the main cores) and enforce the same order on the metadata. To do that, we propose to extend the cache protocol and leverage the MMU to make visible all the accesses to the shared data and record them for next reference. The idea is to enforce metadata access order when it is needed, and allow out-of-order metadata access when it is not critical. Using "locks" and "keys", we restrict/allow the access to the metadata. We add rules to set and release those metadata locks.
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |