68000 micro-instructions documents?
68000 micro-instructions documents?
Is there a way to know what 68000 does exactly in every cycle?
I mean, there are some things (PC++, decode instruction) that can be done not only in specific cycle but in 1 or 2 more.
Take, for example the nop instruction, 4 cyles. Yon can do the PC:=PC+1 in the 3rd o 4th cycle. Same goes for the decode operation.
So, are there 68000 micro-instructions documents? thanks!
I mean, there are some things (PC++, decode instruction) that can be done not only in specific cycle but in 1 or 2 more.
Take, for example the nop instruction, 4 cyles. Yon can do the PC:=PC+1 in the 3rd o 4th cycle. Same goes for the decode operation.
So, are there 68000 micro-instructions documents? thanks!
-
- Very interested
- Posts: 745
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
-
- Very interested
- Posts: 745
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
Look at this.
If you're serious about it:
US Patent 4,307,445 - Microprogrammed control apparatus having a two-level control store for data processor
US Patent 4,325,121 - Two-level control store for microprogrammed data processor
I doubt you'll find anything more specific.
US Patent 4,307,445 - Microprogrammed control apparatus having a two-level control store for data processor
US Patent 4,325,121 - Two-level control store for microprogrammed data processor
I doubt you'll find anything more specific.
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Are these HLD dessigned CPUs? There is nothing about these words searching in Internet.HardWareMan wrote:You do not have enough M68KPM and M68KUM?
Chilly Willy wrote:I'm not aware of any documentation of what the 68000 does in each state. The closest I've seen is docs on how certain instructions "prefetch" the next instruction and how that affects the operation of the current instruction and the next instruction. Said info can be found via google.
Here explains while cpu is executing an instruction also is decoding next instruction and fetching next next opcode. Not enough, but thanks!HardWareMan wrote:Look at this.
I'm absolute serious with my will to learn about it. Do you find some joke here?TascoDLX wrote:If you're serious about it:
US Patent 4,307,445 - Microprogrammed control apparatus having a two-level control store for data processor
US Patent 4,325,121 - Two-level control store for microprogrammed data processor
I doubt you'll find anything more specific
The 2nd one is really, really interesting... lots of info waiting to be decrypted. THANKS!
But that is a little hilarious, the idea is to prevent copying.Chilly Willy wrote:That second patent really covers the internals. Of course, it comes from a time when patents were still valid inventions. You won't find anything close in a modern patent - the lawyers wouldn't stand for it.
Anyway, that's what I get from official document, the last patent and my own guesses:
There are some things uncovered in the 4,325,121 for example the damn PC:=PC+1, I really don't know how to fit it in this design without adding and extra adder.
And how the RESET and HALT perform. For instance, if a read is performing and you stop immediately the CPU the external buses will be busy while halt is active. I think that this is not desirable.
Then, reset and halt allow the completion of the current operation or micro-instruction?
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
Which defeats the whole purpose of a patent. A patent is an agreement with the government where you agree to teach the average practitioner of your field of endeavor how to make something in exchange for an exclusive right over said thing for a set period. To write a patent in such a way as to prevent copying is not holding up your end of the deal, and the patent SHOULD be invalidated. That's my biggest complaint about modern patents - lawyers make them nearly impossible to understand, and once you do, there's nothing in the patent but some vague hand-waving. 99% of all patents issued in the last decade should be invalid for that reason alone.eteream wrote:But that is a little hilarious, the idea is to prevent copying.Chilly Willy wrote:That second patent really covers the internals. Of course, it comes from a time when patents were still valid inventions. You won't find anything close in a modern patent - the lawyers wouldn't stand for it.
-
- Very interested
- Posts: 2440
- Joined: Tue Dec 05, 2006 1:37 pm
- Location: Estonia, Rapla City
- Contact:
68K User Manual and 68K Programmers Manualeteream wrote:Are these HLD dessigned CPUs? There is nothing about these words searching in InternetHardWareMan wrote:You do not have enough M68KPM and M68KUM?
Mida sa loed ? Nagunii aru ei saa
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
That's exactly what you should be doing. Are you generalizing the execution unit into a single ALU?eteream wrote:There are some things uncovered in the 4,325,121 for example the damn PC:=PC+1, I really don't know how to fit it in this design without adding and extra adder.
In general, the PC increment is handled by the 16-bit arithmetic units w/ carry, leaving the ALU free for other stuff.In FIG. 3, a simplified block diagram of execution unit 22 (in FIG. 2) is shown. The execution unit is a segmented two-bus structure divided into three sections by bidirectional bus couplers. The left-most segment contains the high order word for the address and data registers and a simple 16-bit arithmetic unit. The middle segment contains the low order word for the address registers and a simple 16-bit arithmetic unit. The right-most segment contains the low order word for the data registers and an arithmetic and logic unit.
For a more detailed look at the execution unit:
US Patent 4,296,469 - Execution unit for data processor using segmented bus structure
-
- Very interested
- Posts: 745
- Joined: Sat Dec 15, 2007 7:49 am
- Location: Kazakhstan, Pavlodar
I don't get it: what a problem with PC incrementation? If you decided to do hardware design, you have to forget almost all the things you learned in programming. Seriously. Tell me, why do you PC a separate register with adder when it can be designed as a counter with loading? And EA you will still be calculate in main ALU during the execution of opcode. Generation "next" detected. :3
You are absolutely right in an ideal world. But in this one, every country has his own laws about intellectual rights, even may be there are some without. For example typical communism has no enterprises so there is no need for them. May be i'm wrong, if so let me know.Chilly Willy wrote:Which defeats the whole purpose of a patent. A patent is an agreement with the government where you agree to teach the average practitioner of your field of endeavor how to make something in exchange for an exclusive right over said thing for a set period. To write a patent in such a way as to prevent copying is not holding up your end of the deal, and the patent SHOULD be invalidated. That's my biggest complaint about modern patents - lawyers make them nearly impossible to understand, and once you do, there's nothing in the patent but some vague hand-waving. 99% of all patents issued in the last decade should be invalid for that reason alone.eteream wrote:But that is a little hilarious, the idea is to prevent copying.Chilly Willy wrote:That second patent really covers the internals. Of course, it comes from a time when patents were still valid inventions. You won't find anything close in a modern patent - the lawyers wouldn't stand for it.
I'm really glad to listen that sort of things, but there is no need to go to personal matters (may be i'm a lot more old than you ). You are right about PC inc. BUT your forget one thing, when you are calculating the EA you are not executing anything!HardWareMan wrote:I don't get it: what a problem with PC incrementation? If you decided to do hardware design, you have to forget almost all the things you learned in programming. Seriously. Tell me, why do you PC a separate register with adder when it can be designed as a counter with loading? And EA you will still be calculate in main ALU during the execution of opcode. Generation "next" detected. :3
Every 68K instruction works in this way LOAD_MEM+EXEC(ALU+FETCH)+STORE_MEM.
For example: MOV (A0), (A1) takes 4+4(2+4)+4 cycles. So there is no overlap between LOAD_MEM, EXEC or STORE_MEM.
Notice that EA is needed on the falling edge of the first cycle of LOAD_MEM or STORE_MEM, 3 cycles away of EXEC phase.
If you have to say something about "next generation", I'm here to listen.
HardWareMan, if you give me some days I can make diagrams to illustrate it.
You get it. I'm simply romantic about the simplicity of the 68K.TascoDLX wrote:That's exactly what you should be doing. Are you generalizing the execution unit into a single ALU?eteream wrote:There are some things uncovered in the 4,325,121 for example the damn PC:=PC+1, I really don't know how to fit it in this design without adding and extra adder.
In general, the PC increment is handled by the 16-bit arithmetic units w/ carry, leaving the ALU free for other stuff.In FIG. 3, a simplified block diagram of execution unit 22 (in FIG. 2) is shown. The execution unit is a segmented two-bus structure divided into three sections by bidirectional bus couplers. The left-most segment contains the high order word for the address and data registers and a simple 16-bit arithmetic unit. The middle segment contains the low order word for the address registers and a simple 16-bit arithmetic unit. The right-most segment contains the low order word for the data registers and an arithmetic and logic unit.
For a more detailed look at the execution unit:
US Patent 4,296,469 - Execution unit for data processor using segmented bus structure
I'm not sure you're referring to. I know that 68K uses two 16bit ALUs instead of 1 of 32bits. If you don't agree with sharing ALU with data and addresses: as I said earlier they don't overlap. To fetch only PC register is needed, no ALU operation occurs.TascoDLX wrote:Are you generalizing the execution unit into a single ALU?
If you want to say is that ALU and shift operations are separated, well, I merged them.
I was referring to the fact that the 68K uses one 16-bit Arithmetic Logic Unit, plus two additional (but limited) 16-bit Arithmetic Units -- one operates on the registers' low 16 bits and the other on the registers' high 16 bits. The two limited arithmetic units are not much more than adders, but they are widely used for EA calculation and PC & SP manipulation.eteream wrote:I'm not sure you're referring to. I know that 68K uses two 16bit ALUs instead of 1 of 32bits. If you don't agree with sharing ALU with data and addresses: as I said earlier they don't overlap. To fetch only PC register is needed, no ALU operation occurs.
If you want to say is that ALU and shift operations are separated, well, I merged them.
The overall design allows for all three units to operate for the same nanoinstuction, though not very often of course. The only reason I mention it is because it is quite important if you want to understand the microcode/nanocode. But, you can draw the diagram any way you want.
Well, there are definitely more than one. In many cases, the ALU executes some value AND -1 in order latch the value while the AU does something like PC+2. It's all a matter of reusable micro/nanocode. If you want to understand the nanocode, you really should read the patent. It explains the nanocode diagrams quite nicely, despite a few typos.eteream wrote:If you help me find which one micro/nano-instruction you need all the 3 units working altogether it will be very helpful.
I get the impression that you're redesigning the CPU. Awesome. I'd love to hear all about it.eteream wrote:May be you like this ones a little bit more: