    # -------------------------------------------------------------------
    # JAGUAR                                (c) Copyright 1996 Nat! & KKP
    # -------------------------------------------------------------------
    # These are some of the results/guesses that Klaus and Nat! found
    # out about the Jaguar. Since we are not under NDA or anything from
    # Atari we feel free to give this to you for educational purposes
    # only.
    # Thanks to Bastian Schick for the information about the 16-bit
    # DSP interfacing and the ADCs.
    # Thanks go to marz@haari.mayn.de for the priority info.
    #
    # Please note, that this is not official documentation from Atari
    # or derived work thereof (both of us have never seen the Atari docs)
    # and Atari isn't connected with this in any way.
    #
    # Please use this informationphile as a starting point for your own
    # exploration and not as a reference. If you find anything inaccurate,
    # missing, needing more explanation etc. by all means please write
    # to us:
    #    nat@zumdick.ruhr.de
    # or
    #    kp@eegholm.dk
    #
    # If you could do us a small favor, don't use this information for
    # those lame flamewars on r.g.v.a or the mailing list.
    #
    # HTML soon ?
    # -------------------------------------------------------------------
    # $Id: general.html,v 1.24 1997/11/16 18:14:40 nat Exp $
    # -------------------------------------------------------------------

No gospel contained here !!

    A couple of general notes on the Jaguar. Please note about the bitness
    issue, that this is just our general take of the scene. The bitness
    is the way the chip 'feels' like (to us).

- The sum of the whole

  - Processors
  - Devices
  - Input/Output stuff

- Systemstructure

  - RAM
  - Gateways
  - Interrupts

- Endianness

