Кіріспе

Кодтау теориясында Торнадо кодтары – қателерді түзетуге қолдау көрсетілетін өшіру кодтарының класы. Торнадо кодтары, Reed–Solomon өшіру кодтарына қарағанда, тұрақты C санымен артық блоктарды қажет етеді, бірақ оларды жасау және өшірулерді түзету әлдеқайда жылдам. Торнадо кодтарының бағдарламалық қамтамасы арқылы іске асырылуы, кішкентай ұзындықта Reed–Solomon өшіру кодтарынан 100 есе, ал үлкен ұзындықта 10 000 есе жылдам. Торнадо кодтары енгізілгеннен бері, Online кодтары, LT кодтары және Raptor кодтары сияқты көптеген басқа да ұқсас өшіру кодтары пайда болды. Торнадо кодтары қабатты тәсілді қолданады. Соңғы қабаттан басқа барлық қабаттарда LDPC қателерді түзету коды қолданылады, ол жылдам, бірақ сәтсіздікке ұшырау мүмкіндігі бар. Ал соңғы қабатта Reed–Solomon түзету коды қолданылады, ол баяурақ, бірақ сәтсіздікті қалпына келтіру тұрғысынан ең оңтайлы. Торнадо кодтары деңгейлер санын, әр деңгейдегі қалпына келтіру блоктарының санын және соңғы емес қабаттар үшін блоктарды жасауға қолданылатын таралуды анықтайды.

Шолу

Кіріс деректері блоктарға бөлінеді. Блоктар – бірдей өлшемдегі биттер тізбегі. Қайтару деректері кіріс деректерімен бірдей блок өлшемін пайдаланады. Блоктың (кіріс немесе қалпына келтіру) жоғалуы басқа тәсілмен анықталады. (Мысалы, дискідегі блок CRC тексеруінен өтпейді немесе белгілі бір реттік нөмірі бар желілік пакет келмейді.) Қайта қалпына келтіру блоктарының санын пайдаланушы анықтайды. Содан кейін деңгейлер саны және әр деңгейдегі блоктар саны анықталады. Әр деңгейдегі сан бірден кіші B коэффициентімен есептеледі. Егер N кіріс блогы болса, бірінші қалпына келтіру деңгейінде B*N блогы, екіншісінде B*B*N, үшіншісінде B*B*B*N және т.б. болады. Соңғы деңгейден басқа барлық қалпына келтіру деңгейлері xor (ексклюзивті немесе) операциясын қолданатын LDPC кодын пайдаланады. XOR екілік мәндермен – 1 және 0-мен жұмыс істейді. Егер A және B әртүрлі мәндерге ие болса, A xor B = 1, ал егер A және B бірдей мәндерге ие болса, 0 болады. Егер сізге (A xor B) және A нәтижесі берілсе, B мәнін анықтауға болады. (A xor B xor A = B). Сол сияқты, егер сізге (A xor B) және B нәтижесі берілсе, A мәнін анықтауға болады. Бұл бірнеше мәндерге дейін жалғасады, сондықтан (A xor B xor C xor D) нәтижесі және кез келген 3 мән берілсе, жоғалған мәнді қалпына келтіруге болады. Бірінші деңгейдегі қалпына келтіру блоктары – кіріс блоктарының xor жиыны. Сол сияқты, екінші деңгейдегі қалпына келтіру блоктары әрқайсысы бірінші деңгейдегі блоктардың xor жиынынан құралады. Xor операциясына қолданылатын блоктар қайталанусыз кездейсоқ түрде таңдалады. Дегенмен, қалпына келтіру блогын жасау үшін таңдалған блоктардың саны әр деңгей үшін нақты үлестірімге сәйкес келеді. Xor операциясы жылдам болғандықтан және қалпына келтіру блоктары кірістегі (немесе төменгі қалпына келтіру деңгейіндегі) блоктардың тек бір бөлігінің xor-ы болғандықтан, қалпына келтіру блоктарын жылдам жасауға болады. Соңғы деңгей – Рид-Соломон коды. Рид-Соломон кодтары қателерден қалпына келтіру мүмкіндігі жағынан оңтайлы, бірақ жасау және қалпына келтіру процесі баяу. Әр деңгейдегі блоктардың саны алдыңғы деңгейге қарағанда азайғандықтан, Рид-Соломон кодында қалпына келтіруге қажетті блоктардың саны аз. Осылайша, Рид-Соломон коді баяу болғанымен, оның өңдеуі қажетті дерек көлемі шағын. Қалпына келтіру кезінде ең алдымен Рид-Соломон коды қалпына келтіріледі. Бұл әдіс жұмыс істейтініне кепілдік беріледі, егер соңғы деңгейге дейінгі деңгейдегі жоғалған блоктардың саны соңғы деңгейдегі қазіргі блоктардан кем болса. Төменгі деңгейлерге қарай, LDPC (xor) қалпына келтіру деңгейін төменгі деңгейді қалпына келтіру үшін жоғары ықтималдықпен пайдалануға болады, егер барлық қалпына келтіру блоктары болса және төменгі деңгейде қалпына келтіру деңгейінен кем дегенде C' блоктары жоғалса. Қалпына келтіру алгоритмі – төменгі деңгейден генерациялық жиынының тек біреуі жоқ қалпына келтіру блогын табу. Содан кейін, қалпына келтірілген блоктың xor нәтижесі барлық қазіргі блоктармен есептелгенде, жоғалған блок табылады.

Патент мәселелері

Торнадо кодтары бұрын Америка Құрама Штаттарында патенттелген. US6163870 A (1997 жылдың 6 қарашасында тіркелген) және US 6081909 A (1997 жылдың 6 қарашасында тіркелген) патенттері Торнадо кодтарын сипаттайды және олардың патенттік мерзімі 2017 жылдың 6 қарашасында аяқталды. US6307487 B1 (1999 жылдың 5 ақпанында тіркелген) және US6320520 B1 (1999 жылдың 17 қыркүйегінде тіркелген) патенттерінде де Торнадо кодтары туралы айтылған, олардың патенттік мерзімі тиісінше 2019 жылдың 5 ақпанында және 2019 жылдың 17 қыркүйегінде аяқталды.

Цитаталар

Майкл Люби Торнадо кодтарын ойлап тапты.