Download File Firmware and Flashtool plus Video Tutorial compressed:
do not forget there are some additional tips from me:
How To Flashing onda v975m
translation/subtitles: anastasia gkremou for those of you that didn't take any lessons or a workshop with me, my name is nikos petrellis. i'm an assistant professor at tei of thessaly's department of computer engineering... and this semester we'll take a course in computers' architecture ii. in today's lecture, firstly we'll describe the subject matter of this class... whereby we'll work in a theoretical as well in a practical level. consequently, we'll enter the first chapter, which contains the first section... basically titled structure of computers, memory and basic peripheral circuits. this first section that will occupy us for several weeks...
approximately the 4-5 first weeks of the semester, will be based on this subject. you have learned some things in the class of computers' architecture i. here, in the largest part of the class, we won't examine so much the advanced computer architecture... but weãll concentrate on the concepts of what you learned in computers' architecture i, going to a deeper level. i have a principle in the lessons ofcomputers' architecture ii and embedded systems... … want the lesson to be in a very practical level. in addition, it fits with the technological character of the institute, in which you are studying at the moment. we can speculate on how it is theoretically possible to achieve a greater speed and throughput... let's say in a modern computer architecture, which is of course good and useful.
however, these things have to be able to translate in a design practice and practical handling. and i insist very much on this point. firstly, we'll do a review of the basic components the computers consist of... and in which case an electronic system is called a computer and isnãt called, for instance... an electric vacuum, a tv or something else. you have seen a memory and some memory architectures in other courses. after we discuss the sram, which is the fastest ram... from which is made the cache memory of a desktop computer or a laptop. except for that type of computers, we can find the sram into the microcontrollers, which use embedded systems.
this ram has advantages and disadvantages. its biggest advantage is speed. its disadvantage is that we canãt have a big memory size into an integrated circuit, for instance into a chip. which ram solves that problem?the dram. in the first section we will talk about it and weãll see typical examples... maybe of a little older memories, the ones that weãll see arenãt that modern... but nevertheless for educational reasons itãs worth to begin from something simple. so we can end up in the sdrams... which is the type of memory on which are based for instance the ddr2 and ddr3 memories that your computer uses.
later, in other sections and in another lesson following this one, the computers' architecture ii... which is the embedded systems... weãll encounter some other types of memory... like the eeprom and the flash. you have all heard it by its name, since we all use flash sticks extensively for data transfer... and we have replaced all the older methods, for instance the cds, dvds etc. later, so we can close this chapter, we will talk about some basic peripheral circuits. weãll only examine their operating principle in this course. i indicatively mention the parallel and the serial ports...
the timers, the interrupt management... as well an operating principle of the direct memory access... that is used by all modern computers. in later chapters, that weãll examine the principles in detail and in a more theoretical level... but practically weãll do some exercises, so that you can understand the subject matters that are referred to. these are: the cache memories, the managing of paging and segmentation in the main memories.... and the concept of pipelining. you can find in detail these three principles in one of the two university books that are recommended. about the university books: two basic university books are recommended for this course.
the first is a book i wrote, titled microprocessors and design of microcomputer systems. there youãll find the first section. the second university book is written by prof. nikolos, titled architecture of computers, which i recommend you... and you can find in it information about the cache memory, for which i told you earlier... about the segmentation and the paging of the main memory, and the concept of the pipelining as well. these are about this university book. letãs return to my university book... if i remember correctly to the fifth section... for which weãll take a regular 32-bit intelãs processor, itãs a little old from the family of intel pentium pro.
however, the basic principles that weãll see and are adopted, are used also in the modern multicore processors. weãll see some details in that level, too. and finally, maybe weãll return to examine some things about parallel processing, multicore processors etc. that was the structure of the course, i gave you a picture of what it contains. the practical exercises, as i told you before... are about the learning of the hardware description language, vhdl... so itãs different from our theoretical lessons... and weãll see that from the first practical exercises lesson, which will take place this week. so now we can continue with the next slides and do a general review of some concepts...
beginning with what a computer is. if i asked you "when you think an electronic circuit is a computer?", the answer should be... if it consists of a part that can think and make decisions... called the cpu... and a part that can remember... main or secondary memory, a memory in any case. so a computer must consist of these two parts. as you can see of course, apart from those, the cpu and the memory, there are two more blocks... the input and output units.
as you all know, in a desktop computer input units are the keyboard, the mouse, the scanner etc. but what are the output units? the computer monitor... which in the case of a touchscreen isnãt only an output, but also input... the printer, the speaker from which we can listen to music while weãre working etc. i want you to keep in mind that not all computers are desktop computers. those of you who will choose to attend the embedded systems, will understand better that not all computers have the same i/o units... for example those which are in your mobile phones, your house alarms... your desktop computers, your cars, your tv sets, or even in your washing machine and fridge.
your mobile phone has an antenna, whereby it receives and sends data. it has many more types of buses that it uses to communicate with the external world. so, we have to keep an open mind, when we think about which are the i/o of a computer. letãs go to the next slide, which will show us what is happening in the inside of a cpu. at this point, iãll show you some examples about how we execute an instruction in symbol language... and which computer parts are involved. so, first let me draw the memory, which iãd like you to imagine as a series of locations. they could be drawers or mailboxes on the street where you live... at which the postman delivers your letters, packages etc.
in the main memory of the computer, iãll use as a symbol two numbers, which refer to each one of the boxes. in order to understand each other in this course... letãs say that i adopt a convention and you will see an identification number. that identification number gives an identity to each memory location. in other words, the address of that memory location is the number under the little box. whenever i write something in that box, it means that the content of that memory... what is being stored in a given time, in that memory location. the content, as well as the addresses, are numbers... because as you know every piece of information in a computer...
whether we are talking about actual numerical data, about images, videos, the music you listen to... the work that you do, the games that you play, anything in a circuit level... all that information has been translated into 0 and 1. so, the only thing that the circuits can store in their most elementary level is a binary number, 0 or 1. normally, here we would have numbers. when we take many binary digits... we can turn them into one binary number of 8, 16 or 32 binary digits and have one decimal number, its decimal equivalent. or itãs hexadecimal equivalent. so let me expand on this concept...
in that in here there is a number stored and nothing else can be stored, interpreting the number by what it represents. for instance, if i write here add 5 3... maybe i mean that in the location 0 an assembly instruction is stored... that adds two numbers and the operands... the numbers that the add command will use and we will find them in the very next address and the next after that. therefore, an instruction of the assembly language, as i wrote it here, can be stored in three consecutive memory locations. weãll see that it isnãt always necessary. there are computers, for instance the risc computers...processors more accurately... which try to fit each command exactly in a memory location, for uniformity reasons.
to be able to achieve that, they have to make some changes in the architecture. for example, they say that i wonãt use 8 bits in every location as is the usual dimension... but that the memory stores code, each location will have for example 20 bits, which is a strange number. number 20 it is not even power of the number 2. yet, it is used in a practical level in a way that the operation and its operands can fit into one address and donãt break it. someone could ask me is it a big deal if itãs broken?is there a problem? what is the benefit of that? as we shall see in this course, a very basic criterion so we can judge if a certain architecture of a processor is fast or slow... is relevant with how fast it can execute the operations. that is obvious.
what is the factor that determines of how quickly the instructions can be executed? you have to know that the greater length of time during an execution of an instruction... is the give-and-takes between the processor and the memory. itãs not such a slow process, a processor having the operands stored in its own registers and execute a process. that can be done really fast. however, what is slow is that the processor needs to go to the main memory and get the operands from there. that is slow. thatãs why we will dedicate, maybe from the next lesson... a great deal of time counting the so called cycle times that an operation needs in order to be executed.
if you have an instruction that needs five cycle times and another one that needs one cycle times... you know that the first instruction is slower. it needs nearly five times more time from the second to be executed. it doesnãt matter if it may seem to you that the second, which has fewer cycle times... is more complicated as to what will happen. still, the complexity isnãt directly relevant to the cycle times... what is relevant with the cycle times is how many give-and-takes are taking place between the processor and the memory... so it can complete the instruction that has to be executed. first of all, if i draw the memory in a consecutive location manner, which starts from 0 until a maximum value...
then we can say that we refer to a linear memory. if we want to be more accurate, itãs called linear memory addressing. could someone tell me... why?is there another way? instead of putting an identification number in each location and begin from 0,1,2,3 and reach the maximum... no matter how many locations my memory has. is there another way to describe a memory?yes, there is. as we shall see in this section, when weãll talk about sdrams... like the ddr2 and ddr3 memories that your computer uses... the physical address of each memory is not defined by one number, but itãs defined by three numbers...
one for the bank, one for the row and one for the column. in which bank of addresses or group of addresses, if you want to express it in a more abstract manner... is what iãm looking for? in that bank of addresses, in which row and column is what iãm looking for? to sum up, itãs three things. for these memories too, itãs convenient for us to convert the three numbers into one... then take the three addresses, convert them into binary numbers and put them next to each other... so a united continuous number can be formed. that way we can have a linear addressing again.
weãll see this thing later. here is the part of the computer that remembers. the part of the computer that thinks, the cpu, i draw it exactly at the top. a basic component of the cpu is the instruction fetch unit. itãs a good thing to write the initials in english terminology... so that itãs more relevant to how you will actually come across these descriptions in the practical level. so iãll simply say fetch unit without an abbreviation, because itãs still early for you to remember what each initial stands for. what the fetch unit does? its job is to use a counter, which i draw next...
called program counter... and it stores the address of the instruction that is next in line for execution. that is the value, which is saved by the program counter. firstly, the value will be 0, because the add command wonãt run yet. i told you before that everything that exists in here is numbers. here thereãs a number, which is the opcode of the add command. but i wrote it as a word, so that you can understand that itãs a command that adds. in no case do i come in contrast with what i said in the beginning of the lesson... that everything that is stored in the memory locations is numbers.
the add is actually a code, also. a code that has been given for that command. so first of all, the program counter can include the value 0 in the beginning of the execution of the program. this value is taken by the instruction fetch unit and it carries it to one of the two buses... which are used by the system so it can access the memory. maybe you have heard two concepts, which iãll describe for you in a very general way... the data bus... and the address bus. through the example iãll show to you, youãll realise their usefulness and how they carry the data or the addresses.
so, what the instruction fetch unit does? it takes the value of the program counter and it promotes it to the address bus. letãs say that the first value of the address bus is 0, which is the address that is stored in the program counter. based on this value, the memory visits the location 0, which we determined from the address bus... and it says what do i have saved inside? the opcode of the add command. obviously, the purpose of this procedure is to show that we want to read what is saved inside, from the location 0. consequently, the opcode of the add command has to reach the cpu. it has to be read by the cpu. where does the memory place it, so it can be read by the cpu?
on top of the data bus. consequently, the data bus will be loaded with the opcode of the add command. actually... although i placed the buses that way... we should keep in mind that the add command is being stored inside the cpu... in a part that is called instruction register. ir in abbreviation. instruction register. good!itãs been stored.
what happened?has the operation been executed or not?no. in order to execute the command, the code of the command should be received by a part... which is placed directly on top, called instruction decoder. instruction decoder. the instruction decoder is one of the most basic components... which weãll describe in vhdl in the practical part of the course. iãm sure you remember those concepts from other courses... such as the computers' architecture i and the digital systems. the concept of the decoder...
like you have heard about the concepts of the multiplexer, demultiplexer... the concept of the adder, half-adder... the concept of flip-flops and other structural components, which weãll examine in a practical level during this course. not only to learn how these components are being made. after youãve learned about the making process you might wonder... when did we learn what half-adder means, that it is made out of a gate xor and an and gate and what happens... when we havenãt practically understood who uses that half-adder? iãm sure that you doubt whether this thing will be useful to you... when you donãt fully understand where this would be used eventually.
i hope this course will connect those concepts... in order for you to combine them, concepts like those i mentioned before... adders, half-adders, multiplexers, demultiplexers, coders, decoders, comparators, flip-flops etc in more complex parts. and finally, even more, how we can design computing systems, using those complex parts. i will remind you what is a decoder. i will make a pause here and show that a decoder usually is designed as a trapezoid. it has n inputs... and 2^n outputs. its operation principle is that...
the binary number of n digits that i use in the input... is used in the power of 2 to select the one of the 2^n exits that will be activated. what does activate mean?maybe with a logical 1, in high mode, it means activation. when all the rest of the outputs will be 0, it will be inactive. for example... see the following. letãs say that i put in the location of the n lines in the input, for instance n=4. so what does it mean if i have 4 lines in the input? i will have 2^4, which means 16 lines in the output.
letãs say that i put 0 in the input. a binary number with 4 binary digits 0000 is equivalent with the decimal 0, because everything is 0. i turn the 0 i found here in the power of 2, and i find that 2^0 is 1. which exit has been selected in this case? sorry! the mistake is that i shouldn't have turned that number in the power of 2. erase what i said before. i just take the serial number to select which exit will activate from what iãve done. consequently, i donãt say that 2^0 has a result 1.
i just say that 0000 means 0 in decimal.so, i will activate the output number 0. the outputs are numbered from left to right.now i take a convention. here is 0, here should be 2 and here should be 15,so the number of the outputs could be 16. so this one would be named 4x16. you can understand where the symbolism comes from. the name dec from the word decoder, number 4 from how many inputs i have and number 16 from how many outputs i have. so with 0.this output could have been in high mode. i donãt say 0 or 1.i say it with a general symbolism. high voltage, for instance 5v, while the rest stay in a low voltage with 0v.
after that, i change the inputs, for instance i put 1 here and 1 there. the binary number 0101, which has formed, in the decimal form is the number 5. so, 0,1,2,3,4.letãs say that the number 5 is somewhere here. all of the outputs would be in a low mode except from the output number 5, which would be high. good...please keep your questions for the last 5 minutes before the break. anyway, what is your question? is there a chance that we can find two of them high? no, no. it isnãt allowed to be two.only one from the 16 outputs will be high and the rest of them will be inactive. well...
where is the usefulness of this thing in the description of the cpu, which i describe next to this. look, why do i need a decoder like this. here, we said that there is a code.the opcode of the add command. that code, depending on the amount of the instructions that the system wants to support... could be 3,4,5 bits if i have a few instructions or 8 bits for more. with 8 bits i could have 256 instructions. with 3 bits i could have only 2^3...8 instructions. with so few instructions itãs impossible to find a processor. however, you can find microcontrollers, such as the pic or the avr, which have for instance 37-38 instructions.
to be able to describe 37-38 different operations 6 bits are enough. i donãt need more. so here, i take the 5-6-8 bits at the input, as many bits as are needed to describe a command... and at the output of the many the decoder has, only one output is activated. so i want only one output activated and the rest deactivated. here iãll draw a cloud, which i will call alu. this part of the processor contains the circuits, execute the numerical and logical processes. in reality they execute almost any operations i want, like branches. somewhere here in the cloud is the circuit that adds... around here is a circuit that subtracts...
closer or further, wherever you like, a circuit that multiplies. sliding so i can put a logical process as well. logic shift left, arithmetic shift right... division etc. you can imagine each one of the outputs of the decoder as a switch... which activates the circuit that will make possible the process i want to be executed. in other words, it has the ability to see which instruction will be executed. it activates the circuit that can run that instruction. here, we have an add command...
you understand that the only output that will be activated is the one that activates the adder, the circuit of add. the rest of the circuits in the alu have turned off their switch... they donãt work and they donãt respond. apart from this simplified description... we must also bear in mind that we have to create some suitable signal timings so that the procedures... which are necessary to execute this command, will be done in the right order. for example, the add command has to bring the operands from the memory. it isnãt necessary that the operands will be already in the processor. also, the operands as we shall see canãt come at the the same time. they have to come in order.
will the process be done?the result could stay in the processor, but maybe it will be necessary to go back to the main memory. so, it isnãt just that we give the ok to the circuit to execute the add command and we are done. some more tasks have to be done. in that point, i think that we could take a ten minutes break and continue with the rest later.
0 comments:
Post a Comment