Menü
Bedava
kayıt
ev  /  Multimedya/ İnsan ilişkisel hafızası. ilişkisel bellek

İnsan ilişkisel bellek. ilişkisel bellek

V çağrışımsal belleköğeler adrese göre değil, içeriğe göre seçilir. Son kavramı daha ayrıntılı olarak açıklayalım. Adres organizasyonu ile hafıza için konsept tanıtıldı minimum adreslenebilir birim(MAE) bireysel bir adrese sahip bir veri parçası olarak. için benzer bir kavram sunalım. çağrışımsal bellek ve bu minimum depolama birimi çağrışımsal bellek Arama ilişkisel bellek dizisi(StrAP). Her StrAP iki alan içerir: bir etiket alanı (İngilizce etiket - etiket, etiket, nitelik) ve bir veri alanı. İlişkisel belleğe sözcüklerle okuma isteği şu şekilde ifade edilebilir: etiketin belirtilen değere eşit olduğu (hangi) satırı/satırları seçin.

Özellikle, böyle bir sorgu ile üç sonuçtan birinin mümkün olduğunu not ediyoruz:

  1. verilen etikete sahip tam olarak bir satır var;
  2. belirtilen etikete sahip birden çok satır var;
  3. verilen etikete sahip satır yok.

Niteliğe göre bir kaydı aramak, veritabanı erişimlerinde tipik bir eylemdir ve bir veritabanında aramaya genellikle ilişkisel arama denir. Bu aramayı gerçekleştirmek için tüm kayıtlara bakın ve belirtilen etiketi her kaydın etiketiyle karşılaştırın. Bu, kayıtları depolamak için sıradan adreslenebilir bellek kullanıldığında yapılabilir (ve bunun çok zaman alacağı açıktır - saklanan kayıtların sayısıyla orantılı olarak!). Hakkında çağrışımsal bellek bellekten ilişkisel veri alımının donanım tarafından desteklendiğini söylüyorlar. İlişkili belleğe yazarken, veri öğesi, bu öğeye özgü etiketle birlikte StrAP'ye yerleştirilir. Bunun için herhangi bir ücretsiz StrAP kullanabilirsiniz. Önbelleğin yapısal organizasyonunun çeşitlerini veya görüntüleme yöntemlerini göz önünde bulundurun rasgele erişim belleğiönbellek üzerinde.

Tamamen ilişkisel önbellek

Şekilde tam olarak ilişkilendirilebilir bir önbellek diyagramı gösterilmektedir (aşağıdaki şekle bakın).

Önbellek ile sistemin algoritmasını anlatalım. Çalışmanın başında önbellek boştur. Getirme sırasında ilk komut yürütüldüğünde, kodu ve birkaç bitişik bayt daha program kodu, - önbellek satırlarından birine (yavaşça) aktarılacak ve aynı zamanda adresin üst kısmı ilgili etikete yazılacaktır. Önbellek satırı bu şekilde doldurulur.

Bu alandan sonraki seçimler mümkünse, bunlar zaten CACHE (hızlı) - "CACHE-hit" den yapılacaktır. Eğer ortaya çıkarsa istenen öğeönbellekte önbellek yok, - "CASH-miss". Bu durumda, RAM'e erişim (yavaşça) gerçekleşir ve aynı zamanda bir sonraki önbellek satırı doldurulur.

Tamamen İlişkili Önbellek Devresi

Önbelleğe aşağıdaki gibi erişilir. Yönetici adresinin oluşturulmasından sonra, etiketi oluşturan en önemli bitleri donanımdır (hızlı) ve tüm önbellek satırlarının etiketleri ile aynı anda karşılaştırılır. Bu durumda, daha önce listelenen üç durumdan yalnızca ikisi mümkündür: ya tüm karşılaştırmalar olumsuz bir sonuç verir (önbellek kaçırma) ya da olumlu bir karşılaştırma sonucu tam olarak bir satır için kaydedilir (önbellek isabeti).

Okuma sırasında, bir önbellek isabeti kaydedilirse, adresin alt bitleri, önbellek satırındaki baytların seçileceği konumu belirler ve işlem türü, bayt sayısını belirler. Açıkçası, bir veri öğesinin uzunluğu bir baytı aşarsa, bu öğe (parçalar halinde) iki (veya daha fazla) farklı önbellek satırında bulunduğunda durumlar mümkündür, o zaman böyle bir öğeyi getirme süresi artacaktır. Bu, işlenenleri ve talimatları, optimize edici çevirmenler geliştirirken veya kodu manuel olarak optimize ederken dikkate alınan önbellek satırlarının sınırları boyunca hizalayarak önlenebilir.

Önbellek eksikliği varsa ve CACHE'de boş satır yoksa, CACHE'nin bir satırını başka bir satırla değiştirmelisiniz.

Değiştirme stratejisinin temel amacı, yakın gelecekte erişilmesi en muhtemel satırları önbellekte tutmak ve daha sonra erişilecek veya hiç erişilmeyecek satırları değiştirmektir. Açıktır ki, en uygun algoritma, diğer CACH satırlarından daha sonra erişilecek olan satırın yerini alan algoritma olacaktır.

Ne yazık ki, böyle bir tahmin pratik olarak gerçekleştirilemez ve optimal olandan daha düşük algoritmalar kullanmak gerekir. Kullanılan değiştirme algoritması ne olursa olsun, yüksek hıza ulaşmak için donanımda uygulanmalıdır.

Pek çok olası değiştirme algoritması arasında en yaygın olanı, azalan nispi verimlilik sırasına göre düşünülen dördü. Bunlardan herhangi biri, tamamen ilişkilendirilebilir bir önbellekte uygulanabilir.

En etkili olanı, en eski kullanıma dayalı değiştirme algoritmasıdır ( LRU - En Son Kullanılanlar ), uzun süredir erişilmeyen önbellek satırının yerini alır. Çalışmalar, geriye "bakan" LRU algoritmasının, ileriye "bakan" optimal algoritmaya kıyasla oldukça iyi performans gösterdiğini göstermiştir.

