• 沒有找到結果。

4. UNIFIED CODES MANAGEMENT SCHEMES

4.2 Code Reassignment Scheme

The steps in the execution of our code reassignment scheme describes first. The attribution of our scheme will be discussed in detail later. At last, an example of unified code management schemes is shown in Fig.13.

(1) Once the assigned code is released, marks it as reserving code and go to Step 2.

(2) Check if two reserving code exist at the layer, they will be merged into one code with higher rate and continue recursively at upper layer. The process of checking will be stopped until it just has one (or no) reserving code at each layer.

(3) If the code reassignment is triggered, we will select the reserving code with lower cost to reassign. Comparing their ancestors with sibling relative, and then select the one which has less assigned codes (descendants). If there are ties, it can relocate one of them arbitrarily. But, we trend to relocate the code with higher rate.

In order to maintaining operation of unified code management schemes, the releasing code is marked as reserving code directly. Next step we must check whether two reserving codes exist at the layer. Because two reserving codes exist at the same layer, it means the code tree becoming fragmented. Hence, we start the merge mechanism to merge two reserving codes into one code with higher data rate. The merge mechanism implies key point of code reassignment. Two cases will occur when the same layer has two reserving codes. One has the same parent, and the other doesn’t. The former can merge into one (parent) code directly, and the later must relocate some assigned codes first. To our mind, we adjust the topology of code tree to avoid becoming too fragmented in advance. If it does not adopt the code reassignment scheme in advance, it is inevitable that the code tree may become too fragmented to

C1,1

C2,1 C2,2

C4,1 C4,2 C4,3 C4,4

C8,1 C8,2 C8,3 C8,4 C8,5 C8,6 C8,7 C8,8 Data Rate

8R

4R

2R

R Data Rate

8R

4R

2R

R 8R

4R

2R

R

Figure 13. Unified Code Management Schemes example1.

support new call for long time. Besides, the more fragmentation, the more cost. We not only eliminate the code blocking completely but also reduce the cost of reassignment as far as possible.

Because of code reassignment will bring additional cost for system. In [15] had defined the cost of reassigning an occupied code and the cost of a branch. Hence, we propose the idea of cost mechanism in our schemes for reducing additional cost.

When code reassignment is incurred, we just need consider two branches of reserving code and relocate one of branches. The cost mechanism is that only compares their (two reserving codes) ancestors with sibling relative and selects the one which has less descendants to relocate. The less codes relocate, the less cost. Additionally, we needn’t establish any extra table to support us and the computational time is very fast.

In Fig. 13, assuming a new call arriving requesting a rate R, the OVSF code tree is empty and condition vector is R= (0, 0, 0, 1). First, root code C1, 1 is the starting point to begin, checking the condition vector is not satisfied, keeps on going one layer lower. C2, 1 and C2, 2 separate from C1, 1, checking the condition vector is not satisfied, and C2, 1 is set as starting point, another C2, 2 is set as reserving code. Finally, C8, 1 will

C1,1

C2,1 C2,2

C4,1 C4,2 C4,3 C4,4

C8,1 C8,2 C8,3 C8,4 C8,5 C8,6 C8,7 C8,8 Data Rate

8R

4R

2R

R Data Rate

8R

4R

2R

R 8R

4R

2R

R

Figure 14. Unified Code Management Schemes example2.

be assigned to new call, C2, 2, C4, 2, and C8, 2 will be marked as reserving code. Hence, C8, 1, C2, 2, C4, 2, and C8, 2 are the minimum independent dominating set W which satisfy the present condition vector. Still assuming a new call of rate R arriving, the condition vector becomes R= (0, 0, 0, 2). According to our schemes, the C8, 2 will be selected for the new call. Then assuming a new call of rate R arriving, the condition vector becomes R= (0, 0, 0, 3). Because there is no reserving code with rate R now, we go one layer upper to find the reserving code C4, 2 and look on as starting point.

Therefore, C8, 3 will be assigned for it and C8, 4 is also marked as reserving code. At presently, the minimum independent dominating set W includes C8, 1, C8, 2, C8, 3, C8, 4, and C2, 2 that satisfies the present condition vector R= (0, 0, 0, 3). If the C8, 3 is released, condition vector becomes R= (0, 0, 0, 2), it will be marked as reserving code and check whether two reserving code exist at the layer of rate R. This example, C8, 3

and C8, 4 are reserving code and then they will be merged into C4, 2.

For another example in Fig. 14, the white code is available, the assigned code is black and the reserving code is gray. Now the C4, 2 is releasing and marks as reserving code. We detect the C4, 2 and C4, 4 do not have the same parent code. Therefore, the

code reassignment is incurred. We define the weight of a code, as the number of its descendant codes that are assigned. We compare the weight of their (C4, 2 and C4, 4) ancestors with sibling relative and select one with small weight of them. The weight of C2, 1 and C2, 2 is 1 and 2 respectively. That is to say, if we want to vacate the branch (root code is C2, 2), we must transform two codes C8, 5 and C8, 6 into C8, 3 and C8, 4

(Cost is 2). If we vacate the branch (root code is C2, 1), we just relocate the C4, 1 to C4, 4

(Cost is 1). Consequently, consider reducing the cost of code reassignment, we will decide to transform the C4, 1 into C4, 4. Finally, the C4, 1 and C4, 2 are vacant and merge into C2, 1. By our unified code management schemes, the code blocking problem is eliminated completely and the cost of code reassignment is also decreased.

Although the merge mechanism is good, it may occur unnecessary reassignment in some cases. Note that the example is above in Fig. 14. In order to avoid the code blocking, so we relocate a busy code C4,1 to achieve. However, if the new call arriving requesting a rate 2R, the previous reassignment is in vain. For this reason, we modify our schemes to resolve this problem. That is to say that we just modify the part of merge mechanism. When the two reserving codes don’t have same parent, we don’t merge them provisionally. Next if the code blocking is incurred, the code reassignment is also started up. In this way, our systems can provide more flexibility to users. If users focus key point on the code blocking, the original schemes must be used. Otherwise, they can select the modified version to reduce more cost (number of reassigned codes). At later we also make a simulation to identify our modified version.

相關文件