
Turkish: 
Bu yüzden bugün buraya geldim çünkü bana "önbellek" sözü verdin, ama ben hiç para göremiyorum.
Bana bu şeyler için para ödediğini sanıyordum ama- Hayır, bu tür paralardan bahsetmiyoruz.
Aslında CPU'larımıza yerleştirilen ve bilgisayarlarda kullanılan önbellekleri arıyoruz.
denemek ve işleri daha hızlı çalıştırmak için.
Şimdi, CPU'nun hafıza ile nasıl konuştuğu hakkında konuştuk ve nasıl zamana baktık?
ayrık mantık devrelerinden bellek yongaları yapabiliriz.
Muhtemelen bilgisayar sistemindeki bütün hafızayı böyle yapmak istiyorsan,
90'ların sonlarında kullandığınız 80'lerin sonlarında kullandığınız gibi SIM'ler oluşturmak için bunları oluşturmanın başka yolları da var.
Bu da yaklaşık 256 kilobayttır, ancak bugünlerde 16 konserlik büyük DIMM'ler alabilirsiniz.
Şimdi, Steve Furber’in BBC mikro modelini oluştururken söylediklerini hatırlıyorsanız,
Nasıl kurdukları hakkında CPU'nun iki katı hızda çalışan RAM yongalarını kullandıklarından bahsediyordu.
Yani, burada 8 RAM yongaları var ve bunlar doğrudan veya daha az buradaki CPU'ya bağlandılar.

English: 
So, I've come here today because you promised me "cache", but I don't see any money.
I thought you were paying me for these things, but- No, we're not talking about that sort of cash.
We're actually looking for the cache that is built into our CPUs and they're used in computers
to try and make things run faster.
Now, we talked about how the CPU talks to memory, and we spent some time looking at how
we can build memory chips out of discrete logic circuits.
While you probably want to build all the memory in your computer system like that,
there are other ways you can build them to create SIMs as you're using in the late 80s, early 90s.
And this one is about 256 kilobytes, but you can get DIMMs that are as big as 16 gig these days.
Now, if you remember back to what Steve Furber was saying about when you build the BBC micro,
he was talking about how when they built it, they used RAM chips that ran at twice the speed of the CPU.
So, we got the 8 RAM chips here, and they're connected directly, more or less, to the CPU here.

English: 
The memory ran at 4 megahertz and the CPU ran at 2 megahertz.
And so the CPU could make its requests and the RAM  would return it very quickly.
And while the CPU was still processing that, the video circuits could grab the data from memory
to form the display. So, it was able to multiplex the two and not slow the CPU down,
unlike some of the systems.
Now, as time went on, the CPUs got much faster so by the end of 80s, you could get CPUs like this,
which ran at 8 megahertz and then 16 megahertz, 32 megahertz and so on.
And now a 3 gigahertz CPU is very easy to get a hold of.
Unfortunately, the RAM didn't increase speed at the same rate.
So these days, the RAM runs several orders of magnitude slower than what the CPU runs at.
So, this leaves us with a problem. Even if the clock speed of the CPU increased, it would still have to wait
for the memory, so it wouldn't actually appear to get any faster.
So actually, it is possible to build memory that will work at the speed that the CPU executes at.
But the problem is it takes more space on the silicon to store each bit of information,

Turkish: 
Bellek 4 megahertz'de, CPU ise 2 megahertz'de çalışıyordu.
CPU da isteklerini yerine getirebildi ve RAM bunu çok hızlı bir şekilde geri getirecekti.
CPU hala bu işlemi yaparken video devreleri verileri bellekten alabilir.
Ekranı oluşturmak için Böylece ikisini çoğaltabiliyor ve işlemciyi yavaşlatmıyordu.
bazı sistemlerin aksine.
Şimdi, zaman geçtikçe, CPU'lar çok daha hızlı büyüdü, böylece 80'lerin sonunda, böyle CPU'lar elde edebiliyordunuz.
hangi 8 megahertz ve sonra 16 megahertz, 32 megahertz ve benzeri koştu.
Ve şimdi 3 gigahertz CPU'yu ele geçirmek çok kolaydır.
Maalesef, RAM aynı hızla hızı arttırmadı.
Bu yüzden, RAM bugünlerde CPU'nun çalıştığından daha yavaş bir şekilde büyüklükte çalışıyor.
Yani bu bizi bir sorunla karşı karşıya bırakıyor. İşlemcinin saat hızı artarsa ​​bile, yine de beklemesi gerekecekti.
bellek için, bu yüzden aslında daha hızlı olsun görünmeyecek.
Bu yüzden aslında CPU'nun çalıştığı hızda çalışacak bir bellek oluşturmak mümkündür.
Ancak sorun, silikonun her bir bilgisini depolamak için daha fazla yer kaplamasıdır.