En iyi bilinenleri, bu algoritmanın iki donanım uygulaması yöntemidir. İlkinde, her önbellek satırıyla bir sayaç ilişkilendirilir. Tüm sayaçların içeriğine düzenli aralıklarla bir birim eklenir. Bir satıra erişildiğinde sayacı sıfırlanır. Böylece en uzun süre erişilmeyen satırın sayacında en büyük sayı olacak ve bu satır değiştirme için ilk aday.

İkinci yöntem, önbellek satırlarını doldurma sırasına göre bu satırlara referansların girildiği bir kuyruk kullanılarak uygulanır. Bir satıra her erişildiğinde, ona olan bağlantı kuyruğun sonuna taşınır. Sonuç olarak, her seferinde kuyruktaki ilk, en uzun süredir erişilmeyen satıra bir bağlantıdır. Her şeyden önce değiştirilen bu çizgidir.

Başka bir olası değiştirme algoritması, ilk giren ilk çıkardır ( FIFO - İlk Giren İlk Çıkar ). Burada önbellekte en uzun süre kalan dize değiştirilir. Algoritma, daha önce düşünülen sıra kullanılarak kolayca uygulanır, tek fark, dizgeye eriştikten sonra karşılık gelen bağlantının sıradaki konumunun değişmemesidir.

Başka bir algoritma, en az kullanılan dizenin (LFU - Least Frequently Use) değiştirilmesidir. CACHE belleğindeki satır, en az sayıda erişimle değiştirilir. İlke, her bir satırın içeriğine her vuruştan sonra eklenen bir isabet sayacı ile ilişkilendirilerek uygulamaya konabilir. Değiştirilecek ana rakip, sayacı en küçük sayıyı içeren dizedir.

En basit algoritma, değiştirilecek bir dizgenin keyfi seçimidir. Değiştirilecek dize rastgele seçilir. Bu, örneğin, bir isabet veya bir ıska olup olmadığına bakılmaksızın içeriği her saat darbesiyle bir artan bir sayaç yardımıyla uygulanabilir. Sayaçtaki değer, değiştirilecek dizeyi tanımlar.

Etiket ve veri baytlarına ek olarak, önbellek satırı, her şeyden önce, geçerlilik biti V (geçerli - geçerli) ve değişiklik biti M (değiştir - değiştir, değiştir) arasında olması gereken ek hizmet alanları içerebilir. not alınmış. Bir sonraki önbellek satırı dolduğunda, V "geçerli" duruma ve M - "değiştirilmemiş" durumuna ayarlanır. Programın yürütülmesi sırasında bu satırın içeriği değiştirilmişse, M biti değiştirilir ve bu satır değiştirildiğinde içeriğinin RAM'e yeniden yazılması gerektiğini belirtir. Herhangi bir nedenle, başka bir yerde (örneğin, RAM'de) saklanan bu dizenin bir öğesinin bir kopyası değiştiyse, bit V. ana RAM'e. Ek olarak hizmet alanı, LRU algoritmasını destekleyen bitler içerebilir.

Ekipman hacmi tahmini

Tipik önbellek boyutu modern sistem- 8 ... 1024 kbayt ve önbellek satırının uzunluğu 4 ... 32 bayttır. Pentium ve PentiumPro işlemcili sistemler için tipik olan 256KB Önbellek ve 32B hat uzunluğu için daha fazla değerlendirme yapılır. Bu durumda etiket uzunluğu 27 bit olup önbellekteki satır sayısı 256K / 32 = 8192 olacaktır. Bu, yukarıdaki yapıyı uygulamak için gereken 27 bitlik kodların sayısal karşılaştırıcılarının sayısıdır.

Dijital bir karşılaştırıcı oluşturmak için ekipman maliyetlerinin yaklaşık bir tahmini, 10 trans / bit değeri verir ve yalnızca karşılaştırıcı ünitedeki toplam transistör sayısı şuna eşit olacaktır:

10*27*8192 = 2 211 840,

bu, bir Pentium kalıbındaki toplam transistör sayısından yaklaşık bir buçuk kat daha azdır. Bu nedenle, tamamen ilişkisel bir CACHE belleğinin () açıklanan yapısının, CACHE'de yalnızca az sayıda satırla gerçekleştirilebildiği açıktır, yani. küçük bir önbellek boyutuyla (pratikte en fazla 32 ... 64 satır). Farklı bir yapıya göre daha büyük bir önbellek oluşturulur.

katmanlı sayfa tablosu ana belleğe birkaç erişim gerektirir, bu nedenle çok zaman alır. Bazı durumlarda, bu gecikme kabul edilemez. Aramayı hızlandırma sorunu, bilgisayar mimarisi düzeyinde çözülmüştür.

Yerellik özelliği nedeniyle, çoğu program bir süre için az sayıda sayfaya erişir, bu nedenle sayfa tablosunun yalnızca küçük bir kısmı aktif olarak kullanılır.

Hızlanma sorununa doğal bir çözüm, bilgisayarı sayfa tablosuna erişmeden sanal sayfaları fiziksel sayfalara eşlemek için bir donanım aygıtıyla donatmak, yani gerekli bilgileri depolayan küçük, hızlı bir önbelleğe sahip olmaktır. şu an sayfa tablosunun bir parçası. Bu cihaz denir çağrışımsal bellek, çeviriye bakan arabellek (TLB) terimi de bazen kullanılır.

Bir tablo girişi çağrışımsal bellek(bir giriş) bir sanal sayfa hakkında bilgi içerir: özellikleri ve içinde bulunduğu çerçeve. Bu alanlar tam olarak sayfa tablosundaki alanlara karşılık gelir.

Çünkü çağrışımsal bellek sayfa tablosu girişlerinden yalnızca bazılarını içerir, her TLB girişi numaralandırılmış bir alan içermelidir sanal sayfa... Belleğe ilişkisel denir çünkü aynı anda görüntülenenlerin sayısını karşılaştırır. sanal sayfa bu küçük tablonun tüm satırlarında karşılık gelen alanla. Bu yüzden verilen görünüm bellek oldukça pahalıdır. Sırada, alan sanal sayfa istenilen değere denk gelen sayfa çerçeve numarası bulunur. 8'den 4096'ya tipik TLB girişleri. Giriş sayısında artış çağrışımsal bellek ana bellek önbelleğinin boyutu ve komut başına bellek erişim sayısı gibi faktörler dikkate alınarak yapılmalıdır.

Varlığında bellek yöneticisinin işleyişini düşünün çağrışımsal bellek.