- Technical Data

    The Jaguar consists of these major parts:
    =========================================

    Processors:
    =-=-=-=-=-=

    a)    32/16 bit 68000 processor that is used to bootstrap the system.
          Feels like a 32bit chip (in many respects) with a 16 bit
          memory interface

    b)    32/64 bit GPU risclike processor that is the 'heart' of the
          system. The chip feels like a 32 bit chip with an 64 bit
          memory interface. This one has 4Kbytes of local memory for
          instruction and data.

    c)    32/16 bit DSP chip, also risclike. The RISC itself is straight
          32 bit. The DSP has a 16 bit ! memory interface and 8KB of
          local memory for instruction and data.

    d)    a 64 bit objectprocessor (OP) that feeds the video chip

    Devices:
    =-=-=-=

    a)    a 64 bit Blitter

    Input/output stuff:
    =-=-=-=-=-=-=-=-=-=

    a)    A videochip capable of displaying 16bit Cry/RGB or 24bit RGB
          pixels. Tightly coupled to the OP.

    b)    Digital joystickinterface + 2 ADCs on the joystick ports
          for analog input. (The ADCs do not exist in later models
          apparently as a costcutting measures)

    c)    2 16-bit DACs for sound production

    d)    a fast synchronous serial communications channel

    e)    a slower asynchronous serial communications channel

    Systemstructure:
    ================

    Consider the Jaguar to be the GPU, the OP, the Blitter, the memory
    and the videochip.
    You got here a 64 bit system communication thing happening. All
    data is passed along the bus in 64 bit quantities (also known as
    a phrase). Since you can pass data around the bus at a speed of
    ca. 13.3Mhz (?) you get a thruput of a little more than 100MB/s.

    RAM:
    =-=

    The RAM is monolithic, in that there's no division between VideoRAM
    and normal RAM. Usually the OP fetches the data from memory scanline by
    scanline and stuffs it into two small videochip linebuffers. The
    videochip only fetches data from there. It does not have access to
    the main memory.

    RAM is accessed by the memory manager in a pagewise (2K) fashion.
    Consecutive memory addresses that reside in the same RAM page, can
    be accessed faster using column addressing only.

    RAM chips are conventionally addressed two dimensionally by selecting
    "row addressing" and addessing the row you want (one cycle) then selecting
    "column addressing" and addressing the column you want (another cycle).
    Now you have addressed the memory cell and can read or write the data
    (yet another cycle).
    I.e. you need at least three cycles to handle memory. (Or rather the MMU,
    which does all this for you :))

    Now if the next address you want to access (read or write) happens to
    be in the same row as the previous one selected you can shorten the
    sequence by just selecting a new column and the reading / writing data,
    thereby saving a cycle.

    The RAMs in the jaguar are organized in 1024 rows of 2K per column
    (in the 2MB model).

    In simple terms, memory access will be much faster if you access memory
    sequentially. Blitting across pages is therefore MUCH slower since every
    read and write will not benefit from the page access.

    Any access to memory that needs RAS and CAS addressing is considered to
    be a page miss.

    Gateways:
    =-=-=-=-=
    Gateway is most certainly a misnomer, the devices are placed on the
    system bus, but only access a fraction of the bus full width.

    There are "gateways" out of the main system to connect peripheral
    chips to it. There is one 32 bit "gateway" to the ROMs and two
    16 bit gateways to the 68000 and the DSP (yikes!). Since the 68000
    doesn't have a cache, just keeping it running in an idle loop
    will probably impede maximum performance of the system.
    The gateways are most probably unbuffered, which would mean that
    a 16 bit access by the 68000 is just as costly as a 64 bit access
    by the GPU.

    The DSP is connected/integrated with some peripheral devices,
    that provides serial communications capability, joystick interfacing
    and hardware timers.

    When the DSP reads from JERRY registers it doesn't access them over
    the system bus, it reads them directly.

    Priorities:
    =-=-=-=-=-=

    These are the bus priorities of the various entities on the system
    bus. Priority means, that as soon as the current bus action is over,
    and several devices want to access the bus, the one with the highest
    priority is being served!

    Priority      Device       Activity         Note
    ----------+-------------+-------------+-------------------
       10        external       unknown    daisychained busmaster
        9           MMU        refresh
        8           DSP         DMA           dangerous
        7           GPU         DMA              "
        6         Blitter      BUSHI             "
        5            OP        normal
        4           DSP        normal
        3           68K         IRQ
        2           GPU        normal
        1         Blitter      normal
        0           68K        normal

    The 68k is responsible for a lot of bus traffic, because it is
    executing from memory, reading data from memory and read writing into
    memory. If the 68K was "top dog" in this scheme, the rest of the
    system would be crawling along. Therefore the 68000 is the least
    priorised entity on the bus, and only gets those bus cycles,
    that are left over from others. BUT, when the 68000 is using cycles
    heavily f.e. for a RMW operation, or a 32 bit move, then the 68000
    is likely to steal a few cycles from the other chips, by virtue of
    just taking too long.

    The priorities 6-8 are considered "dangerous". When a dangerous operation
    takes place and the OP wants to fetch data, the bus is said to hang.
    (I don't know whether this can be reproduced reliably). Also even if that
    was not the case, It'd be dangerous because the OP might not have enough
    time left in the scanline to do its processing.
    The "dangerous modes" are also not really necessary (IMO), since when
    the OP is not active, you most probably already have the bandwidth you
    are trying to get.

    Priority 10 is for an extension card. So not of interest here.

    Interrupts:
    =-=-=-=-=-=

    Most interrupts are tied to one of the three processors only, but
    a few interrupts can be handled by two or all three processors. Then
    two interrupt routines can run at the same time, processing the same
    interrupt, if one wishes this to be the case.
    The 68000 is raised to a higher priority during IRQ processing, which
    it should set back to normal ASAP, so as not to hinder the Blitter
    or the GPU.

    The DSP/Jerry interrupts are routed thru Jerrys interrupt control scheme
    to the 68K.

    Endianness:   **** WARNING: High Bullshit content ****
    =-=-=-=-=-=
    [ The endianess shit is my fault. Klaus surely doesn't want to be
      associated with this (nat/1996) ]

    Bytes are just bytes

    Word are two bytes, one being the MSB and the other being the LSB
    (most significant byte, least significant byte)

    Long words consist of four bytes, being MSB NSB ISB and LSB.
    (Most, not so, insignificant, least)

    Phrases consist of eight bytes
      MSB    HSB    VSB    RSB    QSB    NSB       ISB          LSB
    (Most, highly, very, really, quite, not so, insignificant, least)

    The Jaguar is a bit strange mixture of endianness schemes.
    The 68K thinks in Motorola terms MSB NSB ISB LSB  (most significant byte,
    not so significant byte, insignificant byte and least significant byte)

    The OP thinks in terms of ISB LSB MSB LSB occasionally, for example
    when using addresses, but also the right -  Motorola >grin< - way
    when examining phrases: MSB HSB VSB RSB QSB NSB ISB LSB.

    The GPU, the DSP and the memory controller seem to be configurable in
    their endianness.

    Technical Data
    ==============

    Jerry/TOM   26.591 MHz
    68K         13.296 MHz

    RAM         2MB      (as in 1024*1024 bytes)

    Bandwidth:
                106.4 Mio bytes/s    or 101.5  MB/s  MB as in 1024*1024 bytes/s
                13.3  Mio phrases/s

$Id: general.html,v 1.24 1997/11/16 18:14:40 nat Exp $