Turkish: 
ve bu nedenle, hafızayı DIMM'lere kıyasla üretmek çok daha pahalı.
Bugün kullandığımız DRAM.
Yani bunu aşmanın yolu hafızayı ikiye bölüyoruz.
Dinamik RAM'den yaptığımız ana belleğe sahibiz.
Ancak, genellikle CPU'da da sıklıkla bulunan ikinci tip bir belleğe sahibiz.
Şimdi bu çok daha küçük, ama çok daha hızlı hafızadan oluşuyor.
Ve buna önbellek denir. Şimdi, önbellek belki eski moda bir İngilizce kelimedir.
ama bu temelde sadece bir şeyleri saklayabileceğimiz küçük bir yer anlamına gelir.
Korsanysanız gizli hazinenizi depolamak için ya da yiyeceklerinizi kışın saklamak için kullanabilirsiniz.
Bir önbellekte karşılaşabileceğiniz başka bir örnek, web tarayıcınızla ilgilidir.
Dolayısıyla, web tarayıcısındaki önbellek dolaşmak için kullanılır, çünkü nispeten uzun zaman alır.
İnternet üzerinden bir şeylere erişmekle karşılaştırıldığında bir parça bilgi edinmek
yerel makinenizde.
Öyleyse olan şudur: İnternetten bir sayfa alıp getirdiğinizde
Tarayıcı gidip HTML sayfasını alacak, CSS dosyalarını, resimleri vb.
Ve yerel diskinize bir kopyasını saklar veya önbelleğe alır, daha sonra yeniden alması gerekiyorsa başvurabilir.

English: 
and so therefore, it costs a lot more to produce the memory compared to the DIMMs,
the DRAM that we use today.
So the way we get around this is we split the memory up into two types.
We have our main memory, which we build out of dynamic RAM.
But we also have a second type of memory which is actually often built into the CPU as well.
Now this is much smaller, but it's built out of much faster memory.
And this is referred to as the cache. Now, the cache is perhaps an old-fashioned English word,
but it basically just means a small place where we can store things.
So you might use it to store your hidden treasure if you're a pirate or to store your food for winter.
Another example where you might come across a cache is with your web browser.
So the cache on the web browser is used to get around because it takes a relatively long time
to fetch a piece of information over the Internet compared to accessing something
on your local machine.
So what happens is: When you go and fetch a page from the Internet
the browser will go and get the HTML page, it'll get the CSS files, the images and so on.
And it's stores or caches a copy onto your local disk that it can then refer if it needs to get it again.

Turkish: 
Ve fikir şu ki, yerel kopyadan veriyi alabileceğimizden çok daha hızlı alabiliriz.
web sunucusundan dünyanın başka bir yerine getirmesi gerekiyorsa.
İşlemciler tarafından kullanılan aynı yaklaşım. CPU aynı sorunu var.
CPU üzerindeki önbelleğiyle çok, çok hızlı bir şekilde konuşabilir, ancak ana hafıza ile konuşabilir.
önbellekle konuşmaya kıyasla nispeten uzun bir süre.
Öyleyse ne olduğu: Her ne zaman biraz veri istediğinde, yerel olarak bir kopyayı önbelleğe alır
CPU üzerine kurulu önbellekte, böylece almak gerekiyorsa yakın gelecekte tekrar
Yerel kopyasından çok daha hızlı bir şekilde erişebilir.
İşlemcinin söyleyebileceği gibi yapabileceği başka numaralar da var.
"Aslında, bu talimatı alırsam, yürütme şansım çok iyi
sonraki talimat ve aynı anda ondan sonraki talimat. "
Ve yapabileceği şey, bir seferde sadece bir tek kelime almak yerine,
"Tamam, sonraki 128 bayt hafızayı bana getir" der.
Ve bir önbellek satırı dediğimiz şeyi, bellekten CPU'ya tek seferde 128 baytlık tek bir lot okuyacaktır.

English: 
And the idea is that we can get the data from the local copy a lot quicker than it could
if it had to go fetch it from the web server somewhere else in the world.
And it's this same approach that is used by the CPUs. The CPU's got the same problem.
It can talk to its cache on the CPU very, very quickly, but talking to main memory,
compared to talking to the cache is a relatively long time.
So what happens is: Every time it requests a bit of data, it caches a copy locally
in the cache built onto the CPU, so that when it needs to fetch is again in the near future,
it can access it from its local copy a lot faster.
There's some other tricks that it can do as well, because the CPU can say,
"Well, actually, if I fetch this instruction, there's a very good chance that I'm going to execute
the next instruction, and the one after that at the same time."
And so what it can do is, rather than just getting one word of memory at a time,
it'll say, "Well okay, get me the next 128 bytes of memory."
And it'll read what we call a cache line, one single lot of 128 bytes from memory into the CPU in one go.