İlk ekran bilgileri sanal sayfa fiziksel olarak aranır çağrışımsal bellek... Gerekli giriş bulunursa, bir bellek isteğinin reddedildiği ayrıcalık ihlali durumları dışında her şey yolundadır.

İstenen giriş ise çağrışımsal bellek yoksa, görüntüleme sayfa tablosu üzerinden gerçekleştirilir. İçindeki girişlerden biri çağrışımsal bellek sayfa tablosundan kayıt bulundu. Burada, herhangi bir önbellek için geleneksel olan bir değiştirme sorunuyla karşı karşıyayız (yani, önbellekteki girişlerden hangisinin değiştirilmesi gerekiyor). Tasarım çağrışımsal bellek kayıtları, yenileri yapıldığında eski kayıtlardan hangisinin kaldırılması gerektiğine karar verilebilecek şekilde düzenlemelidir.

Sayfa numarası için başarılı arama sayısı çağrışımsal bellek toplam arama sayısı ile ilgili olarak isabet (eşleşme) oranı (orantı, oran) olarak adlandırılır. "Önbellek isabet yüzdesi" terimi de bazen kullanılır. Böylece hit oranı, linklerin kullanılarak yapılabilecek kısmıdır. çağrışımsal bellek... Aynı sayfalara erişmek isabet oranını artırır. İsabet oranı ne kadar yüksek olursa, RAM'deki verilere ortalama erişim süresi o kadar düşük olur.

Örneğin, sayfa tablosunda bir önbellek kaçırması durumunda adresi belirlemenin ve bir önbellek isabeti durumunda adresi belirlemenin 100 ns sürdüğünü varsayalım. çağrışımsal bellek- 20 ns. %90 isabet oranı ile ortalama adres belirleme süresi 0.9x20 + 0.1x100 = 28 ns'dir.

Modern işletim sisteminin oldukça kabul edilebilir performansı, kullanım verimliliğini kanıtlıyor çağrışımsal bellek... Veri bulma olasılığı yüksek çağrışımsal bellek bu nesnel özelliklerin varlığı ile ilişkili: mekansal ve zamansal yerellik.

Aşağıdaki gerçeğe dikkat etmek gerekir. Süreçlerin bağlamını değiştirirken, yeni sürecin içinde "görmediğinden" emin olmak gerekir. çağrışımsal bellek temizleme gibi önceki işlemle ilgili bilgiler. Yani kullanarak çağrışımsal bellek bağlam değiştirme süresini artırır.

Kabul edilen iki seviyeli ( çağrışımsal bellek+ sayfa tablosu) adres çeviri şeması parlayan bir örnekönceki dersin girişinde tartışıldığı gibi, yerellik ilkesinin kullanımına dayalı bellek hiyerarşisi.

Ters sayfa tablosu

Katmanlı organizasyona rağmen, birden fazla büyük sayfa tablosunu depolamak hala bir sorundur. Önemi, özellikle sanal sayfa sayısının çok fazla olduğu 64-bit mimariler için geçerlidir. Bir çözüm kullanmaktır ters sayfa tablosu(ters sayfa tablosu). Bu yaklaşım PowerPC makinelerinde, bazı Hewlett-Packard iş istasyonlarında, IBM RT, IBM AS / 400 ve diğerlerinde kullanılır.

Bu tablo, her sayfa çerçevesi için bir girdi içerir. fiziksel hafıza... Tüm işlemler için bir tablonun yeterli olması esastır. Bu nedenle, bit mimarisi, boyutu ve işlem sayısı ne olursa olsun, görüntüleme işlevini depolamak için ana belleğin sabit bir parçası gerekir.

RAM'deki tasarruflara rağmen, ters tabloönemli bir dezavantajı var - içindeki girişler (olduğu gibi çağrışımsal bellek) sanal sayfa numaralarının artan düzeninde sıralanmaz, bu da adresin çevirisini zorlaştırır. Bu sorunu çözmenin bir yolu, bir karma tablo kullanmaktır. sanal adresler... Ayrıca, kısım sanal adres sayfa numarasının temsil edilmesi, bir karma işlevi kullanılarak bir karma tablosuna eşlenir. Buradaki fiziksel belleğin her sayfası, hash tablosundaki bir girişe karşılık gelir ve ters sayfa tablosu. sanal adresler aynı hash değerine sahip olanlar birbiriyle birleştirilir. Tipik olarak, zincir uzunluğu iki kaydı geçmez.

Sayfa boyutu

Mevcut makineler için işletim sistemi tasarımcıları nadiren sayfa boyutunu etkileme yeteneğine sahiptir. Ancak tekrar için bilgisayarlar oluşturuluyor en uygun sayfa boyutuna ilişkin karar önemlidir. Tahmin edebileceğiniz gibi, tek bir en iyi boyut yoktur. Aksine, boyutu etkileyen bir dizi faktör vardır. Tipik olarak, sayfa boyutu 2 9 ila 2 14 bayt arasında iki kattır.

ilişkisel bellek

Parametre adı Anlam
Makalenin konusu: ilişkisel bellek
Dereceli puanlama anahtarı (tematik kategori) bilgisayarlar

Sayfa tablosu

Sayfa tablosu organizasyonu, sayfa ve segmentten sayfaya dönüştürme mekanizmalarının temel unsurlarından biridir. Sayfa tablosunun yapısını daha ayrıntılı olarak ele alalım.

Bu nedenle, bir sanal adres, bir sanal sayfa numarasından (yüksek sıralı bitler) ve bir ofsetten (düşük sıralı bitler) oluşur. Sanal sayfa numarası, sanal sayfanın girişini bulmak için sayfa tablosunda bir dizin olarak kullanılır. Sayfa tablosundaki bu girişten sayfa çerçeve numarası bulunur, ardından ofset eklenir ve fiziksel adres oluşturulur. Ek olarak, sayfa tablosundaki bir giriş, sayfanın öznitelikleri, özellikle güvenlik bitleri hakkında bilgi içerir.

