Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CS 220 / ARM / ARM1176JZ-S Technical Reference Mmanual.pdf
Источник:
Скачиваний:
45
Добавлен:
16.04.2015
Размер:
4.47 Mб
Скачать

Cycle Timings and Interlock Behavior

16.11 Load and Store Double instructions

This section describes the cycle timing behavior for the LDRD and STRD instructions

The LDRD and STRD instructions:

Are two-cycle issue if either a negative register offset or a shift other than LSL #2 is used. Only the offset register is an Early Reg.

Are single-cycle issue if either a constant offset is used or if a register offset with no shift, or shift by 2 is used. Both the base and any offset register are Early Regs.

Take only one memory cycle if the address is doubleword aligned.

Take two memory cycles if the address is not doubleword aligned.

The updated base register has a result latency of one. For back-to-back load/store instructions with base write back, the updated base is available to the following load/store instruction with a result latency of 0.

To prevent instructions after a STRD from writing to a register before it has stored that register, the STRD registers have a lock latency that determines how many cycles it is before a subsequent instruction that writes to that register can start.

Table 16-16 lists the cycle timing behavior for LDRD and STRD instructions.

Table 16-16 Load and Store Double instructions cycle timing behavior

Example instruction

Cycle

Memory cycles

Result Latency

Register lock latency

s

(LDRD)

(STRD)

 

 

 

 

 

 

 

Address is double-word aligned

 

 

 

 

 

 

 

 

 

LDRD R1, <addr_md_1cycle>a

1

1

3/3

1,2

LDRD R1, <addr_md_2cycle>a

2

2

4/4

2,3

Address not double-word aligned

 

 

 

 

 

 

 

 

 

LDRD R1, <addr_md_1cycle>a

1

2

3/4

1,2

LDRD R1, <addr_md_2cycle>a

2

3

4/5

2,3

a. Table 16-17 for an explanation of <addr_md_1cycle> and <addr_md_2cycle>.

Table 16-17 lists the explanation of <addr_md_1cycle> and <addr_md_2cycle> that Table 16-16 uses.

Table 16-17 <addr_md_1cycle> and <addr_md_2cycle> LDRD example instruction explanation

Example instruction

Early Reg Comment

<addr_md_1cycle>

ARM DDI 0333H

Copyright © 2004-2009 ARM Limited. All rights reserved.

16-19

ID012410

Non-Confidential, Unrestricted Access

 

Cycle Timings and Interlock Behavior

Table 16-17 <addr_md_1cycle> and <addr_md_2cycle> LDRD example instruction explanation (continued)

Example instruction

Early Reg

Comment

 

 

 

LDRD <Rd>, [<Rn>, #cns] (!)

<Rn>

If an immediate offset, or a positive register offset with no

 

 

shift or shift LSL #2, then one-issue cycle.

LDRD <Rd>, [<Rn>, <Rm>] (!)

<Rn>, <Rm>

 

 

 

 

LDRD <Rd>, [<Rn>, <Rm>, LSL #2] (!)

<Rn>, <Rm>

 

 

 

 

LDRD <Rd>, [<Rn>], #cns

<Rn>

 

 

 

 

LDRD <Rd>, [<Rn>], <Rm>

<Rn>, <Rm>

 

 

 

 

LDRD <Rd>, [<Rn>], <Rm>, LSL #2

<Rn>, <Rm>

 

 

 

 

<addr_md_2cycle>

 

 

 

 

 

LDRD <Rd>, [<Rn>, -<Rm>] (!)

<Rm>

If negative register offset, or shift other than LSL #2 then

 

 

two-issue cycles.

LDRD Rd, [<Rm>, -<Rm> <shf> <cns>] (!)

<Rm>

 

 

 

 

LDRD <Rd>, [<Rn>], -<Rm>

<Rm>

 

 

 

 

LDRD< Rd>, [Rn], -<Rm> <shf> <cns>

<Rm>

 

 

 

 

ARM DDI 0333H

Copyright © 2004-2009 ARM Limited. All rights reserved.

16-20

ID012410

Non-Confidential, Unrestricted Access

 

Соседние файлы в папке ARM