upgrading system designs from i960 ? kx to the i960 jx processors technical note 3 upgrading system designs from i960 ? kx to the i960 jx processors technical note october 1998 1.0 introduction intel designed the 80960jx products to be an easy upgrade choice from the existing 80960ka/kb microprocessor and paid special attention to bus and control signal compatibility during the design process. if your present system or companion chip is based on the 80960ka/kb processor and you anticipate upgrading to the 80960ja/jf/jd/js/jc/jt processors in the future, you can plan for that transition by observing suggestions in this technical note. this document describes the hardware and software differences between the two processors that must be considered when upgrading. this document does not list in detail all of the differences between the 80960jx and the 80960kx, or the added features. for more detailed information on both processors, please refer to the following documents: electrical specifications for these products are found in the following documents: ? 80960 ja/jf/jd/jt embedded 32-bit processor datasheet ? 80960 js/jc embedded 32-bit processor datasheet ? 80960ka embedded 32-bit microprocessor datasheet ? 80960KB embedded 32-bit microprocessor with integrated floating-point unit datasheet functional descriptions for these products are found in the following documents: ? i960 ? jx microprocessor users manual ? i960 ? ka/kb microprocessor programmers reference manual ? i960 ? kb hardware designers reference manual 2.0 hardware considerations 2.1 bus organization like the 80960ka/kb processor, the 80960jx devices have a 32-bit, multiplexed address/data bus capable of high bandwidth burst transfers. although the 80960jx products occupy the same 132- lead pqfp and pga packages and have similar control signals, they are not pin-compatible with the existing 80960ka/kb device.
upgrading system designs from i960 ? kx to the i960 jx processors 4 technical note enhancements to the bus include de-multiplexed, incrementing address signals a[3:2] and programmable bus width. for 16-bit buses, the 80960jx processor drives address signal a1 on the be1# pin. for 8-bit buses, the processor also drives address signal a0 on the be0# pin. this addressing convention corresponds to the 80960cx processors. 2.2 control signals the 80960jx microprocessor uses three-state output buffers instead of open-drain buffers for all control signal outputs. this change could affect a few existing 80960kx designs that have multiple processors sharing a memory subsystem. the following list identifies control signals that are directly compatible to their 80960ka/kb counterparts: ? during the address cycle, pins ad[1:0] denote size bits to indicate the length of a burst. the functionality of these pins is now extended to 8- and 16- bit bus widths, where the maximum number of transfers is also four. ? ale# works identically. for new design work, the complementary ale signal is available also. ? byte enables be[3:0]# on the 80960kx processor are valid at least one clock before the corresponding data state of a burst. byte enables may change states during a burst access to qualify unaligned data transfers. in other words, the byte enables are pipelined and toggling and external system logic must latch the signals. microcode in the 80960jx processors breaks up requests for unaligned data into smaller bus accesses that are always individually aligned. the 80960jx processors drive appropriate be[3:0]# pins active during t a and inactive during t r . the pins do not toggle within the burst, so there is no need to latch them. existing system logic designed for pipelined, toggling byte enables automatically handle the new be[3:0]# signals as a trivial case. ? the w/r#, dt/r# and den# pins function identically. the following list identifies control signals that may require minor changes to an existing design based on the 80960ka/kb processor: ? the 80960jx processor asserts ads# only once per bus access, during the address cycle. the 80960kx processor asserts this pin at other times during burst accesses, too, but most systems ignore all other assertions. ? the 80960jx device extends the use of the ready# pin to control the number of recovery (t r ) states between a current bus transaction and the next bus transaction. if system ready logic is configured as normally-not-ready, this new rdyrcv# pin automatically functions as before; i.e., there will be exactly one recovery state. the following list identifies new control signals that are provided on the 80960jx processors but are absent on the 80960kx processors: ? width[1:0] pins denote the programmed bus width corresponding to each bus access. ? d/c# indicates data and code accesses, respectively. ? the burst last (blast#) pin, an important addition, signals the end of a bus access. this pin functions like blast# on the i960 sx and i960 cx microprocessors. the following list enumerates 80960kx control signals that are not supported by the new processor:
upgrading system designs from i960 ? kx to the i960 jx processors technical note 5 ? cache ? badac# 2.3 bus arbitration the hold/holda protocol is enhanced so that the 80960jx processor cannot pass directly from a t d bus state to the t h (hold) bus state without passing through the t r state(s). this change is necessary to support the rdyrcv# pin described previously. another difference is that 80960jx processors respond to hold requests during reset (80960kx processors cannot). the timing relationship of the hold and holda pins is unchanged. the 80960kx processor has an open-drain lock#. the processor tests the state of this pin prior to asserting it. the 80960jx processors have a one-way lock# output pin, implemented in three- state logic. 2.4 interrupt control inputs the 80960jx processor's interrupt control unit is identical to that of the i960 ca/cf processors. it has eight general purpose xint# interrupt pins and one nmi# pin. note that these are active-low inputs, but, unlike the i960 ca/cf device, the pins are sampled on the rising clock edge. for future compatibility, avoid using the 80960ka/kb processor's interrupt/interrupt acknowledge protocol, as this model is not supported in the i960 jx microprocessor family. the 80960jx processors do not support inter-agent communication (iac messaging), so there is no iac# input pin. 2.5 other hardware compatibility notes the active sense of the reset signal changed on the 80960jx processors from high to low. on the 80960jx processor, the lock# pin is tested upon reset# de-assertion. if it is low, the processor enters the once three-state test mode. the 80960kx processor does not support once mode. all versions of the 80960jx processor are clocked at the bus frequency, even if the core clock is doubled or tripled (80960jd or 80960jt respectfully). the 80960kx processor is clocked at 2 x the bus frequency. 3.0 software considerations 3.1 ibr-initialization boot record the location of the initialization boot record is different on the 80960jx and the 80960kx. the ibr on the 80960kx is located at 0x00000000, whereas the ibr for the 80960jx is at 0xfeffff30. on the 80960jx, the area where the 80960kx ibr is located is in internal data ram. however on the 80960kx the area where the 80960jx boot code is located is reserved.
upgrading system designs from i960 ? kx to the i960 jx processors 6 technical note the formats of the ibrs for these processors are completely different. 80960jx initialization is much more closely related to the cx processor. 3.2 device id for the 80960jx, a number characterizing both the microprocessor type and stepping is placed in register g0 upon reset. in addition, this device id is also placed in a memory-mapped register on the 80960jx and can be accessed directly. the 80960kx does not have a device id. 3.3 initialization code the initialization code used on the 80960jx is almost completely compatible with the cx, but quite different from the 80960kx. some of the differences and similarities include the following: ? the prcb of the 80960jx does not need to be in ram as on the 80960kx; thus no moving of the prcb and re-initialization is required. the prcb is not looked at after reset on the 80960jx. (the initialization is approximately 600 cycles faster without the re-initialization.) ? if the imi is changed on the 80960kx, a re-initialization is required afterward. to change the imi on the 80960jx, simply write to the corresponding mmr (memory mapped register). ? the 80960jx must reinitialize after moving the interrupt table. ? stacks and heaps must be in ram on both the 80960kx and the 80960jx. ? the control table does not need to be in ram on the 80960jx. sample initialization code is available for both the 80960jx and the 80960kx in their respective manuals. 3.4 register values after reset/re-initialization not all registers on the 80960jx contain the same initial values as their counterparts on the 80960kx. the user should take care to initialize all registers on each part before using them. 3.5 procedure calls procedure calls and related table structures are compatible with the following stipulations: ? the fp and sp on the 80960kx are always 64-byte aligned. the fp and the sp on the 80960jx are always 16-byte aligned, eliminating unnecessary padding in the stack. thus the processor always ignores the lower 4 bits of the fp on the 80960 jx as opposed to the lower 6 bits on the 80960kx. ? the 80960jx does not allow writing to the rip. an operation.invalid_operand fault occurs if this is attempted. to update the rip, execute a flushreg instruction and change the rip out in memory. the new rip will then be read in from memory. ? reserved return status field patterns result in an operation.unimplemented fault on the 80960jx. ? the resume bit in the process controls register is not implemented on the 80960jx. this is due to the fact that the 80960jx has no instruction suspension and resumption mechanism, and
upgrading system designs from i960 ? kx to the i960 jx processors technical note 7 does not use resumption records. (resumption records are used on the 80960kx for long floating-point instructions.) ? the internal state bits in the process controls register are unimplemented on the 80960jx. the user should not write to these bits on either the 80960kx or the 80960jx. ? the 80960jx does not have a stopped state. ? register bypassing is implemented on the 80960jx, and is not on the 80960kx. the following is an example of register bypassing: mov r6, fp the fp is written out on this step. addo fp, 0, 55 this instruction does not read in the fp, but uses its value from the previous instruction. the actual fp could differ from the fp used in the addo instruction due to the fact that the processor ignores the lower 4 bits of the actual fp. 3.6 interrupts the 80960jx uses the interrupt controller from the cx, which is different from the 80960kx. for complete details of these processors interrupt controllers, refer to their respective users manuals. 3.7 memory control while the 80960kx has no built-in memory control, the 80960jx has 8 programmable memory regions. it contains 8 pmcon registers for programming bus width for the physical memory regions. it also uses 2 types of logical templates each comprised of 2 logical memory control registers (lmmrs and lmadrs) to control data cache enabling for its specific region. the 80960jx has a default logical memory configuration register (dlmcon) for accesses that do not fall inside one of the two logical memory templates. dlmcon also controls byte ordering for the entire memory map. 3.8 iacs iac (inter-agent communication) requests are not implemented on the 80960jx. the following is a list of all of the 80960kx iacs and a description of how their functions can be accomplished on the 80960jx: ? continue init iac is not needed on the 80960jx. ? the functionality of a freeze iac can be accomplished on the 80960jx by putting the processor into halt mode. ? software interrupts are initiated with sysctl instruction on the 80960jx. ? the functionality of the purge instruction cache iac is achieved on the 80960jx using a sysctl or the new icctl instruction. ? the functionality of the reinitialize processor iac is achieved on the 80960jx using a sysctl . ? the set breakpoint iac function is entirely different on the 80960jx. the same functionality is accomplished on the 80960jx by obtaining rights to the breakpoint registers using sysctl . then, the registers can be written to directly as mmrs.
upgrading system designs from i960 ? kx to the i960 jx processors 8 technical note ? the store system base iac function is not needed on the 80960jx because there is no system address table on the 80960jx and the prcb address is located in an mmr. ? the test pending interrupts iac function can be performed on the 80960jx by posting a software interrupt with an invalid vector number in the range of 0-7. this causes pending interrupts to be rescanned. 3.9 faults the software handling of faults, including related table structures and procedures, is compatible between the two processors, with the following exceptions and additions: ? there are no floating-point faults on the 80960jx. ? the 80960jx never generates constraint.privileged faults, but generates type.mismatch faults instead. ? the trace controls breakpoint/mark mode only controls the mark instruction on the 80960jx; on the 80960kx, it also controls breakpoints. the breakpoint/mark event flag signals the event of a mark, fmark, or breakpoint fault on both processors. ? the 80960jx has parallel faults, override faults, and system errors; the 80960kx does not. ? the 80960jx does not have a trace fault table. ? the system-call trace fault entries on the 80960kx require the second word of the entry to be 0x27f. this 0x27f is also specified on the 80960jx; however it is ignored. ? there is a new fault, operation.unaligned, on the 80960jx that is not on the 80960kx. ? there is a new fault resumption record added to the fault record to be used for parallel and override faults on the 80960jx. 3.10 tracing and debugging there are no major tracing and debugging differences between the 80960jx and the 80960kx. several minor difference include: ? the 80960kx and the 80960jx have two instruction address breakpoints. in addition, the 80960jx has two data address breakpoints. ? the breakpoint registers on the 80960jx are located in mmrs. application code on the 80960jx must first request and acquire modification rights to the hardware breakpoint resources (bpcons) before any attempt is made to modify them. this procedure is not required on the 80960kx. ? bits 27:24 of the trace controls describe hardware breakpoint event flags on the 80960jx. these bits are reserved on the 80960kx. ? bits 23:17 of the trace controls describe trace event occurrences on the 80960kx. these bits are reserved on the 80960jx. 3.11 instructions the 80960kx and the 80960jx contain the same basic instruction set with the following exceptions:
upgrading system designs from i960 ? kx to the i960 jx processors technical note 9 ? new instructions on the 80960jx (designated in the i960 ? jx microprocessor users manual ) are not compatible with the 80960kx. ? the 80960jx has more supervisor instructions than the 80960kx, including: dcctl , icctl , intctl , indis , halt , sysctl . the use of these instructions while not in supervisor mode results in a type.mismatch fault. ? daddc and other decimal and floating-point instructions are not supported on the 80960jx. ? synmov instructions were used for iacs and are not present on the 80960jx. 3.12 floating point the 80960KB contained a floating-point unit, whereas the 80960jx does not; therefore, there are no floating-point registers on the 80960jx. in addition, the floating-point bits in the arithmetic controls have no effect on the 80960jx processor. in other words, no other function has been assigned to them. 3.13 data ram, local registers, and mmrs the 80960jx has 1 k of on-chip data ram located at 0x00000000. the 80960kx does not contain on-chip data ram. another memory map conflict includes the reserved memory space on the 80960kx (0xff000000 - 0xffffffff), which is where the memory mapped registers on the 80960jx are located. the 80960kx has four register sets whereas the 80960jx has eight register sets. the 80960jx can also reserve between 0 and 7 sets for high priority interrupts, and uses the register cache configuration word in the prcb to program local register availability. 3.14 caches the instruction cache is 2 k on the 80960ja, 4 k on the 80960jf/jd, and 16 k on the 80960js/jc/jt. the instruction cache on the 80960kx is only 512 bytes. all 80960jx instruction caches are two-way set associative. the 80960jx also has the ability to load and lock one way of the instruction cache to minimize latency on program control transfers to key operations such as interrupt service routines. the data cache is 1 k on the 80960ja, 2 k on the 80960jf/jd, and 4 k the 80960js/jc/jt. all 80960jx data caches are direct mapped. the 80960kx does not have a data cache. 4.0 other compatibility notes the 80960jx has no multiprocessing capability as the 80960kx does.
|