Sayfa tablosunun verimli bir şekilde uygulanması için temel sorun, sanal adres alanlarının büyük olmasıdır. modern bilgisayarlar genellikle işlemci mimarisinin bitliği tarafından belirlenir. Günümüzde en yaygın olanı, bu boyutta 4 GB sanal adres alanları oluşturmaya izin veren 32 bit işlemcilerdir (64 bit bilgisayarlar için bu değer 2 ** 64b'dir).

Sayfa tablosunun yaklaşık boyutunu hesaplayalım. 4K sayfa boyutuna (Intel) sahip 32 bit adres alanında 1 milyon sayfa ve hatta 64 bitte daha fazlasını elde ederiz. O. tablonun 1M satırı (giriş) olması gerekir ve satırdaki giriş birkaç bayttan oluşur. Her işlemin kendi sayfa tablosuna ihtiyacı olduğunu unutmayın (ve bir segment-sayfa şeması durumunda, her segment için bir tane). Dolayısıyla bu durumda sayfa tablosu çok büyük olmalıdır.

Ancak, ekran hızlı olmalıdır. Her bellek erişiminde yapıldığı gibi, eşleme hızlı olmalıdır, ĸᴏᴛᴏᴩᴏᴇ hemen hemen her makine talimatında olur. Bu sorun esas olarak ilişkisel belleğin uygulanmasıyla çözülür.

Her zaman bellekte büyük bir tabloya sahip olmanın ve bunun sadece birkaç parçasını tutmanın hayati öneminden kaçınmak için (bu yine yerellik özelliğine bağlı olarak mümkündür), birçok bilgisayar çok seviyeli bir sayfa tablosu kullanır.

Bir model örneği düşünün (Şekil 10.4). 32 bitlik bir adresin 10 bitlik bir Ptr1 alanına, 10 bitlik bir Ptr2 alanına ve bir 12 bitlik Ofset'e bölündüğünü varsayalım. 12 bit ofset, 4K sayfa (2 ** 12) içindeki bir baytı toplam 2 ** 20 sayfa için yerelleştirmenize olanak tanır. Olarak Şekil l'de görülebilir. Bir tabloda 9.4 1024 satır Üst düzey Ptr1 alanını kullanarak, her biri 1024 satır içeren ikinci düzeydeki 1024 tabloya atıfta bulunurlar. Ptr2 alanı yardımıyla ikinci düzey tablonun her satırı belirli bir sayfayı işaret eder. Böyle bir organizasyonun amacı, tüm ikinci seviye tabloları (ve bunlardan 1024 tanesi vardır) her zaman bellekte tutmaktan kaçınmaktır. Yuvarlak sayılarla bir örneğe bakalım. Diyelim ki bir işlemin 12M belleğe ihtiyacı var: kod için belleğin altında 4M, veri için altta 4M ve yığın için belleğin üstünde 4M. Yığının alt kısmı ile verilerin üst kısmı arasında 4Gb-12Mb'lik devasa bir boşluk var, ĸᴏᴛᴏᴩᴏᴇ kullanılmıyor. Bu durumda sadece 1 adet üst düzey tablo ve 3 adet ikinci düzey tablo gereklidir. Bu yaklaşım doğal olarak üç veya daha fazla tablo düzeyine genellenir.

Sayfa tablosu girişlerinden birini düşünün. Boyutu sistemden sisteme değişir, ancak en yaygın durum 32 bittir. En önemli alan çerçeve numarasıdır. Sayfalamanın amacı bu değeri yerelleştirmektir. Ardından varlık biti, koruma bitleri (örneğin, 0 - okuma / yazma, 1 - salt okunur ...), değişiklik bitleri (eğer ona yazılmışsa) ve az kullanılan sayfaları vurgulamaya yardımcı olan bağlantı bitleri, önbelleğe almaya izin veren bitler. Diskteki sayfa adreslerinin sayfa tablosunun parçası olmadığına dikkat edin.

Şekil 10.4 - İki seviyeli sayfa tablosu örneği.

Birden çok katmana sahip olmak bellek yöneticisinin performansını nasıl etkiler? Her seviyenin bellekte ayrı bir tablo olduğunu varsayarsak, adres çevirisi birden çok bellek erişimi gerektirebilir.

Sayfa tablosundaki düzey sayısı, belirli mimariye bağlıdır. Tek seviyeli (DEC PDP-11), iki seviyeli (Intel, DEC VAX), üç seviyeli (Sun SPARC, DEC Alpha) sayfalamanın yanı sıra belirli sayıda seviye (Motorola) ile sayfalama uygulama örnekleri verilecek. MIPS R2000 RISC işlemcisi hiç bir sayfa tablosu olmadan çalışır. Burada istenen sayfanın aranması, bu sayfa ilişkilendirilebilir bellekte değilse, işletim sistemi tarafından devralınmalıdır (sıfır seviyeli sayfalama olarak adlandırılır).

Sanal bir adresi fiziksel bir adrese çevirme yolunda ana belleğe çoklu erişim gerektiren çok seviyeli bir sayfa tablosunda istenilen sayfayı bulmak uzun zaman alır. Bazı durumlarda, böyle bir gecikme kabul edilemez. Bu problem de çözümünü bilgisayar mimarisi düzeyinde bulmaktadır.

Yerellik nedeniyle, çoğu program bir süre boyunca az sayıda sayfaya bağlanır, bu nedenle sayfa tablosunun yalnızca küçük bir kısmı vurgulanır.

Doğal çözüm, bilgisayarı, sayfa tablosuna erişmeden sanal sayfaları fiziksel sayfalarla eşleştirmek için bir donanım aygıtıyla donatmak, yani, sayfa tablosunun o anda ihtiyaç duyulan bölümünü depolayan küçük, hızlı bir önbelleğe sahip olmaktır. Bu aygıta genellikle ilişkisel bellek denir, bazen ilişkisel kayıtlar (bazen çeviriye bakan arabellek (TLB)) terimini de kullanırlar.

İlişkisel bellekteki tablodaki bir kayıt, bir sanal sayfa, nitelikleri ve içinde bulunduğu çerçeve hakkında bilgi içerir. Bu alanlar tam olarak sayfa tablosundaki alanlara karşılık gelir.

İlişkili bellekte depolanan sanal sayfaları eşlemek hızlıdır, ancak önbellek pahalıdır ve boyut olarak sınırlıdır.
ref.rf'de yayınlandı
8'den 2048'e kadar TLB girişi sayısı

Belleği birleştirici olarak adlandırmak gelenekseldir, çünkü sanal sayfa numaralarıyla indekslenen sayfa tablosundan farklı olarak, bu küçük tablonun tüm satırlarında sanal sayfa numarasının karşılık gelen alanla eşzamanlı bir karşılaştırması vardır. Bu nedenle bu bellek pahalıdır. Sanal sayfanın alanı istenen değere denk gelen satır, sayfa çerçevesinin numarasını içerir.

İlişkisel bellek varlığında bellek yöneticisinin işleyişini ele alalım. İlk olarak, ilişkisel bellekte sanal bir sayfa arar. Sayfa bulunursa, belleğe erişim talebinin reddedildiği ayrıcalık ihlali durumları dışında her şey yolundadır.

Sayfa ilişkisel bellekte değilse, sayfa tablosunda aranır. İlişkili bellekteki sayfalardan biri bulunan sayfa ile değiştirilir. Tabloda, böyle bir yüklenen sayfa, sayfa tablosundan bir sonraki ilişkisel bellek yüklendiğinde dikkate alınacak olan bir değişiklik biti ile işaretlenmiştir.

Sayfa numarasının ilişkilendirilebilir bellekte bulunma yüzdesine isabet oranı denir. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, isabet oranı, bağlantıların çağrışımsal bellek kullanılarak yapılması gereken kısmıdır. Aynı sayfalara erişmek isabet oranını artırır.

Örneğin, sayfa tablosuna erişmek için 100 ns'nin ve ilişkisel belleğe erişmek için 20 ns'nin kritik olduğunu varsayalım. %90 isabet oranı ile ortalama erişim süresi 0,9 * 20 + 0,1 * 100 = 28 ns'dir.

Modern işletim sistemlerinin oldukça kabul edilebilir performansı, ilişkisel belleği kullanmanın verimliliğini kanıtlar. İlişkisel bellekte veri bulma olasılığının yüksek değeri, bu nesnel özelliklerin varlığı ile ilişkilidir: uzamsal ve zamansal konum.

Aşağıdaki gerçeğe dikkat etmek gerekir. İşlemler arasında geçiş yaparken, örneğin temizlemek için yeni işlemin ilişkisel bellekte önceki işlemle ilgili bilgileri görmemesini sağlamak gerekir. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, çağrışımsal belleğin kullanımı bağlam değiştirme süresini artırır.

İlişkisel bellek - kavram ve türleri. "İlişkisel bellek" kategorisinin sınıflandırılması ve özellikleri 2017, 2018.

Çağrışımsal deneylerde, bir noktanın özellikle vurgulanması gerekir, yani, güvenilir bir çağrışımsal süreci tanımlamak için gerekli bir koşul, öznenin tamamen pasifliği, iradesinin ve düşüncesinin kendiliğinden fikir akışından maksimum şekilde ayrılmasıdır. Aksi takdirde, çağrışımsal bir süreç yerine aktif olarak deterministik bir süreç elde ederiz. Gerçek çağrışım sürecinin aslında bir kişinin faaliyeti dışında gerçekleşen kendiliğinden bir süreç olması nedeniyle bu durum özellikle vurgulanmalıdır; bu kapasitede hafızanın gelişim aşamalarından birini ve tezahürünün biçimlerinden birini temsil eder. Çağrışımsal bellek söz konusu olduğunda, rastgele bellekle hiçbir ilgisi olmayan kendiliğinden bir anımsatıcı süreç olan spontane bellekle uğraşıyoruz. Bu anlamda, çağrışımsal bellek, elbette, özellikle insan biçimlerinden ziyade, yukarıda açıklanan ilkel bellek tezahür biçimlerine daha yakındır.

Kendiliğindenlik, şu anda olduğu gibi çağrışımsal hafızayı eşit derecede karakterize eder. ezber, yani sabitleme veya tutulma, ve anılar, yani reprodüksiyonlar.

Özne her zaman çeşitli izlenimlerin etkisi altındadır ve çoğu zaman bu izlenimler, niyetinden bağımsız olarak ortaya çıkar veya kaybolur. Ancak genellikle iz bırakmadan kaybolmazlar. Doğru, bu izlenimler psişede bilinçli deneyimler olarak uzun süre kalmazlar, ancak konunun kendisinde belirli kişisel değişikliklere neden olurlar. Ve böylece, bu değişiklikler temelinde, uygun koşullar ortaya çıktığında, örneğin, bu izlenimlerden biri tekrar özne üzerinde hareket etmeye başladığında, bu ikincisi onda meydana gelen değişikliklere, yani deneyimlere göre tepki verir. bu değişime karşılık gelen bilinçte ortaya çıkar. ... Özne tarafından kendiliğinden izlenimlerin etkisinin bir ürünü olarak deneyimlenen fikirlerin yeniden üretimi bu şekilde gerçekleşir. Gördüğünüz gibi, bunların yeniden üretimi, öznenin aktif, kasıtlı müdahalesi dışında da gerçekleşir.

Çağrışımsal temsillerin yeniden üretiminin her zaman yalnızca ikinci bir deneyimin -algısal bir temsilin- etkisi altında ortaya çıkması gerçeği, çağrışımsal belleğin keyfi bellekten açıkça ayırt edilmesi gerektiği gerçeğinin lehinde tanıklık eder. Çağrışımsal bir temsilin ortaya çıkması için can sıkıcı bir temsil veya algı gereklidir. Bu durum, çağrışımsal belleği, bellek eyleminin hala düşük, bağımlı bir biçimi olarak yeterince iyi karakterize eder. V bu his tanınmaya oldukça yakın.

Tanıma, zaten bildiğimiz gibi, şu şekilde ilerler: N.'nin algısına her zaman bir aşinalık duygusu eşlik eder. N.'yi tanıdım, onu gördüm. Ancak, buna bir tür temsil eklenirse, örneğin, N.'yi orada ve orada gördüm (bir yerin görüntüsü) veya o şöyle şöyle bir şapkadaydı (şapkanın görüntüsü), o zaman zaten uğraşıyoruz. ilişkisel bellek , yani N.'nin algısı fikirlerin yeniden üretilmesine neden olur. Bu anlamda, tanıma ve çağrışımsal bellek arasındaki fark, yalnızca, tanıma durumunda, geçmişin sınırlarının ötesine geçmeden algının kendisinde hayata geçmesi, çağrışımsal bellekte ise bu geçmişin formda verilmemesi gerçeğinden oluşur. ama tekrar tekrar verilen, ancak zaten bir temsil biçiminde olan bir görüntü gibi görünür. Aşağıda, gelişimin daha yüksek bir aşamasında, bellek temsillerinin yeniden üretilmesi için her zaman bir uyarana gerek olmadığını göreceğiz. Sadece istemsiz ezberleme değil, aynı zamanda gönüllü hatırlama da vardır.

Hafızayı organize etmenin yolları

Parametre adı Anlam
Makalenin konusu: Hafızayı organize etmenin yolları
Dereceli puanlama anahtarı (tematik kategori) bilgisayarlar

İşlevsel olarak, herhangi bir türdeki bellek her zaman bilgileri depolayan bir depolama dizisinden ve dizide arama, yazma ve okuma (ve gerekirse yeniden oluşturma) için hizmet eden yardımcı, oldukça karmaşık bloklardan oluşur.

Bir depolama dizisi (ZM), birçok özdeş depolama öğesinden (ZE) oluşur. Tüm GE'ler, her biri, bit sayısı örnek genişliği tarafından belirlenen ikili kod biçiminde bir bilgi birimi depolamak üzere tasarlanmış hücreler halinde düzenlenir. Belleği organize etmenin yolu, ZM'ye bilgi yerleştirme ve alma yöntemlerine bağlıdır. Bu temelde, adres, ilişkisel ve yığın belleği ayırt edilir.

ADRES HAFIZASI

Bir adres organizasyonuna sahip bellekte, ZM'deki bilgilerin yerleştirilmesi ve alınması, bir bilgi biriminin depolama adresinin kullanımına dayanır; bu, aşağıda kısaca, kısaca olarak adlandırılacaktır. kelime... Adres, bu kelimenin yerleştirildiği 3M hücresinin numarasıdır. ZM'ye bir kelime yazarken (okurken), bu işlemi başlatan komut, yazmanın (okumanın) gerekli olduğu hücrenin adresini (numarasını) belirtmelidir.

İncirde. 5.2 adres belleğinin genelleştirilmiş yapısını gösterir.

Bellek erişim döngüsü, PCU'ya gelen "Erişim" sinyali ile başlatılır. Erişim döngüsünün genel kısmı, adres yolundan (ША) adres yolundan (ША) bir erişim adresi almayı ve PCU'da istenen işlemin türünü (okuma veya yazma) belirten bir "İşlem" kontrol sinyali almayı içerir.

Okuma. BAS, adresin şifresini çözer ve adres tarafından belirtilen 3M hücresini seçen bir sinyal gönderir. Genel durumda, BAS ayrıca ZE hücrelerini yazma veya okuma için ayarlayan özel bellek hücresine sinyal gönderebilir. Bundan sonra, hücreye yazılan kelime ACC yükselticileri tarafından okunur ve RgI'ye iletilir. Ayrıca, yıkıcı okumalı bellekte, RgI'den BUZ aracılığıyla ZM'nin aynı hücresine bir kelime yazılarak bilgi yeniden oluşturulur. Okuma işlemi, RgI'den çıkış bilgi veri yolu SHI çıkışına bir kelime verilmesiyle sona erer.

Kayıt. Erişim döngüsünün yukarıdaki genel kısmına ek olarak, yazılı kelime ShI giriş veriyolundan RgI'ye alınır. Kaydın kendisi genellikle iki işlemden oluşur - hücre temizleme ve gerçek kayıt. Bunu yapmak için, BAS önce РгА adresinde belirtilen hücreyi seçer ve temizler. ZM hücresinin temizlenmesi (getirme ilk durum) farklı şekillerde yapılabilir. Özellikle yıkıcı okumalı bellekte, BUS bloke olduğunda hücredeki kelimeyi okumak için sinyal ile temizleme yapılabilir (böylece bilgi RgI'ye gelmez). Ardından, seçilen hücreye yeni bir kelime yazılır.

