Вот что пишет AMD: This instruction invalidates the TLB entry, regardless of the G (Global) bit setting in the associated PDE or PTE entry and regardless of the page size (4 Kbytes, 2 Mbytes, or 4 Mbytes). It may invalidate any number of additional TLB entries, in addition to the targeted entry. А вот что пишет Intel: Invalidates (flushes) the translation lookaside buffer (TLB) entry specified with the source operand. The source operand is a memory address. The processor determines the page that contains that address and flushes the TLB entry for that page. The INVLPG instruction normally flushes the TLB entry only for the specified page; however, in some cases, it flushes the entire TLB. See “MOV—Move to/from Control Registers” in this chapter for further information on operations that flush the TLB. Что-то я не понимаю, в каких случаях может возникнуть необходимость очищать дополнительные записи?
Например в случаях, когда адрес соответствует странице, в которой размещена Page Table - раз инвалидна таблица, значит инвалидны и все entry этой таблицы
Это понятно, но программеру также никто не запрещает написать invlpg m, где m - адрес страницы, в которой содержится Page Directory или Page Table. В этом сл.процессор должен сам позаботиться о валидности записей в TLB, поэтому и AMD и Intel оставлют за собой право разбираться со своим внутренним хозяйством как они считают нужным