Talk:MCS-51
Computing Unassessed | ||||||||||
|
64k of memory, eh?
How is it possible to adress 64k each of RAM and ROM (that would equal 128k in total) with a 16 bit adress bus? Is there a line on the control bus or something to deal with a simple bank-switch kind of thing? Wilsonsamm (talk) 20:08, 2 October 2008 (UTC)
The 8051 has a Harvard architecture. Please follow the corresponding link in the article. --89.15.178.202 (talk) 20:48, 26 November 2008 (UTC)
8051 architecture
Is 8051 a CISC or RISC machine? Is 8051 a Harvard architecture? —The preceding unsigned comment was added by 61.17.44.86 (talk) 08:05, 29 January 2007 (UTC).
The 8051 is defintiely a CISC machine. It's instruction set is wide and varied with lots of addressing modes and only a few registers. RISC machines typically have a much smaller instruction set and a bank of 16 or 32 registers. RISC machines typically only operate on data in the registers and have a "load/store" architecture. The 8051 instruction set mostly operates on the Accumulator and values in memory. Thus, the 8051 is CISC.
The 8051 is considered a Harvard Architecture machine because it has separate code and data spaces. Depending on the implementation however, it can be either Harvard or von-neumann. Older versions of the 8051 are more often van-neumann in that the CPU takes several clock cycles to fetch each operand/instruction individually. Newer single-cycle 8051s are often Harvard so they can get higher performance. The Harvard architecture allows the Instruction and the operands to be fetched in the same cycle. 68.189.241.68 (talk) 14:28, 24 February 2008 (UTC)
- At least with the ROM based variants, the original 8051 could be considered Harvard (and was described as such in the microprocessors course I took in college) in that you could not read from the program address space with normal data read instructions. It was its own address space, and one presumes there was a separate, dedicated path for program fetches. There are special "table lookup" instructions that allow you to read data from the program space, though. Also, on external fetches, the original 8051 CPU would indicate whether it was fetching program or data, so you could continue to keep those address spaces separate even for external memory. That said, once accesses go over the external bus, program and data busses are merged and so are no longer separate busses, and so it does look von Neumann-ish at that point. If a given design ignores the program/data indicator, the two address spaces merge for those external fetches, like in any other von Neumann-style architecture. Note that I limit my comments to the original 8051. I haven't used any of the modern variants so I cannot comment on them. --Mr z (talk) 07:03, 3 September 2008 (UTC)
8051 has a von Neumann architecture nad not the Harvard architecture —Preceding unsigned comment added by 123.238.27.95 (talk) 19:32, 7 December 2008 (UTC)
thank you intel —Preceding unsigned comment added by 217.219.35.2 (talk) 06:31, 13 May 2009 (UTC)
license
I heard a rumor that the 8051 has somehow fallen into the public domain. Is that true? If so, this processor should be listed at open hardware#CPU. Or is Intel still selling the 8051 design under NDA licenses, even though it no longer fabs the chip? Something like ARM Holdings sells CPU designs but does not fab any chips? --68.0.124.33 (talk) 14:13, 13 August 2009 (UTC)
Various versions
Could we start listing various versions and manufacturers here somehow? A few have wp pages and links lead here but there's no line back to specific/super/modern versions. — Preceding unsigned comment added by Blades (talk • contribs) 12:43, 22 October 2009 (UTC)
- I don't think that such details are desirable in an encyclopedia article. Lists of such details seem to me to be contrary to the general spirit of several sections of Wikipedia:What Wikipedia is not, even though, as far as I know, this particular case is not explicitly mentioned there. JamesBWatson (talk) 14:05, 24 October 2009 (UTC)
- There are more than enough vendors listed already, IMO. --69.226.238.251 (talk) 00:13, 25 November 2009 (UTC)
Memory architecture
The discussion of the memory architecture could use a little more detail. There is direct RAM, indirect RAM, SFR's, external RAM, and program memory, plus the bit-addressable feature of part of the RAM and some of the SFR's. I will add a section to the article in the near future, as it seems important to understanding the architecture. Pfagerburg (talk) 05:06, 13 November 2009 (UTC)
- Done. Community feedback will be greatly welcomed. Pfagerburg (talk) 04:03, 14 November 2009 (UTC)
Instruction set mnemonics possible copyvio?
I disagree that a processor instruction set is copyrightable.
However, Intel has claimed (still does claim?) copyright on the 8051 instruction set, and I am unsure if its inclusion in this article is allowable, even with the copyright notice included. (It certainly doesn't say "used by permission.") Template:Cv-unsure I'm also not sure that section belongs in the main article anyway, c.f. Atmel AVR and Atmel AVR instruction set. Regards, Pfagerburg (talk) 05:19, 13 November 2009 (UTC)
- I don't think we need pay too much concern to this issue. For a start it the intention behind behind claiming copyright on an instruction set is to prevent copying of the instruction set (i.e. prevent the manufacture of clone devices), not to prevent documentation of that instruction set. However, it is also now generally accepted that instruction sets are not copywritable, as evidenced by the range of x86 and indeed 8051 clones. As even Intel acknowledge at [1] (section 2.1.1):
While any imitator of the Intel Architecture can provide the CPUID instruction...
- That is a slightly different context since it does of course refer to the x86 architecture, but it is exactly the same issue. CrispMuncher (talk) 13:17, 13 November 2009 (UTC)
- Thanks for your input. Every 8051 datasheet I have seen includes Intel's copyright notice with the instruction set table. I'm not saying that the instruction set list in the article is copyright infringement; I'm simply not sure and would like to hear from others (obviously including you now). Pfagerburg (talk) 01:50, 14 November 2009 (UTC)
I think it would be more helpful to have the article discuss the types of instructions that are available, and the many and varied addressing modes, rather than just a list of the instructions. This could replace the instruction set list, which could be deleted, moved to a separate article, or even pointed off-wiki. I'm willing, but what does the community think? Would it improve the article? Pfagerburg (talk) 03:21, 14 November 2009 (UTC)
- I agree that reproducing the entire mnemonic list is unnecessary. I don't think copyright would prevent using some mnemonics as part of a discussion of the types of operations and addressing modes—the Zilog Z80 article already does something like this—and it would be more helpful for the majority of readers. Thanks for offering! - Pointillist (talk) 14:51, 14 November 2009 (UTC)
Here's a very rough start of what I'd like to put in for addressing modes:
- register - R0 - R7, ACC
- direct memory (IRAM up to 0x7F, SFR's from 0x80 to 0xFF)
- indirect memory (IRAM from 0 to 0xFF, XRAM up to 0xFF or all of XRAM, depending on the instruction)
- bitwise (IRAM from 0x20 to 0x2F, SFR's 0x80, 0x88, 0x90, 0x98, etc.)
There's a lot of special cases, particularly on indirect memory, so that list isn't in a terribly good format right now. Pfagerburg (talk) 18:05, 14 November 2009 (UTC)
For instructions, I'd like to break them down into categories.
- Arithmetic
- add with or without carry
- subtract
- increment, decrement
- 8 x 8 multiply
- 8 / 8 divide
- decimal adjust (for handling BCD values)
- Logic
- bitwise AND, OR, XOR
- add, subtract
- clear to zero
- complement (bitwise negate)
- rotate right or left, with or without carry
- nibble swap
- Boolean operations (single bit)
- AND, OR
- clear, set, complement
- Data Movement
- move (load or store, depending on the operands)
- move constant (load from program memory)
- push and pop
- exchange
- Control flow
- Jump
- Call and return
- Return from interrupt
- Conditional jumps - zero/not zero, carry set/clear, bit set/clear
- Compare and jump if not equal
- Decrement and jump if not zero
- NOP - no operation
Again, there's special cases, which one would need to know about, but presumably an implementer will have the chip datasheet available and can refer to it for the more minute details. Pfagerburg (talk) 18:18, 14 November 2009 (UTC)
- Pfagerburg, that looks very comprehensive, but please be careful not to put too much time and effort into it. After all, Wikipedia is not a manual, and the 8080, 6800, 6502, 6809 and Z80 articles don't have as much detail as perhaps you are proposing. And with that amount of material you'd need a lot of citations to avoid being accused of original research! Good luck - Pointillist (talk) 23:53, 14 November 2009 (UTC)
- Agreed that the level of detail in the cited version -- huge detailed tables, with cycle timings based on some random vendor's implementation -- does not belong in WP. And neither does the trimmed-down version proposed above. Anyone who wants such data will be looking at a processor manual ... and almost certainly NOT a manual from Intel. The main thing anyone needs to know about 8051 assembly is that it's so hugely idiosyncratic that running standard C is not practical. --69.226.238.251 (talk) 00:07, 25 November 2009 (UTC)
- I think you're correct that there is simply too much detail; there are many 8051 clones, and each one has a full description of the instruction set in the datasheet, so we don't need to reproduce that here. But I'd still like to have something that describes the addressing modes and the fact that while a mostly-complete set of arithmetic instructions are available, the conditionals are, as you say, "hugely idiosyncratic." Pfagerburg (talk) 04:55, 25 November 2009 (UTC)
This is in response to the copyright violation report filed at Wikipedia:Copyright problems/2009 November 21. The raw instruction set (as appears in this article) may fall within a gray area of copyright law. Procedures and processes, being simple lists, are generally not copyrighted. However, computer programs can be copyrighted -- and, when read in their entirety, are considered to be the same as original literary works. Given that we list Intel's copyright in this article, it is my opinion that Wikipedia should play it safe here and assume the instruction set is copyrighted and should not be reprinted. Therefore, I am deleting it from the article. Also, the consensus of the above editors suggests the entire instruction set is unnecessary anyway, and the section needs to be rewritten as a discussion. — CactusWriter | needles 16:32, 29 November 2009 (UTC)