Yazmadan önce hücreyi temizleme işleminin yanı sıra okuma sırasında bilgilerin yeniden üretilmesi işlemindeki ihtiyaç, kullanılan ZE'nin türü, kontrol yöntemleri, LSI belleğinin elektronik yapısının özellikleri ve dolayısıyla bunlar tarafından belirlenir. yarı iletken belleklerde işlemler olmayabilir.

PCU, bireysel bellek düğümlerinin çalışmasını başlatan gerekli kontrol sinyalleri dizilerini üretir. PCU'nun çok karmaşık bir cihaz (kendi önbelleğine sahip bir tür kontrol denetleyicisi) olması gerektiği akılda tutulmalıdır, bu da belleğe LSI'yı bir bütün olarak, örneğin çoklu bağlantı noktası yeteneği, ardışık düzende bilgi teslimi gibi özel tüketici özellikleri verir. vesaire.

İLİŞKİLİ BELLEK

Bu bellek türünde, bilgi araması adrese göre değil, içeriğine göre gerçekleşir. Bu durumda, bilgi içeriğini bellek hücresinde depolanan kelimenin anlamsal yükü olarak değil, ZE bellek hücresinin içeriği olarak anlamak gelenekseldir, ᴛ.ᴇ. kaydedilen bit düzeyinde kompozisyon ikili kelime... Bu durumda, ilişkisel istek (özellik) de ikili kod belirli bir bitsel kompozisyon ile. Bir ilişkisel özellik ile arama, tüm 3M hücreleri için zaman içinde paralel olarak gerçekleşir ve özellik kaydının bitlerinin içeriklerini bellek hücrelerinin karşılık gelen bitlerinin içeriği ile karşılaştırma işlemidir. Böyle bir aramayı organize etmek için, SM'nin tüm ZE'leri bir bit işlemcilerle donatılmıştır; bu nedenle, bazı durumlarda bu tür bellek, çok işlemcili bir sistem olarak kabul edilir.