English: 
The idea being that it takes less time to read 128 bytes in one go, than just to read each 128 bytes individually.
But that's down to the way memory actually store things.
So, we talked about, in the previous video, how we would have an address, a binary number
that represents each different bit in the RAM chips.
But actually, rather than storing it as one big list of bits, it actually stores it as a grid.
The address that you give it from the CPU gets split up to reference a particular row,
and a column of that grid to get the particular bit it's interested in.
Now, the way the RAM chips work: One you've selected a specific row, you can then access
each of the columns in that relatively quickly, compared to changing to a different row.
So if we want to get 128 bytes, if they're all in the same row of memory,
then we can access them very quickly, and so copy them into the CPU's cache much quicker
than if we were having to select different rows at a time.
So, how big does the cache on your CPU need to be?

Turkish: 
Tek seferde 128 baytı okumak, sadece her 128 baytı tek tek okumaktan daha az zaman alacağı fikri.
Ama bu aslında hafızada bir şeyleri saklama biçimine bağlı.
Böylece, önceki videoda, nasıl bir adrese sahip olabileceğimizi, ikili bir sayıdan bahsettik.
RAM yongalarında her farklı biti temsil eder.
Ama aslında, onu büyük bir bit listesi olarak saklamak yerine, aslında bir ızgara olarak saklar.
İşlemciden verdiğiniz adres, belirli bir satıra başvurmak üzere bölünür,
ve ilgilendiği belirli parçayı elde etmek için bu kılavuzun bir sütunu.
Şimdi, RAM yongalarının çalışma şekli: Belirli bir satırı seçtiğinizde, daha sonra erişebilirsiniz
Sütunların her biri, nispeten hızlı bir şekilde, farklı bir satıra geçmekle karşılaştırıldığında.
Eğer 128 byte almak istiyorsak, hepsi aynı bellek satırındaysa,
o zaman onlara çok hızlı bir şekilde erişebiliriz ve bu yüzden onları CPU'nun önbelleğine daha hızlı kopyalayabiliriz.
Bir seferde farklı satırlar seçmek zorunda kalsak bile.
Peki, işlemcinizdeki önbellek ne kadar büyük olmalı?

Turkish: 
Aslında, ortaya çıktı, önemli bir fark yaratabilmek için sadece nispeten az miktarda önbelleğe ihtiyacınız var.
çünkü programlarımız sık sık döngüler halinde oturuyor ve aynı komut dizisini uyguluyor
tekrar tekrar tekrar tekrar.
Yani, bu döngüyü depolayacak kadar bilginiz varsa, o zaman önbelleklenebilirler ve iyi çalışırlar.
Veya program aynı veri bloğuna erişiyor ve bunu farklı şekillerde kullanıyor.
Ve bu, eğer önbelleğe sığacaksa, işler nispeten iyi çalışır.
Yani o kadar ihtiyacımız yok. Talimatlar için genellikle ayrı önbellekler kullanırsınız.
ve veriler için, ilgilendiğiniz talimatı kaldırmazsınız.
orada işleyeceğiniz verilerin bir kopyasını koymak için.
Yani, şalgam dolu bir tarlaya sahip olabileceğinizi düşünebilirsiniz.
ve böylece gidip onları kazmak zorunda kalacaksın. Ancak şalgamla birlikte bir dolabınız da olabilir.
mutfakta, böylece o gece tarlaya çıkmak zorunda kalmadan güveç yapabilirsiniz
Ve başka bir yerde çalışıyorsanız, dışarıda yemek yemek için çantanızda bir şalgam bile olabilir.
İkinci seviye şalgam önbellek?
Evet! * Kahkahalar *

English: 
Well, actually it turns out, you only need a relatively small amount of cache to make a significant difference
because our programs are often sitting in loops, executing the same set of instructions
again and again and again.
So if you've got enough to store that loop, then they can be cached and it'll work fine.
Or the program's accessing the same block of data and manipulating that in different ways.
And so if that will fit into the cache, things work relatively fine.
So we don't need that much. You often use separate caches for the instructions
and for the data so you don't remove the instruction that you're interested in
to put a copy of the data that you're going to process in there.
I mean, you could think about it, that you might have a field full of turnips
and so you'd have to go and dig them up. But you might also have a cupboard with your turnips
in the kitchen, so you can make your stew that night without having to go out into the field
And if you're out working somewhere else, you may even have a turnip in your backpack to eat on the way out.
Second level turnip cache?
Yeah! *laughter*
