¡¡Chinese Journal of Computers   Full Text
  TitleUsing Write Mask to Support Hybrid Write-Back and Write-Through Cache Policy on Many-Core Architectures
  AuthorsLIN Wei1),2) YE Xiao-Chun1),2) SONG Feng-Long1),2) ZHANG Hao1)
  Address1)(Key Laboratory of Computer System and Architecture,Institute of Computing Technology,Chinese Academy of Sciences, Beijing 100190)
2)(Graduate University of Chinese Academy of Sciences,¡¡Beijing 100049)
  Year2008
  IssueNo.11(1918¡ª1928)
  Abstract &
  Background
Abstract Write-back cache policy can greatly save bandwidth consumption for write operations. It¡®s particularly beneficial in many-core architecture. Normally CMP uses write-invalid or write-update cache protocol like directory based MESI which is hardly scalable and too complex. Alternatively the authors implemented scope consistency(and lock-based cache coherence protocol) on chip, add write-mask for each cacheline of L1 Dcache to record the written byte's location and solve the false sharing problem. To further optimize the write-mask storage overhead, two methods are proposed. First the authors set store instructions with 1/2/3 bytes write-through property and let every 4-byte data has 1 bit write-mask. This method can compress the chip area of write-mask to 27.9% of origin byte-grain design. Secondly they design write mask buffer whose entry counts 12.5% of total number of Dcache blocks and compress the area overhead to 17.7% of origin without performance lost. On Godson-T 64-core platform which uses scope consistency, they use write-mask to implement hybrid WB/WT cache policy (in the scope range with possible data race we implement write-through, but out of the scope range without data race they choose write-back). Three splash2 programs and two biological programs are evaluate. The results show that performance improvement is above 24% compared to completely write-through and no performance lost under the two storage optimizations.
Keywords many-core; write mask; write mask buffer; scope consistency; false sharing; write-invalid; write-update