Büyük hacimli tam ilişkisel bellek çok pahalı bir cihazdır, bu nedenle maliyeti azaltmak için bir bit işlemci sayısı bellek hücresi başına bire düşürülür. Bu durumda, ilişkisel sorgunun bellek hücrelerinin içeriğiyle karşılaştırılması, tüm bellek hücreleri için zaman içinde paralel olarak, tek tek bitler için sıralı olarak gerçekleştirilir.

Belirli sorun sınıfları için çok büyük miktarda bellek ile ilişkisel arama, veri işlemeyi önemli ölçüde hızlandırır ve bilgisayar arızası olasılığını azaltır. Aynı zamanda, ilgili kombinasyonel devrelerin blokları ile ilişkisel bellek, bellekte oldukça karmaşık mantıksal işlemlerin gerçekleştirilmesine izin verir: bir dizideki maksimum veya minimum sayıyı aramak, belirli sınırlar içinde yer alan kelimeleri aramak, bir diziyi sıralamak, vb.

İlişkili aramanın, sıradan adres belleği olan bir bilgisayarda, bellek hücrelerinde yazılan sözcükleri işlemciye sırayla çağırarak ve bunları bazı ilişkisel özellikler (kalıp) ile karşılaştırarak da gerçekleştirilebileceği belirtilmelidir. Aynı zamanda, büyük miktarda bellekle, bu çok zaman alacaktır. İlişkisel bellek kullanılırken, OP'den işlemciye sözcükleri okumadan, belirli bir ilişkisel sorguya karşılık gelen sözcük sayısını belirlemek için tek bir çağrıda mümkündür. Bu, büyük veritabanlarında şu türden bir sorguyu çok hızlı bir şekilde uygulamayı mümkün kılar: Bölgede yaşayan kaç kişi gelir vergisi beyannamesini vermemiştir, vb.

