Security Refresh paper
2010.08.28 17:37 Edit
ISCA '10 에서 발표된 Security Refresh: Prevent Malicious Wear-out and Increase Durability for Phase-Change Memory with Dynamically Randomized Address Mapping 이라는 논문입니다.
PCM(107 ~108)은 NAND flash에 비하면 Lifetime이 매우 길지만, DRAM에 비해서는 짧습니다. 따라서 wear leveling을 해주어야 합니다.
지금까지의 연구에 의하면 PCM을 wear leveling하지 않고 DRAM을 대체한다면 수명이 몇 달을 넘지 못한다고 합니다.
본 논문도 PCM의 수명에 관한 것입니다. 하지만, 예전의 PCM wear leveling 알고리즘과 차별화 되는 점은 악의적인 공격을 고려했다는 것입니다.
악의적인 공격이란, 악성코드가 PCM의 특정지역에 write를 반복 수행하여 wear out 되게 만들어 버리는 것을 말합니다. 기존에 제시된 wear leveling 알고리즘은 악의적인 공격으로 부터 자유롭지 못하다는 것이 이 논문은 말하고 있습니다. 그 예로 segment swap 이나 Start-Gap을 예로 들었습니다. 하지만, segment swap 은 그렇다 치고 Random Based Start-Gap(RBSG) 까지 보안에 취약하다고 하는 것은 좀 억지스러운 점이 있습니다.
RBSG 에서 사용하는 Static Randomizer는 악성코드가 반복적인 분석으로 mapping 정보와 Region의 크기, 각 Start, Gap의 위치를 알아낼 수 있다고 주장합니다.
이러한 Motivation으로 Security Refresh알고리즘은 Dynamic Randomizer를 제안합니다.

각 State마다 random seed 를 변경하여 악성코드가 mapping정보를 알아낼 수 없게 한다는 것입니다. Figure 5를 보면 Initial State에서 Final State까지 를 한 cycle로 보고 cycle 마다 random seed를 변경합니다. 만약 Mapping rule 을 변경하면 기존에 있는 mapping 정보가 뒤범벅되어 전부다 swap을 해줘야 할 것 같은 의문점이 생깁니다. 하지만, 본 알고리즘은 Logical to Physical mapping table로 주소를 관리하는 법이 아닌, Device를 Region으로 나눈 후 Region 내의 Block offset으로 주소를 관리하며 주소 mapping 은 원래 Offset에 random seed를 XOR하는 법으로 주소를 변경합니다. 이 방법은 두 가지 장점이 있는데 1. 별도의 mapping table을 관리할 필요가 없다는 점과, 2. random seed 가 변경 될 때마다 변경되는 mapping 관계는 2개 의 Block이 서로 쌍을 이룬다는 점입니다. 예를 들어 MA (Memory Address) 와 RMA (Random MA) 가 1MA 는 3RMA 으로 mapping 된다면 반대로 3MA는 1RMA로 쌍을 이루게 됩니다. 따라서 block swap은 연쇄적으로 일어나지 않게 되는 것입니다.
실험적인 결과에 의하면 이런 mapping은 1단계 보다는 2단계로 했을 때 효과가 나타난다고 합니다.

놀라운 점은 이렇게 한 결과가 이상적인 wear leveling에 81.2% 근접했다는 것이고, 따로 mapping table이 필요하지 않기 때문에 16GB PCM 를 관리하는데 필요한 register의 크기가 292B 밖에 되지 않는 다는 점과, 이로 인한 performance 저하가 -1.2% 밖에 되지 않는 다는 점입니다.
Segment Swapping의 문제는 Segment 의 크기를 크게 하면 Segment내에서는 wear leveling이 되지 않고, 반대로 Segment의 크기를 줄이면 mapping table의 크기가 증가하는 것입니다. 하지만, 이 논문에 제시된 방법은 mapping table이 없음에도 segment의 크기를 마음대로 줄일 수 있다는 것입니다. Mapping table이 없으니, mapping table을 search 할 필요도 없고, Min-Max segment를 찾을 필요도, 없어 성능도 우수 합니다.

물론, cycle 내에서 access되지 않은 block도 random seed가 변경되는 swap이 되야 단점이 있지만, two-level security refresh를 적용하면, write overhead가 최대 11.8% 밖에 되지 않습니다.
학회의 명성에 어울리는 여러모로 흠을 잡을 곳이 없는 논문입니다.
NAND Flash의 block의 크기가 적당히 작다면 NAND Flash에도 적용해 볼 수 있는 좋은 알고리즘 입니다.
- [2011/07/27] Mac 시스템 성능 향상 방법 (PRAM & SMC) (4084)
- [2011/03/18] 서브우퍼가 짝없어도 괜찮은 이유 (969)
- Tag :
- PCM , PRAM , Security Refresh , Start-Gap , Segment Swap , Wear leveling