Bazı özel bilgisayarlarda, OP veya bunun bir kısmı, hem ilişkisel hem de adres bilgisi alımını uygulamanıza izin verecek şekilde oluşturulmuştur.

Basitleştirilmiş yapısal şema ZM'nin tüm ZE'lerinin bir bit işlemcilerle donatıldığı birleştirici bellek, Şekil 2'de gösterilmektedir. 5.3.

Başlangıçta, adı verilen bir işlemi düşünün. ilişkilendirme kontrolü... Bu işlem, okuma ve yazma işlemleri için ortaktır ve ayrıca bağımsız bir anlamı vardır.

Bir n-bitlik ilişkisel istek, ᴛ.ᴇ, giriş veri yolu aracılığıyla RgAP'ye ulaşır. 0'dan n-1'e kadar olan bitler doldurulur. Aynı zamanda, RgM'nin n-inci biti 0'a ayarlanırken, arama maskesi kodu RgM'ye ulaşır. İlişkili arama, yalnızca RgM'de 1'e karşılık gelen RgAP bitleri için gerçekleştirilir. (RgAP'nin maskelenmemiş bitleri). Rakamlardaki rakamların PrAP'nin maskelenmemiş rakamlarıyla çakıştığı kelimeler için, KS'nin PrSv'nin karşılık gelen rakamlarına 1 ve kalan rakamlara 0 ayarladığına dikkat etmek önemlidir.

FS'nin birleştirici tersine çevrilmesinin sonucunun oluşumu için kombinasyon şeması, PgSv'de oluşturulan kelimeden en az üç sinyal oluşturur:

A 0 - ZM'de çağrışımsal özelliği karşılayan kelimelerin olmaması;

A 1 - böyle bir kelimenin varlığı;

A 2 - birden fazla kelimenin varlığı.

РгСв içeriğiyle ilgili diğer işlemler de mümkündür, örneğin birim sayısını sayma, ᴛ.ᴇ. bir çağrışımsal sorguyu karşılayan bellekteki sözcükleri sayma ve benzerleri.

PrCv içeriğinin ve 0, a 1, a 2'nin PrAP, RgM, 3M içeriği ile oluşturulmasına genellikle birliktelik kontrolü işlemi denir.

Okuma.İlk olarak, ilişkilendirme, RgAP'deki öznitelik tarafından izlenir.

A 0 = 1 - gerekli bilgilerin olmaması nedeniyle okuma iptal edilir;

A 1 = 1 - bulunan kelime RgI'ye okunur, ardından SHI çıkışına verilir;

A 2 = 1 - kelime, örneğin PgSv'de 1 ile işaretlenmiş hücreler arasında en küçük sayıya sahip olacak şekilde okunur, ardından SHI çıkışına verilir.

Kayıt.İlk olarak, boş bir hücre bulunur (boş hücrenin meşgul bitinde 0'ın yazıldığını varsayıyoruz). Bunun için ilişkilendirme РгАП = 111 ... 10 ve РгМ = 000 ... 01, ᴛ.ᴇ'de izlenir. РгАП'nin n'inci biti 0'a ve РгМ'ın n'inci biti - 1'e ayarlanmıştır. Bu durumda, boş hücre РгСв'de 1 ile işaretlenmiştir. Kayıt için, örneğin en düşük sayıya sahip boş bir hücre seçin. SHI'den alınan kelimeyi RgI'ye kaydeder.

Bu diyagramın gerçek cihazlarda bulunan BUP, BUSS, BUZ bloklarını göstermediğine dikkat edilmelidir. Aynı zamanda, çağrışımsal belleğin inşası için imha edilmeden okunabilen depolama elemanlarına ihtiyaç vardır.

STACK BELLEK (MAĞAZA)

Yığın bellek, ilişkisel bellek gibi adressizdir. Yığın bellek, hem donanımda hem de düzenli bir adreslenebilir bellek dizisinde düzenlenmelidir.

Donanım uygulaması durumunda, yığın bellek hücreleri, komşu hücrelerin kelime iletiminin bit zincirleriyle birbirine bağlandığı tek boyutlu bir dizi oluşturur (Şekil 5.4). Bu durumda, prensipleri farklı olan iki tip cihaz (a, b) mümkündür. İlk olarak Şekil 1'deki yapıyı ele alalım. 5.4, ​​bir.

SHI'dan alınan yeni bir kelimenin yazılması üst (sıfır) hücreye yapılırken, daha önce yazılan tüm kelimeler (0 hücresindeki kelime dahil) sayıları bir fazla olan komşu hücrelere kaydırılır. Okuma sadece üst (sıfır) hafıza hücresinden mümkündür. Ana mod, ϶ᴛᴏ silme ile okumadır. Bu durumda, bellekteki diğer tüm kelimeler yukarıya, daha düşük sayılara sahip komşu hücrelere kaydırılır. Böyle bir bellekte, kural uygulanır: sonuncusu geldi - ilki gitti... Bu tür yığınlara yaygın olarak LIFO (Son Giren - İlk Çıkar) yığınları denir.

Bazı durumlarda, yığın bellek aygıtları, aynı zamanda, bir sözcüğü 0 konumundan, onu silmeden ve geri kalan sözcükleri kaydırmadan okuma işlemini de sağlar. Herhangi bir bilgisayar cihazının denetleyicilerinin başlatma parametrelerini ezberlemek için bir yığın kullanırken, herhangi bir yığın hücresinin içeriğini silmeden okumak genellikle mümkündür, ᴛ.ᴇ. sadece 0 hücresinin içeriğini okumak değil.

Yığına itilen ilk kelimenin üzerinde bulunduğu söylenir. yığının alt kısmı... Yığına gönderilen son kelimenin (zamanda) içinde olduğu söylenir. yığının üstü... Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, N-1 hücresi yığının alt kısmıdır ve 0 hücresi en üsttedir.

Tipik olarak, donanım yığını, bellekte depolanan toplam sözcük sayısını gösteren bir yığın sayacı Sayısı ile sağlanır (Sayım = 0 - yığın boş). Yığın dolduğunda, daha fazla yazma işlemine izin vermez.

Bellek organizasyonunun yığınlama ilkesi, yalnızca özel olarak tasarlanmış cihazlarda uygulanamaz. Rastgele erişimli (program yığını) sıradan adres belleğinde verilerin yığın organizasyonu da mümkündür. LIFO yığınını düzenlemek için, bu durumda, yığının en üstündeki adresin her zaman saklandığı ve genellikle çağrıldığı bir bellek hücresi (kayıt) daha gereklidir. yığın işaretçisi... Genellikle, işlemcinin dahili kayıtlarından biri yığın işaretçisi olarak kullanılır. Ayrıca, uygun yazılım gereklidir. Sıradan adres belleğinde veri yığınlama ilkeleri, Şekil 2'deki şemada gösterilmektedir. 5.5.

Donanım yığınından farklı olarak, yeni bir sayı yazıldığında veya okunduğunda yazılım yığınında bulunan veriler hareket etmez. Her yeni sözcük, yığın işaretçisinde bulunanın yanındaki bir bellek konumuna yazılır. Yeni bir sözcük yazıldıktan sonra yığın işaretçisinin içeriği birer birer artırılır (bkz. Şekil 6.5). Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, program yığınında taşınan veri değil, yığının en üstündedir. Yığından bir kelime okunduğunda, ters işlem gerçekleşir. Sözcük, adresi yığın işaretçisinde olan hücreden okunur, ardından yığın işaretçisinin içeriği bir azaltılır.

Yığına yeni yüklenen kelimeler, sıralı olarak artan adreslere sahip bellek hücrelerinde bulunuyorsa, yığın denir. doğrudan. Adresler sırayla azalıyorsa, o zaman - ters.Çoğu durumda, işlemci içindeki sayaçların donanım uygulamasının özellikleriyle ilişkili olan ters çevrilmiş bir yığın kullanılır.

Bu bellek organizasyonu biçimi neden uygundur? İleriye bakıldığında, genel durumda işlemcide yürütülen herhangi bir talimatın bir işlem kodu (OPC), birinci ve ikinci işlenenlerin adresini ve sonucun adresini içermesi gerektiği not edilebilir. Bellekten tasarruf etmek ve bir makine talimatının işlemci tarafından yürütülme süresini azaltmak için, talimat uzunluğunun azaltılması arzu edilir. Bu azalmanın sınırı, adreslenmemiş komutun uzunluğudur, ᴛ.ᴇ. sadece bir COP. Belleğin yığın organizasyonu ile mümkün olan tam olarak bu tür talimatlardır, çünkü işlenenlerin yığındaki doğru düzenlenmesi ile bunları sırayla almak ve bunlara karşılık gelen işlemleri gerçekleştirmek yeterlidir.

Yukarıda tartışılan LIFO yığın belleğine ek olarak, bilgisayarlar kuralı uygulayan başka türden yığın bellekleri kullanır: ilk gelen - ilk ayrılan... Bu tür yığınlara yaygın olarak FIFO (İlk Giren - İlk Çıkar) yığınları denir. Bu tür bir yığın belleği, çeşitli türdeki kuyrukları (komutlar, veriler, istekler, vb.) düzenlemek için yaygın olarak kullanılır. Bir donanım FIFO yığınının genelleştirilmiş yapısı Şekil 2'de gösterilmektedir. 5.4, ​​b.

Önceki durumda olduğu gibi, yığın bellek hücreleri, komşu hücrelerin bit kelime iletim zincirleriyle birbirine bağlandığı tek boyutlu bir dizi oluşturur. SHI'dan gelen yeni bir kelimenin yazılması üst (sıfır) hücreye yapılır, ardından hemen aşağı iner ve son boş hücreye yazılır. Yazmadan önceki yığın boşsa, kelime hemen N-1, ᴛ.ᴇ numaralı hücreye gider. yığının dibine. Okuma sadece N-1 numaralı alt hücreden (yığının alt kısmından) mümkündür. Ana mod, ϶ᴛᴏ silme ile okumadır. Bu durumda, sonraki (yazılı) tüm kelimeler, sayıları bir tane daha olan bitişik hücrelere kaydırılır. Yığın dolduğunda, sayaç (Sayım) yığın üzerinde daha fazla yazma işlemini yasaklar.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, bir LIFO yığınından farklı olarak, bir FIFO yığınında hareket eden alt değil, üsttür. FIFO yığınına yazılan kelimeler, son derece önemli olarak okundukları yerden kademeli olarak yukarıdan aşağıya doğru hareket eder ve yazma ve okuma hızları harici kontrol sinyalleri tarafından belirlenir ve birbirleriyle ilişkili değildir.

FIFO yığınının yazılım uygulaması, pratikte nadiren kullanıldığı için bu bölümde ele alınmamıştır.

Belleği düzenleme yolları - kavram ve türleri. "Bellek düzenleme yolları" kategorisinin sınıflandırılması ve özellikleri 2017, 2018.